diff --git a/roles/nfs_client/README.md b/roles/nfs_client/README.md new file mode 100644 index 0000000000000000000000000000000000000000..60ea47b669512ea484aa41453d7b4a1fc5623c19 --- /dev/null +++ b/roles/nfs_client/README.md @@ -0,0 +1,22 @@ +# Ansible Role - `epcc.nfs_client` + +Install and configure an NFS client. + +## Role Variables + +| Variable | Description | Type | Default | +| ----------------- | -------------------------------- | ---- | ----------------------- | +| nfs_client_mounts | A list of mount points to enable | list | `[]` (empty, no mounts) | + +Example configuration: + +```yaml +nfs_client_mounts: + - src: "127.0.0.1:/var/nfs/safe_data" + path: "/safe_data" + opts: "defaults,timeo=900,retrans=5,_netdev" +``` + +## Supported Platforms + +This role has been tested with Ubuntu 22.04 only. diff --git a/roles/nfs_client/defaults/main.yaml b/roles/nfs_client/defaults/main.yaml new file mode 100644 index 0000000000000000000000000000000000000000..edcf5bb4d69dc561c82a3f81b043313a2b8c35bc --- /dev/null +++ b/roles/nfs_client/defaults/main.yaml @@ -0,0 +1,2 @@ +--- +nfs_client_mounts: [] diff --git a/roles/nfs_client/handlers/main.yaml b/roles/nfs_client/handlers/main.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd --- /dev/null +++ b/roles/nfs_client/handlers/main.yaml @@ -0,0 +1 @@ +--- diff --git a/roles/nfs_client/tasks/configure.yaml b/roles/nfs_client/tasks/configure.yaml new file mode 100644 index 0000000000000000000000000000000000000000..24cadc34062d8e51f950f871904533f3333b8051 --- /dev/null +++ b/roles/nfs_client/tasks/configure.yaml @@ -0,0 +1,20 @@ +--- +- name: Ensure mountpoint exists + become: true + loop: "{{ nfs_client_mounts }}" + ansible.builtin.file: + path: "{{ item.path }}" + state: directory + owner: root + group: root + mode: u=rwx,g=rx,o=rx + +- name: Ensure exports are mounted + become: true + loop: "{{ nfs_client_mounts }}" + ansible.posix.mount: + src: "{{ item.src }}" + path: "{{ item.path }}" + opts: "{{ item.opts }}" + state: mounted + type: nfs diff --git a/roles/nfs_client/tasks/install.yaml b/roles/nfs_client/tasks/install.yaml new file mode 100644 index 0000000000000000000000000000000000000000..514968049e84b867aee63410d78ad4667f36148f --- /dev/null +++ b/roles/nfs_client/tasks/install.yaml @@ -0,0 +1,7 @@ +--- +- name: Ensure NFS client package is present + become: true + ansible.builtin.package: + name: "{{ __nfs_client_package }}" + state: present + update_cache: true diff --git a/roles/nfs_client/tasks/main.yaml b/roles/nfs_client/tasks/main.yaml new file mode 100644 index 0000000000000000000000000000000000000000..140d83416658993e384f1c580fc4e75416925d60 --- /dev/null +++ b/roles/nfs_client/tasks/main.yaml @@ -0,0 +1,9 @@ +--- +- name: Import preflight tasks + ansible.builtin.import_tasks: preflight.yaml + +- name: Import install tasks + ansible.builtin.import_tasks: install.yaml + +- name: Import configure tasks + ansible.builtin.import_tasks: configure.yaml diff --git a/roles/nfs_client/tasks/preflight.yaml b/roles/nfs_client/tasks/preflight.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a229e1c3d952cf117d84157abb9049142276f9af --- /dev/null +++ b/roles/nfs_client/tasks/preflight.yaml @@ -0,0 +1,3 @@ +--- +- name: Include OS-specific variables + ansible.builtin.include_vars: "{{ ansible_os_family }}.yaml" diff --git a/roles/nfs_client/vars/Debian.yaml b/roles/nfs_client/vars/Debian.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6a64637f146578f94add288bd578db5cd8f15722 --- /dev/null +++ b/roles/nfs_client/vars/Debian.yaml @@ -0,0 +1,2 @@ +--- +__nfs_client_package: nfs-common