# Copyright (C) 2016 Kristoffer Gronlund # # License: GNU General Public License (GPL) version: 2.2 category: NFS shortdesc: NFS Server on LVM and DRBD longdesc: | Configure a highly available two-node NFS server on top of LVM and DRBD. A DRBD primitive and Multi-state resource is used to replicate data between the nodes. A NFS Kernel service resource ensures that the NFS server daemons are always available. LVM and file system resources are used to make the file systems available on the Primary node. A virtual NFS root export is needed for NFSv4 clients. An example NFS export is configured, corresponding to a file system mounted from the LVM logical volume. Finally, a floating IP address resource allows clients to connect to the service regardless of which physical node is primary. For more details on what needs to be prepared to use this wizard, see the Highly Available NFS Storage with DRBD and Pacemaker section of the SUSE Linux Enterprise High Availability Extension documentation. parameters: - name: nfsserver_id type: resource value: nfsserver shortdesc: ID for the NFS Server cluster resource required: true include: - name: drbd script: drbd required: true parameters: - name: drbd_resource value: nfs - name: lvm script: lvm required: true parameters: - name: volgrpname value: nfs - name: example_fs shortdesc: Example File System Resource script: filesystem required: false parameters: - name: device value: /dev/nfs/example - name: directory value: /srv/nfs/example - name: fstype value: xfs - name: rootfs script: exportfs required: false shortdesc: NFSv4 Virtual File System root. parameters: - name: id value: exportfs-root - name: fsid value: 0 - name: directory value: /srv/nfs - name: options value: "rw,crossmnt" - script: exportfs required: false shortdesc: Exported NFS mount point. parameters: - name: id value: exportfs - name: directory value: /srv/nfs/example - name: options value: "rw,mountpoint" - name: wait_for_leasetime_on_stop value: true - script: virtual-ip required: false shortdesc: Configure a Virtual IP address used to access the NFS mounts. actions: - shortdesc: Ensure NFS packages are installed install: nfs-client nfs-kernel-server nfs-utils - shortdesc: Configure cluster resource for the NFS server cib: | primitive {{nfsserver_id}} \ systemd:nfs-server \ op monitor interval=30s \ clone cl-{{nfsserver_id}} {{nfsserver_id}} - include: drbd - include: lvm - shortdesc: Configure LVM and File System Group and Constraints cib: | group g-nfs {{lvm:id}} {{#example_fs:id}}{{example_fs:id}}{{/example_fs:id}} order o-drbd_before_nfs Mandatory: ms-{{drbd:id}}:promote g-nfs:start colocation c-nfs_on_drbd inf: g-nfs ms-{{drbd:id}}:Master - include: rootfs - shortdesc: Clone Root FS Resource and Configure Constraints cib: | clone cl-{{rootfs:id}} {{rootfs:id}} order o-root_before_nfs Mandatory: cl-{{rootfs:id}} g-nfs:start colocation c-nfs_on_root inf: g-nfs cl-{{rootfs:id}} when: rootfs - include: exportfs - shortdesc: Add ExportFS Resource to Group crm: "configure modgroup g-nfs add {{exportfs:id}}" when: exportfs - include: virtual-ip - shortdesc: Add Floating IP Address to Group crm: "configure modgroup g-nfs add {{virtual-ip:id}}" when: virtual-ip - call: /usr/sbin/exportfs -v error: Failed to configure NFS exportfs shortdesc: Check Result of exportfs -v sudo: true