From 6fa8f17d0cdcbeef2491999e1b8304b61a3e3093 Mon Sep 17 00:00:00 2001
From: shirenn <shirenn@crans.org>
Date: Thu, 3 Jun 2021 23:50:08 +0200
Subject: [PATCH] [nfs-mount] generic systemd nfs mount service

---
 group_vars/all/home_nounou.yml                | 10 ++++++++--
 host_vars/eclat.adm.crans.org.yml             | 10 ++++++++++
 host_vars/ptf.adm.crans.org.yml               | 10 ++++++++++
 host_vars/zamok.adm.crans.org.yml             | 17 ++++++++++++++++
 plays/nfs_mount.yml                           |  8 ++++++++
 plays/root.yml                                |  4 ++--
 plays/zamok.yml                               |  3 ++-
 .../systemd/system/home_nounou.mount.j2       | 14 -------------
 roles/home-permanent/tasks/main.yml           | 20 -------------------
 .../systemd/system/var-mail.mount.j2          | 14 -------------
 roles/{home-nounou => nfs-mount}/README.md    |  0
 .../{home-nounou => nfs-mount}/tasks/main.yml | 19 ++++++++++--------
 .../templates/systemd/system/nfs.mount.j2}    |  6 +++---
 13 files changed, 71 insertions(+), 64 deletions(-)
 create mode 100755 plays/nfs_mount.yml
 delete mode 100644 roles/home-nounou/templates/systemd/system/home_nounou.mount.j2
 delete mode 100644 roles/home-permanent/tasks/main.yml
 delete mode 100644 roles/home-permanent/templates/systemd/system/var-mail.mount.j2
 rename roles/{home-nounou => nfs-mount}/README.md (100%)
 rename roles/{home-nounou => nfs-mount}/tasks/main.yml (50%)
 rename roles/{home-permanent/templates/systemd/system/home.mount.j2 => nfs-mount/templates/systemd/system/nfs.mount.j2} (62%)

diff --git a/group_vars/all/home_nounou.yml b/group_vars/all/home_nounou.yml
index c31e4508..24fe32d1 100644
--- a/group_vars/all/home_nounou.yml
+++ b/group_vars/all/home_nounou.yml
@@ -1,4 +1,10 @@
 ---
 glob_home_nounou:
-  ip: 172.16.10.1
-  mountpoint: /pool/home
+  mounts:
+  - ip: 172.16.10.1
+    mountpoint: /pool/home
+    target: /home_nounou
+    name: home_nounou
+    owner: root
+    group: _user
+    mode: '0750'
diff --git a/host_vars/eclat.adm.crans.org.yml b/host_vars/eclat.adm.crans.org.yml
index d7e64f09..be5af005 100644
--- a/host_vars/eclat.adm.crans.org.yml
+++ b/host_vars/eclat.adm.crans.org.yml
@@ -4,6 +4,16 @@ interfaces:
   srv_nat: ens19
   san: ens20
 
+loc_nfs_mount:
+  mounts:
+    - ip: 172.16.4.1
+      mountpoint: /pool/mirror
+      target: /mirror
+      name: mirror
+      owner: root
+      group: root
+      mode: '0750'
+
 loc_ftpsync: {}
 loc_rsync_mirror: {}
 
diff --git a/host_vars/ptf.adm.crans.org.yml b/host_vars/ptf.adm.crans.org.yml
index 8409d409..46de9db2 100644
--- a/host_vars/ptf.adm.crans.org.yml
+++ b/host_vars/ptf.adm.crans.org.yml
@@ -4,6 +4,16 @@ interfaces:
   san: ens19
   srv: ens20
 
+loc_nfs_mount:
+  mounts:
+    - ip: 172.16.4.1
+      mountpoint: /pool/mirror
+      target: /mirror
+      name: mirror
+      owner: root
+      group: root
+      mode: '0750'
+
 loc_nginx:
   service_name: ptf
   ssl: []
diff --git a/host_vars/zamok.adm.crans.org.yml b/host_vars/zamok.adm.crans.org.yml
index fba9ef88..342eb77f 100644
--- a/host_vars/zamok.adm.crans.org.yml
+++ b/host_vars/zamok.adm.crans.org.yml
@@ -19,3 +19,20 @@ loc_crans_scripts:
   group: nounou
   dests:
     - /usr/scripts
+
+loc_nfs_mount:
+  mounts:
+    - ip: 172.16.4.2
+      mountpoint: /pool/home
+      target: /home
+      name: home
+      owner: root
+      group: user
+      mode: '0750'
+    - ip: 172.16.4.2
+      mountpoint: /pool/mail
+      target: /var/mail
+      name: var-mail
+      owner: root
+      group: user
+      mode: '0750'
diff --git a/plays/nfs_mount.yml b/plays/nfs_mount.yml
new file mode 100755
index 00000000..3cb9eaa7
--- /dev/null
+++ b/plays/nfs_mount.yml
@@ -0,0 +1,8 @@
+#!/usr/bin/env ansible-playbook
+---
+# Deploy nfs_mount server
+- hosts: all
+  vars:
+    nfs_mount: "{{ glob_nfs_mount | default({}) | combine(loc_nfs_mount | default({})) }}"
+  roles:
+    - nfs-mount
diff --git a/plays/root.yml b/plays/root.yml
index beb048e8..421bc6b8 100755
--- a/plays/root.yml
+++ b/plays/root.yml
@@ -40,9 +40,9 @@
 
 - hosts: server,!ovh_physical,!tealc.adm.crans.org,!zamok.adm.crans.org,!gulp.cachan-adm.crans.org
   vars:
