--- - name: create zfs datasets when: etherpad_lite_zfs is defined block: - name: create zfs base dataset zfs: name: "{{ etherpad_lite_zfs.pool }}/{{ etherpad_lite_zfs.name }}" state: present extra_zfs_properties: "{{ etherpad_lite_zfs.properties | dehumanize_zfs_properties | default(omit) }}" - name: create zfs volumes for instances loop: "{{ etherpad_lite_instances | dict2items }}" loop_control: label: "{{ item.key }} ({{ (item.value.zfs_properties | default({})).items() | map('join', '=') | join(', ') }})" zfs: name: "{{ etherpad_lite_zfs.pool }}/{{ etherpad_lite_zfs.name }}/{{ item.key }}" state: present extra_zfs_properties: "{{ item.value.zfs_properties | dehumanize_zfs_properties | default(omit) }}" - name: configure etherpad_lite base bath set_fact: etherpad_lite_base_path: "{{ (zfs_pools[etherpad_lite_zfs.pool].mountpoint, etherpad_lite_zfs.name) | path_join }}" - name: create instance subdirectories when: etherpad_lite_zfs is not defined loop: "{{ etherpad_lite_instances | list }}" file: path: "{{ etherpad_lite_base_path }}/{{ item }}" state: directory - name: add group for etherpad-lite app group: name: epl-app gid: "{{ etherpad_lite_app_gid }}" - name: add user for etherpad-lite app user: name: epl-app uid: "{{ etherpad_lite_app_uid }}" group: epl-app password: "!" - name: create etherpad_lite app subdirectory loop: "{{ etherpad_lite_instances | list }}" file: path: "{{ etherpad_lite_base_path }}/{{ item }}/etherpad-lite" owner: "{{ etherpad_lite_app_uid }}" group: "{{ etherpad_lite_app_gid }}" state: directory - name: add group for etherpad-lite db group: name: epl-db gid: "{{ etherpad_lite_db_gid }}" - name: add user for etherpad-lite db user: name: epl-db uid: "{{ etherpad_lite_db_uid }}" group: epl-db password: "!" - name: create etherpad-lite database subdirectory loop: "{{ etherpad_lite_instances | dict2items}}" loop_control: label: "{{ item.key }} ({{ item.value.database.type }})" file: path: "{{ etherpad_lite_base_path }}/{{ item.key }}/{{ item.value.database.type }}" owner: "{{ etherpad_lite_db_uid }}" group: "{{ etherpad_lite_db_gid }}" state: directory - name: create etherpad-lite config directory loop: "{{ etherpad_lite_instances | list }}" file: path: "{{ etherpad_lite_base_path }}/{{ item }}/config" state: directory - name: create settings json loop: "{{ etherpad_lite_instances | dict2items }}" loop_control: label: "{{ item.key }}" copy: content: "{{ item.value.settings | combine({'ip': '0.0.0.0', 'port': 9001}) | to_nice_json }}" dest: "{{ etherpad_lite_base_path }}/{{ item.key }}/config/settings.json" mode: 0600 owner: "{{ etherpad_lite_app_uid }}" group: "{{ etherpad_lite_app_gid }}" - name: install pod manifest loop: "{{ etherpad_lite_instances | dict2items }}" loop_control: label: "{{ item.key }}" vars: kubernetes_standalone_pod: name: "etherpad-lite-{{ item.key }}" spec: "{{ lookup('template', 'pod-spec-with-{{ item.value.database.type }}.yml.j2') }}" mode: "0600" config_hash_items: - path: "{{ etherpad_lite_base_path }}/{{ item.key }}/config/settings.json" properties: - checksum include_role: name: kubernetes/standalone/pod - name: configure nginx vhost loop: "{{ etherpad_lite_instances | dict2items }}" vars: nginx_vhost: name: "etherpad-lite-{{ item.key }}" content: "{{ lookup('template', 'nginx-vhost.conf.j2') }}" acme: true hostnames: "{{ item.value.hostnames }}" include_role: name: nginx/vhost