summaryrefslogtreecommitdiff
path: root/roles/chaos-at-home/fileserver/tasks
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2020-08-22 20:35:11 +0200
committerChristian Pointner <equinox@spreadspace.org>2020-08-22 20:35:11 +0200
commitee448d34dbe1b2087f7c64c6c15e3d9d0a84f6f5 (patch)
treec2f8d2af2e50621ae64443fdd449d3658667bcb2 /roles/chaos-at-home/fileserver/tasks
parentadd fileserver role (diff)
finalize chaos-at-home/fileserver
Diffstat (limited to 'roles/chaos-at-home/fileserver/tasks')
-rw-r--r--roles/chaos-at-home/fileserver/tasks/main.yml67
1 files changed, 53 insertions, 14 deletions
diff --git a/roles/chaos-at-home/fileserver/tasks/main.yml b/roles/chaos-at-home/fileserver/tasks/main.yml
index 9cc20853..2a780d26 100644
--- a/roles/chaos-at-home/fileserver/tasks/main.yml
+++ b/roles/chaos-at-home/fileserver/tasks/main.yml
@@ -1,12 +1,12 @@
---
- name: create zfs filesystems
- loop: "{{ fileserver_zfs_filesystems | dict2items }}"
+ loop: "{{ fileserver_zfs_filesystems }}"
loop_control:
- label: "{{ item.value.pool | default(fileserver_zfs_default_pool) }}/{{ item.key }}"
+ label: "{{ item.pool | default(fileserver_zfs_default_pool) }}/{{ item.name }}"
zfs:
- name: "{{ item.value.pool | default(fileserver_zfs_default_pool) }}/{{ item.key }}"
+ name: "{{ item.pool | default(fileserver_zfs_default_pool) }}/{{ item.name }}"
state: present
- extra_zfs_properties: "{{ fileserver_zfs_common_properties | combine(item.value.properties | default({})) }}"
+ extra_zfs_properties: "{{ fileserver_zfs_common_properties | combine(item.properties | default({})) }}"
- name: install nfs-server
apt:
@@ -35,13 +35,13 @@
state: directory
- name: create bind mounts for all filesystems to be exported
- loop: "{{ fileserver_zfs_filesystems | dict2items }}"
+ loop: "{{ fileserver_zfs_filesystems }}"
loop_control:
- label: "{{ item.value.export_as | default(item.key) }}"
- when: (item.value.export is not defined) or (item.value.export | bool)
+ label: "{{ item.export_as | default(item.name) }}"
+ when: (item.export is not defined) or (item.export | bool)
mount:
- src: "{{ zfs_zpools[(item.value.pool | default(fileserver_zfs_default_pool))].mountpoint }}/{{ item.key }}"
- path: "{{ fileserver_nfs_root }}/{{ item.value.export_as | default(item.key) }}"
+ src: "{{ zfs_zpools[(item.pool | default(fileserver_zfs_default_pool))].mountpoint }}/{{ item.name }}"
+ path: "{{ fileserver_nfs_root }}/{{ item.export_as | default(item.name) }}"
fstype: none
opts: defaults,bind,x-systemd.automount,nofail
state: mounted
@@ -49,16 +49,55 @@
- name: generate list of all export destinations
set_fact:
- filesearver_nfs_all_destinations: "{{ fileserver_nfs_default_destinations | map(attribute='dest') | list | union(fileserver_zfs_filesystems | dict2items | selectattr('value.export_to', 'defined') | map(attribute='value.export_to') | flatten | map(attribute='dest') | list) | cidr_merge }}"
+ filesearver_nfs_all_destinations: "{{ fileserver_nfs_default_destinations | map(attribute='dest') | list | union(fileserver_zfs_filesystems | selectattr('export_to', 'defined') | map(attribute='export_to') | flatten | map(attribute='dest') | list) | cidr_merge }}"
- name: export filesystems
blockinfile:
path: /etc/exports
block: |
- {{ fileserver_nfs_root }} {% for dest in filesearver_nfs_all_destinations %} {{ dest }}(ro,fsid=0,sync){% endfor %}{{ '' }}
- {% for fs in (fileserver_zfs_filesystems | dict2items) %}
- {% if (fs.value.export is not defined) or (fs.value.export | bool) %}
- {{ fileserver_nfs_root }}/{{ fs.value.export_as | default(fs.key) }} {% for d in fs.value.export_to | default(fileserver_nfs_default_destinations) %} {{ d.dest }}({{ d.opts | default(fileserver_nfs_default_options) | join(',') }}){% endfor %}{{ '' }}
+ {{ fileserver_nfs_root }} {% for dest in filesearver_nfs_all_destinations %} {{ dest }}(ro,fsid=0,sync,crossmnt){% endfor %}{{ '' }}
+ {% for fs in fileserver_zfs_filesystems %}
+ {% if (fs.export is not defined) or (fs.export | bool) %}
+ {{ fileserver_nfs_root }}/{{ fs.export_as | default(fs.name) }} {% for d in fs.export_to | default(fileserver_nfs_default_destinations) %} {{ d.dest }}({{ d.opts | default(fileserver_nfs_default_options) | join(',') }}){% endfor %}{{ '' }}
{% endif %}
{% endfor %}
notify: restart nfs-server
+
+- name: create fileserver groups
+ loop: "{{ fileserver_group_ids | default({}) | dict2items }}"
+ loop_control:
+ label: "{{ item.key }}"
+ group:
+ name: "{{ item.key }}"
+ gid: "{{ item.value }}"
+
+- name: create conanical groups for fileserver users
+ loop: "{{ fileserver_users | default({}) | dict2items }}"
+ loop_control:
+ label: "{{ item.key }}"
+ group:
+ name: "{{ item.key }}"
+ gid: "{{ item.value.id | default(omit) }}"
+ state: present
+
+- name: create fileserver users
+ loop: "{{ fileserver_users | default({}) | dict2items }}"
+ loop_control:
+ label: "{{ item.key }}"
+ user:
+ name: "{{ item.key }}"
+ uid: "{{ item.value.id | default(omit) }}"
+ state: present
+ group: "{{ item.key }}"
+ groups: "{{ item.value.groups | default(omit) }}"
+
+- name: set filesystem root-dir permissions
+ loop: "{{ fileserver_zfs_filesystems }}"
+ loop_control:
+ label: "{{ item.pool | default(fileserver_zfs_default_pool) }}/{{ item.name }}"
+ when: item.owner is defined or item.group is defined or item.mode is defined
+ file:
+ path: "{{ zfs_zpools[(item.pool | default(fileserver_zfs_default_pool))].mountpoint }}/{{ item.name }}"
+ owner: "{{ item.owner | default(omit) }}"
+ group: "{{ item.group | default(omit) }}"
+ mode: "{{ item.mode | default(omit) }}"