-    home_nounou: "{{ glob_home_nounou | default({}) | combine(loc_home_nounou | default({})) }}"
+    nfs_mount: "{{ glob_home_nounou | default({}) | combine(loc_home_nounou | default({})) }}"
   roles:
-    - home-nounou
+    - nfs-mount
 
 - hosts: all, !rsyslog_server
   vars:
diff --git a/plays/zamok.yml b/plays/zamok.yml
index 4c52af09..3bfc2c45 100755
--- a/plays/zamok.yml
+++ b/plays/zamok.yml
@@ -1,6 +1,8 @@
 #!/usr/bin/env ansible-playbook
 ---
 
+- import_playbook: nfs_mount.yml
+
 - hosts: adh_server
   vars:
     adh: '{{ glob_adh | combine(loc_adh | default({}), recursive=True) }}'
@@ -8,4 +10,3 @@
     - zamok-tools
     - postfix
     - prometheus-node-exporter-postfix
-
diff --git a/roles/home-nounou/templates/systemd/system/home_nounou.mount.j2 b/roles/home-nounou/templates/systemd/system/home_nounou.mount.j2
deleted file mode 100644
index 835e16ca..00000000
--- a/roles/home-nounou/templates/systemd/system/home_nounou.mount.j2
+++ /dev/null
@@ -1,14 +0,0 @@
-{{ ansible_header | comment }}
-[Unit]
-Description=Mount home
-Wants=network-online.target
-After=network-online.target
-
-[Mount]
-What={{ home_nounou.ip }}:{{ home_nounou.mountpoint }}
-Where=/home_nounou
-Type=nfs
-Options=rw,nosuid
-
-[Install]
-WantedBy=multi-user.target
diff --git a/roles/home-permanent/tasks/main.yml b/roles/home-permanent/tasks/main.yml
deleted file mode 100644
index eb1c537b..00000000
--- a/roles/home-permanent/tasks/main.yml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-- name: Deploy nfs systemd mount
-  template:
-    src: systemd/system/home.mount.j2
-    dest: /etc/systemd/system/home.mount
-    mode: 0755
-
-- name: Load and activate nfs home systemd mount
-  systemd:
-    name: home.mount
-    daemon_reload: true
-    enabled: true
-    state: started
-
-- name: Load and activate nfs mail systemd mount
-  systemd:
-    name: var-mail.mount
-    daemon_reload: true
-    enabled: true
-    state: started
diff --git a/roles/home-permanent/templates/systemd/system/var-mail.mount.j2 b/roles/home-permanent/templates/systemd/system/var-mail.mount.j2
deleted file mode 100644
index c8ab049e..00000000
--- a/roles/home-permanent/templates/systemd/system/var-mail.mount.j2
+++ /dev/null
@@ -1,14 +0,0 @@
-{{ ansible_header | comment }}
-[Unit]
-Description=Mount pool/mail on cameron
-Wants=network-online.target
-After=network-online.target
-
-[Mount]
-What=cameron.san.crans.org:/pool/mail
-Where=/var/mail
-Type=nfs
-Options=rw,nosuid
-
-[Install]
-WantedBy=multi-user.target
diff --git a/roles/home-nounou/README.md b/roles/nfs-mount/README.md
similarity index 100%
rename from roles/home-nounou/README.md
rename to roles/nfs-mount/README.md
diff --git a/roles/home-nounou/tasks/main.yml b/roles/nfs-mount/tasks/main.yml
similarity index 50%
rename from roles/home-nounou/tasks/main.yml
rename to roles/nfs-mount/tasks/main.yml
index 915b294e..5c346d79 100644
--- a/roles/home-nounou/tasks/main.yml
+++ b/roles/nfs-mount/tasks/main.yml
@@ -9,23 +9,26 @@
   retries: 3
   until: apt_result is succeeded
 
-- name: Create directory home_nounou
+- name: Create target directory
   file:
-    path: /home_nounou
+    path: "{{ item.target }}"
     state: directory
-    owner: root
-    group: _user
-    mode: 0750
+    owner: "{{ item.owner }}"
+    group: "{{ item.group }}"
+    mode: "{{ item.mode }}"
+  loop: "{{ nfs_mount.mounts }}"
 
 - name: Deploy nfs systemd mount
   template:
-    src: systemd/system/home_nounou.mount.j2
-    dest: /etc/systemd/system/home_nounou.mount
+    src: systemd/system/nfs.mount.j2
+    dest: "/etc/systemd/system/{{ item.name }}.mount"
     mode: 0644
+  loop: "{{ nfs_mount.mounts }}"
 
 - name: Load and activate nfs systemd mount
   systemd:
-    name: home_nounou.mount
+    name: "{{ item.name }}.mount"
     daemon_reload: true
     enabled: true
     state: started
+  loop: "{{ nfs_mount.mounts }}"
diff --git a/roles/home-permanent/templates/systemd/system/home.mount.j2 b/roles/nfs-mount/templates/systemd/system/nfs.mount.j2
similarity index 62%
rename from roles/home-permanent/templates/systemd/system/home.mount.j2
rename to roles/nfs-mount/templates/systemd/system/nfs.mount.j2
index a16ff658..ab98c454 100644
--- a/roles/home-permanent/templates/systemd/system/home.mount.j2
+++ b/roles/nfs-mount/templates/systemd/system/nfs.mount.j2
@@ -1,12 +1,12 @@
 {{ ansible_header | comment }}
 [Unit]
-Description=Mount pool/home on cameron
+Description=Mount {{ item.target }}
 Wants=network-online.target
 After=network-online.target
 
 [Mount]
-What=cameron.san.crans.org:/pool/home
-Where=/home
+What={{ item.ip }}:{{ item.mountpoint }}
+Where={{ item.target }}
 Type=nfs
 Options=rw,nosuid