diff --git a/.idea/jsonSchemas.xml b/.idea/jsonSchemas.xml index 19702f5..f7ee74b 100644 --- a/.idea/jsonSchemas.xml +++ b/.idea/jsonSchemas.xml @@ -3,6 +3,22 @@ + + + + + + + diff --git a/contrib/docker_compose_template_task_list.yml b/contrib/docker_compose_template_task_list.yml index 4c3698f..c1efe56 100644 --- a/contrib/docker_compose_template_task_list.yml +++ b/contrib/docker_compose_template_task_list.yml @@ -26,6 +26,13 @@ mode: "400" with_community.general.filetree: "{{ templates_source }}" when: item.state == "file" + +- name: Prepare ZFS datasets for volumes of {{ current_svc_name }} + vars: + full_volume_name: "{{ current_svc_name }}_{{ item }}" + include_tasks: "{{ playbook_dir }}/contrib/docker_volume_prepare_zfs.yml" + loop: "{{ docker_volume_names }}" + when: docker_volume_names is defined - name: Deploy docker-compose for {{ current_svc_name }} community.docker.docker_compose: diff --git a/contrib/docker_volume_prepare_zfs.yml b/contrib/docker_volume_prepare_zfs.yml new file mode 100644 index 0000000..7e249c0 --- /dev/null +++ b/contrib/docker_volume_prepare_zfs.yml @@ -0,0 +1,11 @@ +- name: Ensure ZFS dataset for volume {{ full_volume_name }} + zfs: + name: "{{ docker_volumes_zfs_dataset }}/{{ full_volume_name }}" + state: present +- name: Ensure _data directory for volume {{ full_volume_name }} + file: + path: "{{ docker_volumes_dir }}/{{ full_volume_name }}/_data" + state: directory + owner: root + group: root + mode: 0755 diff --git a/group_vars/docker_hosts.yml b/group_vars/docker_hosts.yml index 2da0437..1a1efb3 100644 --- a/group_vars/docker_hosts.yml +++ b/group_vars/docker_hosts.yml @@ -1,2 +1,4 @@ --- my_svc_path: ~/services +docker_volumes_zfs_dataset: dock/volumes +docker_volumes_dir: /var/lib/docker/volumes diff --git a/roles/gitea/tasks/main.yml b/roles/gitea/tasks/main.yml index 13f7768..dbd7bf5 100644 --- a/roles/gitea/tasks/main.yml +++ b/roles/gitea/tasks/main.yml @@ -1,2 +1,2 @@ - name: "Docker compose steps for {{ current_svc_name }}" - import_tasks: "{{ playbook_dir }}/contrib/docker_compose_template_task_list.yml" + include_tasks: "{{ playbook_dir }}/contrib/docker_compose_template_task_list.yml" diff --git a/roles/gitea/templates/docker-compose.yml.j2 b/roles/gitea/templates/docker-compose.yml.j2 index 549c891..d74632e 100644 --- a/roles/gitea/templates/docker-compose.yml.j2 +++ b/roles/gitea/templates/docker-compose.yml.j2 @@ -6,8 +6,9 @@ networks: external: true volumes: - gitea: - postgres: +{% for volume_name in docker_volume_names %} + {{ volume_name }}: +{% endfor %} services: server: diff --git a/roles/gitea/vars/main.yml b/roles/gitea/vars/main.yml index 57a15ea..1bc6356 100644 --- a/roles/gitea/vars/main.yml +++ b/roles/gitea/vars/main.yml @@ -3,3 +3,7 @@ current_svc_name: gitea current_svc_path: "{{ my_svc_path }}/{{ current_svc_name }}" templates_source: "{{ role_path }}/templates" + +docker_volume_names: + - gitea + - postgres diff --git a/roles/jackett/tasks/main.yml b/roles/jackett/tasks/main.yml index 13f7768..dbd7bf5 100644 --- a/roles/jackett/tasks/main.yml +++ b/roles/jackett/tasks/main.yml @@ -1,2 +1,2 @@ - name: "Docker compose steps for {{ current_svc_name }}" - import_tasks: "{{ playbook_dir }}/contrib/docker_compose_template_task_list.yml" + include_tasks: "{{ playbook_dir }}/contrib/docker_compose_template_task_list.yml" diff --git a/roles/jackett/templates/docker-compose.yml.j2 b/roles/jackett/templates/docker-compose.yml.j2 index d768c8a..b07b599 100644 --- a/roles/jackett/templates/docker-compose.yml.j2 +++ b/roles/jackett/templates/docker-compose.yml.j2 @@ -6,8 +6,9 @@ networks: external: true volumes: - config: - torrent_blackhole: +{% for volume_name in docker_volume_names %} + {{ volume_name }}: +{% endfor %} services: jackett: diff --git a/roles/jackett/vars/main.yml b/roles/jackett/vars/main.yml index b00d642..ee9023a 100644 --- a/roles/jackett/vars/main.yml +++ b/roles/jackett/vars/main.yml @@ -3,3 +3,7 @@ current_svc_name: jackett current_svc_path: "{{ my_svc_path }}/{{ current_svc_name }}" templates_source: "{{ role_path }}/templates" + +docker_volume_names: + - config + - torrent_blackhole diff --git a/roles/jellyfin/tasks/main.yml b/roles/jellyfin/tasks/main.yml index 13f7768..dbd7bf5 100644 --- a/roles/jellyfin/tasks/main.yml +++ b/roles/jellyfin/tasks/main.yml @@ -1,2 +1,2 @@ - name: "Docker compose steps for {{ current_svc_name }}" - import_tasks: "{{ playbook_dir }}/contrib/docker_compose_template_task_list.yml" + include_tasks: "{{ playbook_dir }}/contrib/docker_compose_template_task_list.yml" diff --git a/roles/jellyfin/templates/docker-compose.yml.j2 b/roles/jellyfin/templates/docker-compose.yml.j2 index 0520e3a..1fcee79 100644 --- a/roles/jellyfin/templates/docker-compose.yml.j2 +++ b/roles/jellyfin/templates/docker-compose.yml.j2 @@ -6,8 +6,9 @@ networks: external: true volumes: - config: - cache: +{% for volume_name in docker_volume_names %} + {{ volume_name }}: +{% endfor %} media: driver: local driver_opts: diff --git a/roles/jellyfin/vars/main.yml b/roles/jellyfin/vars/main.yml index 48e9963..c7d81ab 100644 --- a/roles/jellyfin/vars/main.yml +++ b/roles/jellyfin/vars/main.yml @@ -3,3 +3,7 @@ current_svc_name: jellyfin current_svc_path: "{{ my_svc_path }}/{{ current_svc_name }}" templates_source: "{{ role_path }}/templates" + +docker_volume_names: + - config + - cache diff --git a/roles/nextcloud/tasks/main.yml b/roles/nextcloud/tasks/main.yml index 13f7768..dbd7bf5 100644 --- a/roles/nextcloud/tasks/main.yml +++ b/roles/nextcloud/tasks/main.yml @@ -1,2 +1,2 @@ - name: "Docker compose steps for {{ current_svc_name }}" - import_tasks: "{{ playbook_dir }}/contrib/docker_compose_template_task_list.yml" + include_tasks: "{{ playbook_dir }}/contrib/docker_compose_template_task_list.yml" diff --git a/roles/nextcloud/templates/docker-compose.yml.j2 b/roles/nextcloud/templates/docker-compose.yml.j2 index de4cc9c..307934f 100644 --- a/roles/nextcloud/templates/docker-compose.yml.j2 +++ b/roles/nextcloud/templates/docker-compose.yml.j2 @@ -6,10 +6,9 @@ networks: external: true volumes: - nextcloud: - nextcloud_config: - nextcloud_data: - db: +{% for volume_name in docker_volume_names %} + {{ volume_name }}: +{% endfor %} services: app: diff --git a/roles/nextcloud/vars/main.yml b/roles/nextcloud/vars/main.yml index 0009816..57671a2 100644 --- a/roles/nextcloud/vars/main.yml +++ b/roles/nextcloud/vars/main.yml @@ -3,4 +3,10 @@ current_svc_name: nextcloud current_svc_path: "{{ my_svc_path }}/{{ current_svc_name }}" -templates_source: "{{ role_path }}/templates" \ No newline at end of file +templates_source: "{{ role_path }}/templates" + +docker_volume_names: + - nextcloud + - nextcloud_config + - nextcloud_data + - db diff --git a/roles/traefik/tasks/main.yml b/roles/traefik/tasks/main.yml index 13f7768..dbd7bf5 100644 --- a/roles/traefik/tasks/main.yml +++ b/roles/traefik/tasks/main.yml @@ -1,2 +1,2 @@ - name: "Docker compose steps for {{ current_svc_name }}" - import_tasks: "{{ playbook_dir }}/contrib/docker_compose_template_task_list.yml" + include_tasks: "{{ playbook_dir }}/contrib/docker_compose_template_task_list.yml" diff --git a/roles/traefik/templates/docker-compose.yml.j2 b/roles/traefik/templates/docker-compose.yml.j2 index 062945f..1a0090a 100644 --- a/roles/traefik/templates/docker-compose.yml.j2 +++ b/roles/traefik/templates/docker-compose.yml.j2 @@ -4,7 +4,9 @@ networks: traefik: volumes: - logs: +{% for volume_name in docker_volume_names %} + {{ volume_name }}: +{% endfor %} services: traefik: diff --git a/roles/traefik/vars/main.yml b/roles/traefik/vars/main.yml index 85e13a0..a187cba 100644 --- a/roles/traefik/vars/main.yml +++ b/roles/traefik/vars/main.yml @@ -3,3 +3,6 @@ current_svc_name: traefik current_svc_path: "{{ my_svc_path }}/{{ current_svc_name }}" templates_source: "{{ role_path }}/templates" + +docker_volume_names: + - logs