# 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 directory exists on remote server file: path: "{{ nfsclient_server_dir }}" owner: "0" group: "0" mode: "755" state: directory delegate_to: "{{ nfsclient_server.ansible_host }}" - name: ensure directory exists on local machine file: path: "{{ nfsclient_dir }}" owner: "0" group: "0" mode: "755" state: directory - 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 }}