42 lines
1.3 KiB
YAML
42 lines
1.3 KiB
YAML
---
|
|
# NFS Client Role - Main Tasks
|
|
|
|
- name: Ensure required variables are present
|
|
assert:
|
|
that:
|
|
- nfs_mounts is defined or (nfs_server is defined and nfs_share is defined and nfs_mount_point is defined)
|
|
fail_msg: "You must define either 'nfs_mounts' (a list of mounts) or the trio 'nfs_server', 'nfs_share' and 'nfs_mount_point'."
|
|
|
|
- name: Install nfs-common package (Debian/Ubuntu)
|
|
apt:
|
|
name: nfs-common
|
|
state: present
|
|
become: true
|
|
|
|
- name: Build `nfs_mounts` list from single-vars if needed
|
|
set_fact:
|
|
nfs_mounts: "{{ [ {'server': nfs_server, 'share': nfs_share, 'path': nfs_mount_point, 'options': (nfs_options | default(omit)) } ] }}"
|
|
when: nfs_mounts is not defined
|
|
|
|
- name: Validate each NFS server is reachable (port 2049)
|
|
wait_for:
|
|
host: "{{ item.server }}"
|
|
port: 2049
|
|
timeout: 5
|
|
state: started
|
|
loop: "{{ nfs_mounts }}"
|
|
loop_control:
|
|
label: "{{ item.server }}:{{ item.share }}"
|
|
|
|
- name: Ensure the NFS share is exported by the server
|
|
shell: |
|
|
showmount -e {{ item.server }} | awk 'NR>1 {print $1}' | grep -x -- "{{ item.share }}"
|
|
register: showmount_check
|
|
failed_when: showmount_check.rc != 0
|
|
changed_when: false
|
|
loop: "{{ nfs_mounts }}"
|
|
loop_control:
|
|
label: "{{ item.server }}:{{ item.share }}"
|
|
|
|
|