| 
					
				 | 
			
			
				@@ -0,0 +1,193 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+--- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+- hosts: nas 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  gather_facts: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  become: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  roles: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - snapraid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - mergerfs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - linux-system-roles.firewall 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - linux-system-roles.selinux 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - vladgh.samba.server 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  vars_files: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - "{{ inventory_dir }}/vars/vault.yaml" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  vars: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # allow playbook to auto reboot server when changes are made to mountpoints 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    SKIP_REBOOT: False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    samba_guest_account: "{{ vaulted_media_user }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    samba_map_to_guest: bad user 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    samba_netbios_name: "{{ ansible_hostname }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    samba_load_printers: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    samba_mitigate_cve_2017_7494: false # enabling this breaks share browsing plus this is already mitigated by SELinux 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    samba_shares_root: /mergerfs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    samba_users: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - name: "{{ vaulted_media_user }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        password: "{{ vaulted_media_password }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    samba_shares: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - name: Data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        path: /mergerfs/public 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        force_create_mode: '0664' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        force_directory_mode: '0775' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        guest_ok: "yes" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        writable: "yes" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public: "yes" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        owner: "{{ vaulted_media_user }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        group: "{{ vaulted_media_group }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - name: private 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        path: /mergerfs/private 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        force_create_mode: '0664' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        force_directory_mode: '0775' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        valid_users: "{{ vaulted_media_user }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        write_list: "{{ vaulted_media_user }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        owner: "{{ vaulted_media_user }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        group: "{{ vaulted_media_group }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    snapraid_parity_disks: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - path: /mnt/parity1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        parity: parity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        disk: /dev/mapper/luks-parity1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        crypted_disk: /dev/disk/by-id/ata-WDC_WD140EFGX-68B0GN0_9LJB4A4G 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        opts: _netdev 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - path: /mnt/parity2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        parity: 2-parity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        disk: /dev/mapper/luks-parity2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        crypted_disk: /dev/disk/by-id/ata-WDC_WD140EFGX-68B0GN0_9LJB0KBG 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        opts: _netdev 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    snapraid_data_disks: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - path: /mnt/disk1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        disk: /dev/mapper/luks-disk1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        crypted_disk: /dev/disk/by-id/ata-WDC_WD101EFBX-68B0AN0_VCJW0TDP 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        opts: _netdev 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        owner: "{{ vaulted_media_user }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        group: "{{ vaulted_media_group }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - path: /mnt/disk2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        disk: /dev/mapper/luks-disk2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        crypted_disk: /dev/disk/by-id/ata-WDC_WD101EFAX-68LDBN0_VCG6YNSN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        opts: _netdev 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        owner: "{{ vaulted_media_user }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        group: "{{ vaulted_media_group }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - path: /mnt/disk3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        disk: /dev/mapper/luks-disk3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        crypted_disk: /dev/disk/by-id/ata-WDC_WD101EFAX-68LDBN0_VCG6VGPN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        opts: _netdev 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        owner: "{{ vaulted_media_user }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        group: "{{ vaulted_media_group }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - path: /mnt/disk4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        disk: /dev/mapper/luks-disk4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        crypted_disk: /dev/disk/by-id/ata-WDC_WD60EFAX-68SHWN0_WD-WX31D298F8X9 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        opts: _netdev 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        owner: "{{ vaulted_media_user }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        group: "{{ vaulted_media_group }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - path: /mnt/disk5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        disk: /dev/mapper/luks-disk5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        crypted_disk: /dev/disk/by-id/ata-WDC_WD101EFAX-68LDBN0_VCG7HUBN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        opts: _netdev 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        owner: "{{ vaulted_media_user }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        group: "{{ vaulted_media_group }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - path: /mnt/disk6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        disk: /dev/mapper/luks-disk6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        crypted_disk: /dev/disk/by-id/ata-WDC_WD101EFAX-68LDBN0_VCG6YXAN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        opts: _netdev 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        owner: "{{ vaulted_media_user }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        group: "{{ vaulted_media_group }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    mergerfs_disks: "{{ snapraid_data_disks }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    mergerfs_fstab: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - path: /mergerfs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        owner: "{{ vaulted_media_user }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        group: "{{ vaulted_media_group }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        source: /mnt/disk* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        opts: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          - allow_other 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          - minfreespace=10G 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          - category.create=mfs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          - use_ino 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          - func.getattr=newest 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          - fsname=mergerfs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          - _netdev 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          - nonempty 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    selinux_booleans: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - name: samba_share_fusefs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state: on 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        persistent: yes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    firewall: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - service: samba 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state: enabled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - service: netbios-ns 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state: enabled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    server_notifications_topic: "{{ vaulted_server_notifications_topic }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  pre_tasks: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - name: Create Media Group 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        name: "{{ vaulted_media_group }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        gid: "{{ vaulted_media_gid }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - name: Create Media User 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      user: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        name: "{{ vaulted_media_user }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        uid: "{{ vaulted_media_uid }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        groups: "{{ vaulted_media_group }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        append: yes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shell: /bin/bash 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - name: Ensure disks are configured in /etc/crypttab 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      lineinfile: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        path: /etc/crypttab 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        regexp: '^{{ item.disk | split("/") | last }}' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        line: '{{ item.disk | split("/") | last }} {{ item.crypted_disk }} none {{ item.opts }}' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      with_items: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        - "{{ snapraid_parity_disks }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        - "{{ snapraid_data_disks }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      notify: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        - Reboot 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - name: Ensure disks are configured in /etc/fstab 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      mount: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        path: "{{ item.path }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        src: "{{ item.disk }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fstype: xfs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        opts: "{{ item.opts }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state: present 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      with_items: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        - "{{ snapraid_parity_disks }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        - "{{ snapraid_data_disks }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      notify: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        - Reboot 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - name: Ensure mountpoints exist 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      file: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        path: "{{ item.path }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state: directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      with_items: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        - "{{ snapraid_parity_disks }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        - "{{ snapraid_data_disks }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      notify: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        - Reboot 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - meta: flush_handlers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  handlers: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - name: Reboot 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      reboot: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        post_reboot_delay: 120 # wait 2 minutes for disks to fully decrypt and mount themselves 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      when: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        - SKIP_REBOOT == False 
			 |