diff --git a/installNFS.yml b/installNFS.yml index 0c6b1c24dfc5e9ffe8a63ccc234fd2bc475e33d0..33ab1e51b91ca39be42d4b87ffe5d2e1e96279ea 100644 --- a/installNFS.yml +++ b/installNFS.yml @@ -20,7 +20,7 @@ - easy-rsa-certificate - OpenVPN-Client - nfs-common - - syncExports + - { role: syncExports, group_list:['openvpn-clients'], interface_list: ['eth0','tun0'] } - nfs-client sudo: true vars: diff --git a/roles/easy-rsa-certificate/tasks/buildCert.yml b/roles/easy-rsa-certificate/tasks/buildCert.yml index ee22f077b354dbfd53a82106e1babdeb32e852e8..1e587882433e739fd9e18d35c6579bfcf4a790af 100644 --- a/roles/easy-rsa-certificate/tasks/buildCert.yml +++ b/roles/easy-rsa-certificate/tasks/buildCert.yml @@ -27,7 +27,13 @@ - name: "set needcert if cert is missing" set_fact: needcert=True - when: cert.stat.exists == false + when: cert.stat.exists == false and cert.stat.size == 0 + +- name: "Delete Zero Sized Ceritificates" + remote_user: "{{ hostvars[x509_ca_server]['ansible_ssh_user'] }}" + delegate_to: "{{ x509_ca_server }}" + shell: rm -rf /etc/easy-rsa/2.0/keys/{{ x509_common_name }}.* + when: cert.stat.size == 0 - name: "set needcert if cert doesn't match key" set_fact: needcert=True diff --git a/roles/nfs-client/defaults/main.yml b/roles/nfs-client/defaults/main.yml index 60ca9c1121024edab84bedf7029f8a54423cb685..2c6b83527ec4617bfb43c276595554e67b761703 100644 --- a/roles/nfs-client/defaults/main.yml +++ b/roles/nfs-client/defaults/main.yml @@ -1,4 +1,3 @@ --- -nfs_server: "nfsserver.edu" nfs_type: "nfs" nfs_options: "vers=3,noatime,rsize=16384,wsize=16384,hard,intr,tcp,nolock" diff --git a/roles/nfs-client/tasks/mountFileSystem.yml b/roles/nfs-client/tasks/mountFileSystem.yml index 66da94c12ec13c774fb31784f62165ac457ec744..27b2328ca2ef3f12e8d49452d99b976dc9d3d57a 100644 --- a/roles/nfs-client/tasks/mountFileSystem.yml +++ b/roles/nfs-client/tasks/mountFileSystem.yml @@ -6,13 +6,9 @@ run_once: true delegate_to: "{{ nfs_server }}" - - mount: "name={{ item.0 }} src={{ nfsServer['ansible_facts']['ansible_tun0']['ipv4']['address'] }}:{{ item.1 }} fstype={{ nfs_type }} opts={{ nfs_options }} state=mounted" + mount: "name={{ item.name }} src={{ nfsServer['ansible_facts']['ansible_tun0']['ipv4']['address'] }}:{{ item.src }} fstype={{ item.fstype }} opts={{ item.opts }} state=mounted" name: "Mounting NFS mounts" - with_together: - - destDir - - srcDir + with_items: exportList notify: "restart authentication" notify: "restart idmap" sudo: true - - diff --git a/roles/nfs-client/vars/main.yml b/roles/nfs-client/vars/main.yml index 2a7137f29478b7cdbedecceda8e1ccfaa2e57565..6d9a86f91a6b348ba960d11a2ccce99d29c219df 100644 --- a/roles/nfs-client/vars/main.yml +++ b/roles/nfs-client/vars/main.yml @@ -1,3 +1,4 @@ --- -srcDir: ['/mnt'] -destDir: ['/mnt/test-nfs'] +# This is a list of exports, individual entry for each mount. +exportList: + - { name : '/mnt/test-nfs', src : '/mnt',fstype : 'nfs', opts : 'vers=3,noatime,rsize=16384,wsize=16384,hard,intr,tcp,nolock' } diff --git a/roles/syncExports/tasks/addExports.yml b/roles/syncExports/tasks/addExports.yml index fb08d1acbd9ca8c66ee1dea5522ea1cc1839e82c..d5bb11156e61d4b921a8420abc2f746f4d6338a7 100644 --- a/roles/syncExports/tasks/addExports.yml +++ b/roles/syncExports/tasks/addExports.yml @@ -4,3 +4,8 @@ template: src=exports.j2 dest=/etc/exports owner=root group=root mode=644 delegate_to: "{{ nfs_server }}" run_once: true +- + name : Restart the NFS Server + service: name=nfs state=restarted + delegate_to: "{{ nfs_server }}" + run_once: true diff --git a/roles/syncExports/templates/exports.j2 b/roles/syncExports/templates/exports.j2 index 2949f722693811f3a3253953917e92269f809fbb..ab59cf68ff309ec2044754ea43b19cf87cabef7d 100644 --- a/roles/syncExports/templates/exports.j2 +++ b/roles/syncExports/templates/exports.j2 @@ -1,4 +1,4 @@ -{% for src in srcDir %} -{{ src }} {% for node in groups['openvpn-clients'] %}{% for ip in hostvars[node]['ansible_all_ipv4_addresses'] %}{{ ip }}(rw,sync,root_squash) {% endfor %}{% endfor %} +{% for export in exportList %} +{{ export.src }} {% for group_name in group_list %}{% for node in groups[group_name] %}{% for interface_name in interface_list %}{{ hostvars[node]['ansible_'+interface_name]['ipv4']['address'] }}(rw,sync,root_squash) {% endfor %}{% endfor %}{% endfor %} {% endfor %}