NAME

nfs: NCM component for /etc/exports and /etc/fstab

DESCRIPTION

The nfs component manages entries for NFS in the /etc/exports and/or NFS/NFSv4/CephFS/PanFS/bind mount in the /etc/fstab files.

Example

prefix "/software/components/nfs";
"exports" = append(dict(
    "path", "/shared/path/",
    "hosts", dict(
        "server*.example.org", "no_root_squash",
    ),
));

"mounts" = append(dict(
    "device", "foreign.example.org:/shared/path/",
    "mountpoint", "/mnt/foreign",
    "fstype", "nfs",
    "options", "rw",
));

Functions

  • mount_action_new_old

    Compares two fstab hashref new and old for equality, and returns mount action to be taken.

    • If old does not exist, mount.
    • If equal, do nothing.
    • If the entries differ in the devices or mountpoint, do unmount/mount.
    • Otherwise, remount.
  • fstab_add_defaults

    Given fstab hashref, add defaults for the undefined values Returns a copy of the original hashref

  • parse_fstab_line

    Parses a line of /etc/fstab and converts it in a hashref.

    Returns undef when the line is comment/empty.

    Defaults are added using fstab_add_defaults function.

Methods

  • exports

    Given the component configuration hashref tree, create the exports configuration file /etc/exports. A backup of the old file is created.

    The method also sets the sync option if nethier sync or async is specified.

    Returns if the configuration file changed (or not).

  • fstab

    Given the component configuration hashref tree, create the fstab configuration file /etc/fstab. A backup of the old file is created.

    The fstab configuration file is read and processed. Any non-managed entries (and comments not related to the component) are left alone.

    Only managed entries are considered for removal or modifications; new ones are added from the configuration.

    The current managed entries are

    • devices with filesystems nfs, nfs4, panfs or cephfs.
    • bind mounts (filesystem none and mount option bind)

    Method returns

    • if the configuration file changed (or not)
    • hashref with the old managed entries (key the device and value the fstab hashref from parse_fstab_line function)
    • arrayref with the order of the old managed devices \%new, \@new_order;
    • hashref with the configured managed entries (with defaults and action to take added)
    • arrayref with the order of the configured devices
  • do_mount

    Do something mount(point) related (umount, mount, remount, ...) cmd is the arrayref, the mountpoint is appended from the fstab hashref.

    Returns SUCCESS on success, undef on failure.

  • process_mounts

    Given the component configuration hashref tree, determine the new and old ncm-nfs managed entries via the fstab method and do the appropriate unmounting/mounting.

    Returns

    • if the fstab configuration file changed (or not) (value from fstab method)
    • if any mount action was taken