diff --git a/installNFS.yml b/installNFS.yml index 8752a25e72d51d928f79ff71e6616dcd08cc61f2..33ab1e51b91ca39be42d4b87ffe5d2e1e96279ea 100644 --- a/installNFS.yml +++ b/installNFS.yml @@ -11,9 +11,6 @@ - nfs-server sudo: true vars: - ansible_ssh_private_key_file: "/home/sgeadmin/.ssh/shahaan.pem" - ansible_ssh_user: "ec2-user" - nfs_network: "10.8.0.0/16" x509_ca_server: vm-118-138-240-224.erc.monash.edu.au - hosts: openvpn-clients @@ -23,12 +20,10 @@ - easy-rsa-certificate - OpenVPN-Client - nfs-common + - { role: syncExports, group_list:['openvpn-clients'], interface_list: ['eth0','tun0'] } - nfs-client sudo: true vars: - ansible_ssh_private_key_file: "/home/sgeadmin/.ssh/shahaan.pem" - ansible_ssh_user: "ec2-user" x509_ca_server: vm-118-138-240-224.erc.monash.edu.au openvpn_servers: ['vm-118-138-240-224.erc.monash.edu.au'] - server: vm-118-138-240-224.erc.monash.edu.au - nfs_server: "10.8.0.1" + nfs_server: "vm-118-138-240-224.erc.monash.edu.au" diff --git a/roles/OpenVPN-Server/templates/server.conf.j2 b/roles/OpenVPN-Server/templates/server.conf.j2 index 9d9d5fef88145687378d9e307d5adad91166b364..5ba9060993fcf9f26c181c458071dcfcc9fdc6b2 100644 --- a/roles/OpenVPN-Server/templates/server.conf.j2 +++ b/roles/OpenVPN-Server/templates/server.conf.j2 @@ -93,7 +93,7 @@ dh {{ dhparms_file }} # Each client will be able to reach the server # on 10.8.0.1. Comment this line out if you are # ethernet bridging. See the man page for more info. -server 10.8.0.0 255.255.255.0 +server {{ server_network }} {{ server_netmask }} # Maintain a record of client <-> virtual IP address # associations in this file. If OpenVPN goes down or diff --git a/roles/OpenVPN-Server/vars/main.yml b/roles/OpenVPN-Server/vars/main.yml index 0118883ff89c549e9482c6c75e34aa36ade35715..ae69f9692b264b7b03980e14253c31ea3298b723 100644 --- a/roles/OpenVPN-Server/vars/main.yml +++ b/roles/OpenVPN-Server/vars/main.yml @@ -5,3 +5,5 @@ x509_key_file: "/etc/openvpn/private/server.key" x509_cert_file: "/etc/openvpn/certs/server.crt" x509_common_name: "{{ ansible_fqdn }}_OpenVPN_Server" dhparms_file: "/etc/openvpn/private/dh.pem" +server_network: "10.8.0.0" +server_netmask: "255.255.255.0" 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 7944c079ce1786a48ca21514985f77e1043e8ed7..27b2328ca2ef3f12e8d49452d99b976dc9d3d57a 100644 --- a/roles/nfs-client/tasks/mountFileSystem.yml +++ b/roles/nfs-client/tasks/mountFileSystem.yml @@ -1,12 +1,14 @@ --- +- + name: "Get the NFS Network" + setup: filter="ansible_tun0" + register: nfsServer + run_once: true + delegate_to: "{{ nfs_server }}" - - mount: "name={{ item.0 }} src={{ nfs_server }}:{{ 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/nfs-server/tasks/startServer.yml b/roles/nfs-server/tasks/startServer.yml index 4821a0a95f38173d08926bd230a7cb27bc7087ae..17211aff0bab88c5d6d1ff05f2ed9046aea03f19 100644 --- a/roles/nfs-server/tasks/startServer.yml +++ b/roles/nfs-server/tasks/startServer.yml @@ -2,9 +2,6 @@ - name: "Starting rpcbind" service: "name=rpcbind state=started" -- - name: "Copying /etc/exports template" - template: "src=exports.j2 dest=/etc/exports mode=0644 owner=root" - name: "Start the Server" service: "name=nfs state=started" diff --git a/roles/nfs-server/templates/exports.j2 b/roles/nfs-server/templates/exports.j2 deleted file mode 100644 index bada393e107f6e35645d8d9ca5bcfde2af8bcab8..0000000000000000000000000000000000000000 --- a/roles/nfs-server/templates/exports.j2 +++ /dev/null @@ -1 +0,0 @@ -{{ srcDir }} {{ nfs_network }}(rw,sync,root_squash) diff --git a/roles/nfs-server/vars/main.yml b/roles/nfs-server/vars/main.yml deleted file mode 100644 index 1091b61454355f091358785c0275b100f518c9a6..0000000000000000000000000000000000000000 --- a/roles/nfs-server/vars/main.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -srcDir: '/mnt' diff --git a/roles/syncExports/tasks/addExports.yml b/roles/syncExports/tasks/addExports.yml new file mode 100644 index 0000000000000000000000000000000000000000..d5bb11156e61d4b921a8420abc2f746f4d6338a7 --- /dev/null +++ b/roles/syncExports/tasks/addExports.yml @@ -0,0 +1,11 @@ +--- +- + name: "Templating /etc/exports" + 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/tasks/main.yml b/roles/syncExports/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..087f43771a0a0b53c17afdae456a2dea4dd21958 --- /dev/null +++ b/roles/syncExports/tasks/main.yml @@ -0,0 +1,2 @@ +--- +- include : addExports.yml diff --git a/roles/syncExports/templates/exports.j2 b/roles/syncExports/templates/exports.j2 new file mode 100644 index 0000000000000000000000000000000000000000..ab59cf68ff309ec2044754ea43b19cf87cabef7d --- /dev/null +++ b/roles/syncExports/templates/exports.j2 @@ -0,0 +1,4 @@ +{% 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 %} diff --git a/syncNFS.yml b/syncNFS.yml new file mode 100644 index 0000000000000000000000000000000000000000..294ed1a2cd01c938a5b9e69b6ededf6cbaeaba77 --- /dev/null +++ b/syncNFS.yml @@ -0,0 +1,14 @@ +--- +- + hosts: openvpn-clients + remote_user: ec2-user + roles: + - { role: syncExports, group_list:['openvpn-clients'], interface_list: ['eth0','tun0'] } + - nfs-client + sudo: true + vars: + nfs_server: "vm-118-138-240-224.erc.monash.edu.au" + openvpn_servers: + - vm-118-138-240-224.erc.monash.edu.au + x509_ca_server: vm-118-138-240-224.erc.monash.edu.au +