From dde73d89a725ad764509aa623c945cfa789ae2e4 Mon Sep 17 00:00:00 2001 From: binary Date: Wed, 3 Mar 2021 14:57:10 +0100 Subject: Add nfsclient role for mounting data in VM from hypervisor --- roles/nfsclient/defaults/main.yml | 7 ++++ roles/nfsclient/tasks/_alpine.yml | 16 +++++++++ roles/nfsclient/tasks/_openbsd.yml | 0 roles/nfsclient/tasks/main.yml | 66 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 roles/nfsclient/defaults/main.yml create mode 100644 roles/nfsclient/tasks/_alpine.yml create mode 100644 roles/nfsclient/tasks/_openbsd.yml create mode 100644 roles/nfsclient/tasks/main.yml (limited to 'roles/nfsclient') diff --git a/roles/nfsclient/defaults/main.yml b/roles/nfsclient/defaults/main.yml new file mode 100644 index 0000000..c1a8e13 --- /dev/null +++ b/roles/nfsclient/defaults/main.yml @@ -0,0 +1,7 @@ + +# nfsclient ~~ roles/nfsclient/vars/main.yml + +--- + +nfsclient_dir: "/data" +nfsclient_test_dir: "/tmp/nfsd-test" diff --git a/roles/nfsclient/tasks/_alpine.yml b/roles/nfsclient/tasks/_alpine.yml new file mode 100644 index 0000000..86e21d9 --- /dev/null +++ b/roles/nfsclient/tasks/_alpine.yml @@ -0,0 +1,16 @@ + +# nfsclient ~~ roles/nfsclient/tasks/_alpine.yml +# alpine prerequisites + +--- + +- name: install nfs-utils + package: + name: nfs-utils + state: present + +- name: ensure that nfsmount is restarted and enabled + service: + name: nfsmount + state: restarted + enabled: true diff --git a/roles/nfsclient/tasks/_openbsd.yml b/roles/nfsclient/tasks/_openbsd.yml new file mode 100644 index 0000000..e69de29 diff --git a/roles/nfsclient/tasks/main.yml b/roles/nfsclient/tasks/main.yml new file mode 100644 index 0000000..f84c926 --- /dev/null +++ b/roles/nfsclient/tasks/main.yml @@ -0,0 +1,66 @@ + +# nfsclient ~~ roles/nfsclient/tasks/main.yml +# setup nfs client for a given server + +--- + +- name: fallback to default nfs server + set_fact: + nfsclient_server: "{{ global.nfs_server }}" + when: nfsclient_server is not defined + +- name: fallback default nfs server directory + set_fact: + nfsclient_server_dir: "{{ global.nfs_server_dir }}" + when: nfsclient_server_dir is not defined + +- name: translate server string to server dict if not + set_fact: + nfsclient_server: "{{ hostvars[nfsclient_server] }}" + +- name: include distribution specific prerequisites + include_tasks: "_{{ ansible_distribution | lower }}.yml" + ignore_errors: true + +- name: ensure tmp directory exists for testing nfsd + file: + path: "{{ nfsclient_test_dir }}" + owner: 0 + group: 0 + mode: 0700 + state: directory + +- name: test nfs setup + shell: mount -t nfs "{{ nfsclient_server.ip.out }}:{{ nfsclient_server_dir }}" /tmp/nfsd-test + +- name: cleanup fstab with previous nfs setup + lineinfile: + path: /etc/fstab + regexp: ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:/.* {{ nfsclient_dir }} nfs + state: absent + +- name: complete fstab with nfs + lineinfile: + path: /etc/fstab + line: "{{ nfsclient_server.ip.out }}:{{ nfsclient_server_dir }} {{ nfsclient_dir }} nfs rw,nodev,nosuid 0 0" + +- name: reload fstab + shell: | + umount -af -t nfs + mount -a + ignore_errors: true + +- name: remove nfs test directory + file: + path: "{{ nfsclient_test_dir }}" + state: absent + +- name: register mounted volumes + shell: df -P | grep nfs + register: out + +- name: display mounted volumes + debug: + msg: | + {{ out.stdout_lines }} + {{ out.stderr_lines }} -- cgit v1.2.3