--- - name: create zfs datasets when: nextcloud_zfs is defined block: - name: create zfs base dataset zfs: name: "{{ nextcloud_zfs.pool }}/{{ nextcloud_zfs.name }}" state: present extra_zfs_properties: quota: "{{ nextcloud_zfs.size }}" - name: create zfs volumes for instances loop: "{{ nextcloud_instances | dict2items }}" loop_control: label: "{{ item.key }} ({{ item.value.quota }})" zfs: name: "{{ nextcloud_zfs.pool }}/{{ nextcloud_zfs.name }}/{{ item.key }}" state: present extra_zfs_properties: quota: "{{ item.value.quota }}" - name: configure nextcloud base bath set_fact: nextcloud_base_path: "{{ zfs_zpools[nextcloud_zfs.pool].mountpoint }}/{{ nextcloud_zfs.name }}" - name: create instance subdirectories when: nextcloud_zfs is not defined loop: "{{ nextcloud_instances | list }}" file: path: "{{ nextcloud_base_path }}/{{ item }}" state: directory - name: add group for nextcloud app group: name: nc-app gid: "{{ nextcloud_app_gid }}" - name: add user for nextcloud app user: name: nc-app uid: "{{ nextcloud_app_uid }}" group: nc-app password: "!" - name: create nextcloud app subdirectory loop: "{{ nextcloud_instances | list }}" loop_control: label: "{{ item }}" file: path: "{{ nextcloud_base_path }}/{{ item }}/nextcloud" owner: "{{ nextcloud_app_uid }}" group: "{{ nextcloud_app_gid }}" state: directory - name: add group for nextcloud db group: name: nc-db gid: "{{ nextcloud_db_gid }}" - name: add user for nextcloud db user: name: nc-db uid: "{{ nextcloud_db_uid }}" group: nc-db password: "!" - name: create nextcloud database subdirectory loop: "{{ nextcloud_instances | dict2items}}" loop_control: label: "{{ item.key }} ({{ item.value.database.type }})" file: path: "{{ nextcloud_base_path }}/{{ item.key }}/{{ item.value.database.type }}" owner: "{{ nextcloud_db_uid }}" group: "{{ nextcloud_db_gid }}" state: directory - name: create image config dir loop: "{{ nextcloud_instances | list }}" loop_control: label: "{{ item }}" file: path: "{{ nextcloud_base_path }}/{{ item }}/config" state: directory - name: create apache vhost config loop: "{{ nextcloud_instances | list }}" loop_control: label: "{{ item }}" copy: content: | ServerAdmin webmaster@localhost DocumentRoot /var/www/html # SetEnv HTTPS on # SetEnvIfNoCase X-Forwarded-Proto https HTTPS=on ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined dest: "{{ nextcloud_base_path }}/{{ item }}/config/apache-site.conf" - name: configure apache to run on port 8080 only loop: "{{ nextcloud_instances | list }}" loop_control: label: "{{ item }}" copy: content: | Listen 8080 dest: "{{ nextcloud_base_path }}/{{ item }}/config/ports.conf" - name: generate pod manifests loop: "{{ nextcloud_instances | dict2items }}" loop_control: label: "{{ item.key }}" template: src: "pod-with-{{ item.value.database.type }}.yml.j2" dest: "/etc/kubernetes/manifests/{{ item.key }}.yml" mode: 0600