WIP: automatically create zfs datasets for all local docker-compose volumes

This commit is contained in:
Iurii Tatishchev 2023-03-06 20:26:13 -08:00
parent d42dc7b5e4
commit bdda563665
Signed by: CaZzzer
GPG Key ID: 9A156B7DA6398968
19 changed files with 78 additions and 17 deletions

16
.idea/jsonSchemas.xml generated
View File

@ -3,6 +3,22 @@
<component name="JsonSchemaMappingsProjectConfiguration">
<state>
<map>
<entry key="Ansible Tasks File">
<value>
<SchemaInfo>
<option name="name" value="Ansible Tasks File" />
<option name="relativePathToSchema" value="https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/ansible.json#/$defs/tasks" />
<option name="applicationDefined" value="true" />
<option name="patterns">
<list>
<Item>
<option name="path" value="contrib/docker_volume_prepare_zfs.yml" />
</Item>
</list>
</option>
</SchemaInfo>
</value>
</entry>
<entry key="Traefik v2">
<value>
<SchemaInfo>

View File

@ -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:

View File

@ -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

View File

@ -1,2 +1,4 @@
---
my_svc_path: ~/services
docker_volumes_zfs_dataset: dock/volumes
docker_volumes_dir: /var/lib/docker/volumes

View File

@ -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"

View File

@ -6,8 +6,9 @@ networks:
external: true
volumes:
gitea:
postgres:
{% for volume_name in docker_volume_names %}
{{ volume_name }}:
{% endfor %}
services:
server:

View File

@ -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

View File

@ -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"

View File

@ -6,8 +6,9 @@ networks:
external: true
volumes:
config:
torrent_blackhole:
{% for volume_name in docker_volume_names %}
{{ volume_name }}:
{% endfor %}
services:
jackett:

View File

@ -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

View File

@ -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"

View File

@ -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:

View File

@ -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

View File

@ -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"

View File

@ -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:

View File

@ -3,4 +3,10 @@
current_svc_name: nextcloud
current_svc_path: "{{ my_svc_path }}/{{ current_svc_name }}"
templates_source: "{{ role_path }}/templates"
templates_source: "{{ role_path }}/templates"
docker_volume_names:
- nextcloud
- nextcloud_config
- nextcloud_data
- db

View File

@ -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"

View File

@ -4,7 +4,9 @@ networks:
traefik:
volumes:
logs:
{% for volume_name in docker_volume_names %}
{{ volume_name }}:
{% endfor %}
services:
traefik:

View File

@ -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