NFS servers
NFS is the standard way to use network file systems in a Unix environment. As such, UGCS employs several. We recently gained the ability to quickly configure and deploy NFS servers using cfengine. Furthermore, we also use cfengine to mount NFS (except for mounts essential in the boot process). Future improvements involve using Kerberos to authenticate and secure via NFS4.
Contents |
Cfengine
All of the NFS servers will be put into a cfengine class that overwrites the /etc/exports file when cfrun is activated. This class will also restart nfs-kernel-server to take the new settings into effect. Then, each group of servers will have an separate class that concatenates the appropriate exports files to this blank file.
Servers mounting various NFS shares will be grouped into classes (depending on the share). Then, cfengine will locally edit /etc/fstab to update the mount points and remount.
Exports
Each individual set of exports is self-contained, and ideally configured for an individual purpose. If a server pulls double duty, it should be entered into multiple classes and thus have multiple concatenated exports files.
Keytab exports
At the moment, the keytabs are generated separately (via configurator). This will need to be automatically generated eventually.
Other details
Currently, the individual settings on each server are not set via cfengine. Things such as local permissions, sticky bits, quotas, will be defined locally.
Relevant files
- /afs/.../cfengine/global/inputs/cfagent.conf - contains class definitions
- /afs/.../cfengine/global/inputs/nfs.conf - NFS server and mount commands
- /afs/.../cfengine/hosts/nfs/<exports> - export definitions imported by cfengine
- /afs/.../configurator/generate_nfs_exports.py - creates the keytab export from the UGCSComputer pickle
Current NFS settings
NFS servers
- Apollo - common keys for shellservers (/ug/nfs/keys)
- Apollo - common opt for shellservers (/opt)
- Apollo - large shared filespace for groups (/mnt/shared)
- Demeter - cfengine root (not configured by cfengine) (/ug/nfs/cfengine)
NFS mount groups (in cfengine)
- nfs_shared - Poseidon and Shellservers (/mnt/shared)