From cdfd464bcea6eb34941e54545c7faa3681d1af06 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Sun, 25 May 2025 17:44:58 +0200 Subject: [PATCH] Refactored docker logic --- Makefile | 2 +- docs/guides/developer/Role_Creation.md | 3 +- filter_plugins/configuration_filters.py | 1 + group_vars/all/15_about.yml | 16 ++++----- playbook.yml | 6 ++-- roles/docker-baserow/tasks/main.yml | 3 +- roles/docker-bluesky/tasks/main.yml | 3 +- roles/docker-compose/tasks/create-files.yml | 35 +++++++++++++++++++ roles/docker-coturn/tasks/main.yml | 3 +- roles/docker-espocrm/tasks/main.yml | 3 +- roles/docker-friendica/tasks/main.yml | 3 +- roles/docker-funkwhale/tasks/main.yml | 3 +- roles/docker-fusiondirectory/tasks/main.yml | 3 +- roles/docker-gitea/tasks/main.yml | 3 +- roles/docker-gitlab/tasks/main.yml | 3 +- roles/docker-joomla/tasks/main.yml | 3 +- roles/docker-keycloak/tasks/main.yml | 3 +- roles/docker-lam/tasks/main.yml | 3 +- roles/docker-ldap/tasks/main.yml | 3 +- roles/docker-listmonk/tasks/main.yml | 3 +- roles/docker-mailu/tasks/main.yml | 3 +- roles/docker-mastodon/tasks/main.yml | 3 +- roles/docker-matomo/tasks/main.yml | 3 +- roles/docker-moodle/tasks/main.yml | 9 +---- roles/docker-nextcloud/tasks/main.yml | 3 +- roles/docker-openproject/tasks/main.yml | 18 +++------- .../templates/{Dockerfile => Dockerfile.j2} | 2 +- .../templates/docker-compose.yml.j2 | 2 +- .../docker-openproject/vars/configuration.yml | 2 +- roles/docker-openproject/vars/main.yml | 5 +-- roles/docker-peertube/tasks/main.yml | 3 +- roles/docker-pgadmin/tasks/main.yml | 3 +- roles/docker-phpldapadmin/tasks/main.yml | 3 +- roles/docker-phpmyadmin/tasks/main.yml | 3 +- roles/docker-pixelfed/tasks/main.yml | 3 +- roles/docker-presentation/tasks/main.yml | 3 +- roles/docker-roulette-wheel/tasks/main.yml | 8 +---- roles/docker-snipe-it/tasks/main.yml | 3 +- roles/docker-sphinx/tasks/main.yml | 3 +- roles/docker-syncope/tasks/main.yml | 3 +- roles/docker-taiga/tasks/main.yml | 3 +- roles/docker-wordpress/tasks/main.yml | 9 +---- .../Dockerfile => templates/Dockerfile.j2} | 2 +- roles/docker-yourls/tasks/main.yml | 3 +- tasks/.gitignore | 1 - tasks/TODO.md | 3 -- tasks/copy-docker-compose-and-env.yml | 27 -------------- .../01_constructor.yml} | 0 .../02_personal-computer.yml} | 0 tasks/{server.yml => plays/02_server.yml} | 2 +- .../03_destructor.yml} | 0 tasks/utils/.gitignore | 1 + .../update-repository-with-files.yml | 0 53 files changed, 95 insertions(+), 146 deletions(-) create mode 100644 roles/docker-compose/tasks/create-files.yml rename roles/docker-openproject/templates/{Dockerfile => Dockerfile.j2} (93%) rename roles/docker-wordpress/{files/Dockerfile => templates/Dockerfile.j2} (88%) delete mode 100644 tasks/.gitignore delete mode 100644 tasks/TODO.md delete mode 100644 tasks/copy-docker-compose-and-env.yml rename tasks/{constructor.yml => plays/01_constructor.yml} (100%) rename tasks/{personal-computer.yml => plays/02_personal-computer.yml} (100%) rename tasks/{server.yml => plays/02_server.yml} (94%) rename tasks/{destructor.yml => plays/03_destructor.yml} (100%) create mode 100644 tasks/utils/.gitignore rename tasks/{ => utils}/update-repository-with-files.yml (100%) diff --git a/Makefile b/Makefile index 66320398..410513e4 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ ROLES_DIR := ./roles APPLICATIONS_OUT := ./group_vars/all/03_applications.yml APPLICATIONS_SCRIPT := ./cli/generate-applications-defaults.py -INCLUDES_OUT := ./tasks/include-docker-roles.yml +INCLUDES_OUT := ./tasks/utils/docker-roles.yml INCLUDES_SCRIPT := ./cli/generate_playbook.py .PHONY: build install test diff --git a/docs/guides/developer/Role_Creation.md b/docs/guides/developer/Role_Creation.md index 3d92985a..9d26aab3 100644 --- a/docs/guides/developer/Role_Creation.md +++ b/docs/guides/developer/Role_Creation.md @@ -98,8 +98,7 @@ Now that you have defined the application settings, domain, and application ID, domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" - - name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml + - include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" ``` 3. **`docker-compose.yml.j2`**: diff --git a/filter_plugins/configuration_filters.py b/filter_plugins/configuration_filters.py index 041ff871..504750ea 100644 --- a/filter_plugins/configuration_filters.py +++ b/filter_plugins/configuration_filters.py @@ -23,6 +23,7 @@ def get_docker_compose(path_docker_compose_instances: str, application_id: str) 'files': { 'env': f"{base}.env/env", 'docker_compose': f"{base}docker-compose.yml", + 'dockerfile': f"{base}Dockerfile", } } diff --git a/group_vars/all/15_about.yml b/group_vars/all/15_about.yml index b571fe16..59c8c435 100644 --- a/group_vars/all/15_about.yml +++ b/group_vars/all/15_about.yml @@ -19,15 +19,15 @@ defaults_service_provider: bluesky: >- {{ ('@' ~ users.administrator.username ~ '.' ~ domains.bluesky.api) if 'bluesky' in group_names else '' }} - email: "contact@{{ primary_domain }}" - mastodon: "{{ '@' ~ users.administrator.username ~ '@' ~ domains | get_domain('mastodon') if 'mastodon' in group_names else '' }}" - matrix: "{{ '@' ~ users.administrator.username ~ ':' ~ domains.matrix.synapse if 'matrix' in group_names else '' }}" - peertube: "{{ '@' ~ users.administrator.username ~ '@' ~ domains | get_domain('peertube') if 'peertube' in group_names else '' }}" - pixelfed: "{{ '@' ~ users.administrator.username ~ '@' ~ domains | get_domain('pixelfed') if 'pixelfed' in group_names else '' }}" - phone: "+0 000 000 404" - wordpress: "{{ '@' ~ users.administrator.username ~ '@' ~ domains | get_domain('wordpress') if 'wordpress' in group_names else '' }}" + email: "contact@{{ primary_domain }}" + mastodon: "{{ '@' ~ users.administrator.username ~ '@' ~ domains | get_domain('mastodon') if 'mastodon' in group_names else '' }}" + matrix: "{{ '@' ~ users.administrator.username ~ ':' ~ domains.matrix.synapse if 'matrix' in group_names else '' }}" + peertube: "{{ '@' ~ users.administrator.username ~ '@' ~ domains | get_domain('peertube') if 'peertube' in group_names else '' }}" + pixelfed: "{{ '@' ~ users.administrator.username ~ '@' ~ domains | get_domain('pixelfed') if 'pixelfed' in group_names else '' }}" + phone: "+0 000 000 404" + wordpress: "{{ '@' ~ users.administrator.username ~ '@' ~ domains | get_domain('wordpress') if 'wordpress' in group_names else '' }}" legal: editorial_responsible: "Johannes Gutenberg" source_code: "https://github.com/kevinveenbirkenbach/cymais" - imprint: "{{web_protocol}}://{{ domains | get_domain('html-server') }}/imprint.html" \ No newline at end of file + imprint: "{{web_protocol}}://{{ domains | get_domain('html-server') }}/imprint.html" \ No newline at end of file diff --git a/playbook.yml b/playbook.yml index baba9da0..a0f93900 100644 --- a/playbook.yml +++ b/playbook.yml @@ -2,9 +2,9 @@ hosts: all tasks: - name: "Load 'constructor' tasks" - include_tasks: "tasks/constructor.yml" + include_tasks: "tasks/plays/01_constructor.yml" - name: "Load '{{host_type}}' tasks" - include_tasks: "tasks/{{host_type}}.yml" + include_tasks: "tasks/plays/02_{{host_type}}.yml" - name: "Load 'destructor' tasks" - include_tasks: "tasks/destructor.yml" + include_tasks: "tasks/plays/03_destructor.yml" become: true \ No newline at end of file diff --git a/roles/docker-baserow/tasks/main.yml b/roles/docker-baserow/tasks/main.yml index e64f997c..1e725065 100644 --- a/roles/docker-baserow/tasks/main.yml +++ b/roles/docker-baserow/tasks/main.yml @@ -10,5 +10,4 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml \ No newline at end of file +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" \ No newline at end of file diff --git a/roles/docker-bluesky/tasks/main.yml b/roles/docker-bluesky/tasks/main.yml index 7f451be9..c0e10f19 100644 --- a/roles/docker-bluesky/tasks/main.yml +++ b/roles/docker-bluesky/tasks/main.yml @@ -47,5 +47,4 @@ version: "main" notify: docker compose project build and setup -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/roles/docker-compose/tasks/create-files.yml b/roles/docker-compose/tasks/create-files.yml new file mode 100644 index 00000000..3a77cc47 --- /dev/null +++ b/roles/docker-compose/tasks/create-files.yml @@ -0,0 +1,35 @@ +- name: "Create (optional) '{{ docker_compose.files.dockerfile }}'" + template: + src: "{{ playbook_dir }}/roles/{{ role_name }}/templates/{{ template_name }}" + dest: "{{ docker_compose.files.dockerfile }}" + notify: docker compose project build and setup + ignore_errors: true + +- name: "Create (optional) '{{ docker_compose.files.env }}'" + template: + src: "env.j2" + dest: "{{ docker_compose.files.env }}" + mode: '770' + force: yes + notify: docker compose project setup + register: env_template + ignore_errors: true + +- name: "Create (obligatoric) '{{ docker_compose.files.docker_compose }}'" + template: + src: "docker-compose.yml.j2" + dest: "{{ docker_compose.files.docker_compose }}" + notify: docker compose project setup + register: docker_compose_template + +- name: "Check if any container is running in {{ docker_compose.directories.instance }}" + command: docker compose ps -q --filter status=running + args: + chdir: "{{ docker_compose.directories.instance }}" + register: docker_ps + changed_when: (docker_ps.stdout | trim) == "" + notify: docker compose project setup + when: not (docker_compose_template.changed or env_template.changed) + +- name: flush docker compose project setup + meta: flush_handlers diff --git a/roles/docker-coturn/tasks/main.yml b/roles/docker-coturn/tasks/main.yml index f47fc6c2..0443f5d8 100644 --- a/roles/docker-coturn/tasks/main.yml +++ b/roles/docker-coturn/tasks/main.yml @@ -10,5 +10,4 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/roles/docker-espocrm/tasks/main.yml b/roles/docker-espocrm/tasks/main.yml index 9be10605..fa98f349 100644 --- a/roles/docker-espocrm/tasks/main.yml +++ b/roles/docker-espocrm/tasks/main.yml @@ -14,8 +14,7 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" - name: Set OIDC scopes in EspoCRM config (inside web container) ansible.builtin.shell: | diff --git a/roles/docker-friendica/tasks/main.yml b/roles/docker-friendica/tasks/main.yml index f47fc6c2..0443f5d8 100644 --- a/roles/docker-friendica/tasks/main.yml +++ b/roles/docker-friendica/tasks/main.yml @@ -10,5 +10,4 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/roles/docker-funkwhale/tasks/main.yml b/roles/docker-funkwhale/tasks/main.yml index 3c68ee32..e452346b 100644 --- a/roles/docker-funkwhale/tasks/main.yml +++ b/roles/docker-funkwhale/tasks/main.yml @@ -10,7 +10,6 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/roles/docker-fusiondirectory/tasks/main.yml b/roles/docker-fusiondirectory/tasks/main.yml index 811eddaa..501071c1 100644 --- a/roles/docker-fusiondirectory/tasks/main.yml +++ b/roles/docker-fusiondirectory/tasks/main.yml @@ -9,5 +9,4 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/roles/docker-gitea/tasks/main.yml b/roles/docker-gitea/tasks/main.yml index f47fc6c2..0443f5d8 100644 --- a/roles/docker-gitea/tasks/main.yml +++ b/roles/docker-gitea/tasks/main.yml @@ -10,5 +10,4 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/roles/docker-gitlab/tasks/main.yml b/roles/docker-gitlab/tasks/main.yml index f47fc6c2..0443f5d8 100644 --- a/roles/docker-gitlab/tasks/main.yml +++ b/roles/docker-gitlab/tasks/main.yml @@ -10,5 +10,4 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/roles/docker-joomla/tasks/main.yml b/roles/docker-joomla/tasks/main.yml index e3975121..20509f0d 100644 --- a/roles/docker-joomla/tasks/main.yml +++ b/roles/docker-joomla/tasks/main.yml @@ -13,5 +13,4 @@ loop_control: loop_var: domain -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml \ No newline at end of file +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" \ No newline at end of file diff --git a/roles/docker-keycloak/tasks/main.yml b/roles/docker-keycloak/tasks/main.yml index f241b313..8f1f293d 100644 --- a/roles/docker-keycloak/tasks/main.yml +++ b/roles/docker-keycloak/tasks/main.yml @@ -10,8 +10,7 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" - name: "create directory {{import_directory_host}}" file: diff --git a/roles/docker-lam/tasks/main.yml b/roles/docker-lam/tasks/main.yml index 811eddaa..501071c1 100644 --- a/roles/docker-lam/tasks/main.yml +++ b/roles/docker-lam/tasks/main.yml @@ -9,5 +9,4 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/roles/docker-ldap/tasks/main.yml b/roles/docker-ldap/tasks/main.yml index 5cca95aa..627bc812 100644 --- a/roles/docker-ldap/tasks/main.yml +++ b/roles/docker-ldap/tasks/main.yml @@ -23,8 +23,7 @@ ipam_config: - subnet: "{{ networks.local.central_ldap.subnet }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" - name: "create directory {{ldif_host_path}}{{item}}" file: diff --git a/roles/docker-listmonk/tasks/main.yml b/roles/docker-listmonk/tasks/main.yml index cae74afe..4033a53d 100644 --- a/roles/docker-listmonk/tasks/main.yml +++ b/roles/docker-listmonk/tasks/main.yml @@ -25,8 +25,7 @@ dest: "{{docker_compose.directories.config}}config.toml" notify: docker compose project setup -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" - name: Check if listmonk database is already initialized command: docker compose exec -T {{database_host}} psql -U {{database_username}} -d {{database_name}} -c "\dt" diff --git a/roles/docker-mailu/tasks/main.yml b/roles/docker-mailu/tasks/main.yml index 68d858e3..75269aab 100644 --- a/roles/docker-mailu/tasks/main.yml +++ b/roles/docker-mailu/tasks/main.yml @@ -18,8 +18,7 @@ name: nginx-docker-cert-deploy when: run_once_docker_mailu is not defined -- name: "Copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" when: run_once_docker_mailu is not defined - name: Flush docker service handlers diff --git a/roles/docker-mastodon/tasks/main.yml b/roles/docker-mastodon/tasks/main.yml index 74c2d7d1..df728e77 100644 --- a/roles/docker-mastodon/tasks/main.yml +++ b/roles/docker-mastodon/tasks/main.yml @@ -16,8 +16,7 @@ client_max_body_size: "80m" vhost_flavour: "ws_generic" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" - name: flush docker service meta: flush_handlers diff --git a/roles/docker-matomo/tasks/main.yml b/roles/docker-matomo/tasks/main.yml index d327e118..ee9ab0d5 100644 --- a/roles/docker-matomo/tasks/main.yml +++ b/roles/docker-matomo/tasks/main.yml @@ -12,8 +12,7 @@ http_port: "{{ ports.localhost.http[application_id] }}" when: run_once_docker_matomo is not defined -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" when: run_once_docker_matomo is not defined - name: run the docker matomo tasks once diff --git a/roles/docker-moodle/tasks/main.yml b/roles/docker-moodle/tasks/main.yml index cffe5327..044899c9 100644 --- a/roles/docker-moodle/tasks/main.yml +++ b/roles/docker-moodle/tasks/main.yml @@ -10,14 +10,7 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "Transfer Dockerfile to {{ docker_compose.directories.instance }}" - template: - src: Dockerfile.j2 - dest: "{{ docker_compose.directories.instance }}Dockerfile" - notify: docker compose project build and setup - -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" - name: "Configure OIDC login for Moodle if enabled" include_tasks: oidc.yml diff --git a/roles/docker-nextcloud/tasks/main.yml b/roles/docker-nextcloud/tasks/main.yml index 1c0c3f01..a00c39f4 100644 --- a/roles/docker-nextcloud/tasks/main.yml +++ b/roles/docker-nextcloud/tasks/main.yml @@ -35,8 +35,7 @@ dest: "{{docker_compose.directories.volumes}}nginx.conf" notify: restart nextcloud nginx service -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" - name: Flush all handlers immediately so that occ can be used meta: flush_handlers diff --git a/roles/docker-openproject/tasks/main.yml b/roles/docker-openproject/tasks/main.yml index e3c87754..67415b54 100644 --- a/roles/docker-openproject/tasks/main.yml +++ b/roles/docker-openproject/tasks/main.yml @@ -10,23 +10,16 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "Create {{openproject_plugins_service}}" +- name: "Create {{openproject_plugins_folder}}" file: - path: "{{openproject_plugins_service}}" + path: "{{openproject_plugins_folder}}" state: directory mode: '0755' -- name: "Transfering Gemfile.plugins to {{openproject_plugins_service}}" +- name: "Transfering Gemfile.plugins to {{openproject_plugins_folder}}" copy: src: Gemfile.plugins - dest: "{{openproject_plugins_service}}Gemfile.plugins" - notify: - - docker compose project build and setup - -- name: "Transfering Dockerfile to {{openproject_plugins_service}}Dockerfile" - template: - src: Dockerfile - dest: "{{openproject_plugins_service}}Dockerfile" + dest: "{{openproject_plugins_folder}}Gemfile.plugins" notify: - docker compose project build and setup @@ -40,8 +33,7 @@ state: directory mode: 0755 -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" - name: flush docker service meta: flush_handlers diff --git a/roles/docker-openproject/templates/Dockerfile b/roles/docker-openproject/templates/Dockerfile.j2 similarity index 93% rename from roles/docker-openproject/templates/Dockerfile rename to roles/docker-openproject/templates/Dockerfile.j2 index 632e76d8..2254461e 100644 --- a/roles/docker-openproject/templates/Dockerfile +++ b/roles/docker-openproject/templates/Dockerfile.j2 @@ -5,7 +5,7 @@ FROM openproject/community:{{applications.openproject.version}} # path inside of the container. Say for `/app/vendor/plugins/openproject-slack`: # COPY /path/to/my/local/openproject-slack /app/vendor/plugins/openproject-slack -COPY Gemfile.plugins /app/ +COPY volumes/plugins/Gemfile.plugins /app/ # If the plugin uses any external NPM dependencies you have to install them here. # RUN npm add npm * diff --git a/roles/docker-openproject/templates/docker-compose.yml.j2 b/roles/docker-openproject/templates/docker-compose.yml.j2 index ea6da29f..f341005e 100644 --- a/roles/docker-openproject/templates/docker-compose.yml.j2 +++ b/roles/docker-openproject/templates/docker-compose.yml.j2 @@ -4,7 +4,7 @@ x-op-app: &app driver: journald image: {{custom_openproject_image}} build: - context: {{openproject_plugins_service}} + context: . dockerfile: Dockerfile services: diff --git a/roles/docker-openproject/vars/configuration.yml b/roles/docker-openproject/vars/configuration.yml index 34c63c6a..1cdca664 100644 --- a/roles/docker-openproject/vars/configuration.yml +++ b/roles/docker-openproject/vars/configuration.yml @@ -9,7 +9,7 @@ ldap: features: matomo: true css: true - portfolio_iframe: false + portfolio_iframe: false ldap: true central_database: true oauth2: true diff --git a/roles/docker-openproject/vars/main.yml b/roles/docker-openproject/vars/main.yml index fd4ecbac..6ba0d86e 100644 --- a/roles/docker-openproject/vars/main.yml +++ b/roles/docker-openproject/vars/main.yml @@ -2,7 +2,8 @@ application_id: "openproject" docker_repository_address: "https://github.com/opf/openproject-deploy" database_type: "postgres" -openproject_plugins_service: "{{docker_compose.directories.services}}plugins/" +openproject_plugins_folder: "{{docker_compose.directories.volumes}}plugins/" + custom_openproject_image: "custom_openproject" # The following volume doesn't have a practcical function. It just exist to prevent the creation of unnecessary anonymous volumes @@ -23,4 +24,4 @@ openproject_filters: users: >- {{ '(memberOf=cn=openproject-users,' ~ ldap.dn.application_roles ~ ')' - if applications[application_id].ldap.filters.users else '' }} \ No newline at end of file + if applications[application_id].ldap.filters.users else '' }} diff --git a/roles/docker-peertube/tasks/main.yml b/roles/docker-peertube/tasks/main.yml index 363e6f91..5f692e0e 100644 --- a/roles/docker-peertube/tasks/main.yml +++ b/roles/docker-peertube/tasks/main.yml @@ -11,8 +11,7 @@ vars: http: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" - name: "Install and activate auth-openid-connect plugin if OIDC is enabled" include_tasks: enable-oidc.yml diff --git a/roles/docker-pgadmin/tasks/main.yml b/roles/docker-pgadmin/tasks/main.yml index a7681798..0768a2b3 100644 --- a/roles/docker-pgadmin/tasks/main.yml +++ b/roles/docker-pgadmin/tasks/main.yml @@ -14,5 +14,4 @@ include_tasks: configuration.yml when: applications[application_id].server_mode | bool -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml \ No newline at end of file +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" \ No newline at end of file diff --git a/roles/docker-phpldapadmin/tasks/main.yml b/roles/docker-phpldapadmin/tasks/main.yml index 811eddaa..501071c1 100644 --- a/roles/docker-phpldapadmin/tasks/main.yml +++ b/roles/docker-phpldapadmin/tasks/main.yml @@ -9,5 +9,4 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/roles/docker-phpmyadmin/tasks/main.yml b/roles/docker-phpmyadmin/tasks/main.yml index be3aa893..312332c3 100644 --- a/roles/docker-phpmyadmin/tasks/main.yml +++ b/roles/docker-phpmyadmin/tasks/main.yml @@ -10,5 +10,4 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/roles/docker-pixelfed/tasks/main.yml b/roles/docker-pixelfed/tasks/main.yml index e64f997c..1e725065 100644 --- a/roles/docker-pixelfed/tasks/main.yml +++ b/roles/docker-pixelfed/tasks/main.yml @@ -10,5 +10,4 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml \ No newline at end of file +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" \ No newline at end of file diff --git a/roles/docker-presentation/tasks/main.yml b/roles/docker-presentation/tasks/main.yml index 00386e37..b49e0382 100644 --- a/roles/docker-presentation/tasks/main.yml +++ b/roles/docker-presentation/tasks/main.yml @@ -26,5 +26,4 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml \ No newline at end of file +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" \ No newline at end of file diff --git a/roles/docker-roulette-wheel/tasks/main.yml b/roles/docker-roulette-wheel/tasks/main.yml index cbe38c5d..8d15ad07 100644 --- a/roles/docker-roulette-wheel/tasks/main.yml +++ b/roles/docker-roulette-wheel/tasks/main.yml @@ -12,10 +12,4 @@ become: true ignore_errors: true -- name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml - notify: docker compose project setup - -- name: add Dockerfile - template: src=Dockerfile.j2 dest={{docker_compose.directories.instance}}Dockerfile - notify: docker compose project setup +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/roles/docker-snipe-it/tasks/main.yml b/roles/docker-snipe-it/tasks/main.yml index f47fc6c2..0443f5d8 100644 --- a/roles/docker-snipe-it/tasks/main.yml +++ b/roles/docker-snipe-it/tasks/main.yml @@ -10,5 +10,4 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/roles/docker-sphinx/tasks/main.yml b/roles/docker-sphinx/tasks/main.yml index e22b611f..7c4aba0e 100644 --- a/roles/docker-sphinx/tasks/main.yml +++ b/roles/docker-sphinx/tasks/main.yml @@ -22,5 +22,4 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml \ No newline at end of file +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" \ No newline at end of file diff --git a/roles/docker-syncope/tasks/main.yml b/roles/docker-syncope/tasks/main.yml index d3c9d025..78b36327 100644 --- a/roles/docker-syncope/tasks/main.yml +++ b/roles/docker-syncope/tasks/main.yml @@ -27,5 +27,4 @@ force: yes notify: docker compose project setup -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/roles/docker-taiga/tasks/main.yml b/roles/docker-taiga/tasks/main.yml index 57f3670f..b296a552 100644 --- a/roles/docker-taiga/tasks/main.yml +++ b/roles/docker-taiga/tasks/main.yml @@ -28,5 +28,4 @@ dest: "{{docker_compose_init}}" notify: docker compose project build and setup -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/roles/docker-wordpress/tasks/main.yml b/roles/docker-wordpress/tasks/main.yml index bb220323..80fcde94 100644 --- a/roles/docker-wordpress/tasks/main.yml +++ b/roles/docker-wordpress/tasks/main.yml @@ -25,14 +25,7 @@ dest: "{{ host_msmtp_conf }}" notify: docker compose project build and setup -- name: "Transfering Dockerfile to {{ docker_compose.directories.instance }}" - copy: - src: Dockerfile - dest: "{{ docker_compose.directories.instance }}Dockerfile" - notify: docker compose project build and setup - -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" - name: "Install wordpress" include_tasks: install.yml diff --git a/roles/docker-wordpress/files/Dockerfile b/roles/docker-wordpress/templates/Dockerfile.j2 similarity index 88% rename from roles/docker-wordpress/files/Dockerfile rename to roles/docker-wordpress/templates/Dockerfile.j2 index b7d9f76b..196a07ca 100644 --- a/roles/docker-wordpress/files/Dockerfile +++ b/roles/docker-wordpress/templates/Dockerfile.j2 @@ -1,4 +1,4 @@ -FROM wordpress +FROM wordpress:{{applications[application_id].version}} # Install msmtp and update system RUN apt-get update && \ diff --git a/roles/docker-yourls/tasks/main.yml b/roles/docker-yourls/tasks/main.yml index f47fc6c2..0443f5d8 100644 --- a/roles/docker-yourls/tasks/main.yml +++ b/roles/docker-yourls/tasks/main.yml @@ -10,5 +10,4 @@ domain: "{{ domains | get_domain(application_id) }}" http_port: "{{ ports.localhost.http[application_id] }}" -- name: "copy docker-compose.yml and env file" - include_tasks: copy-docker-compose-and-env.yml +- include_tasks: "{{ playbook_dir }}/roles/docker-compose/tasks/create-files.yml" diff --git a/tasks/.gitignore b/tasks/.gitignore deleted file mode 100644 index 67ccfec4..00000000 --- a/tasks/.gitignore +++ /dev/null @@ -1 +0,0 @@ -include-docker-roles.yml \ No newline at end of file diff --git a/tasks/TODO.md b/tasks/TODO.md deleted file mode 100644 index 9130b81b..00000000 --- a/tasks/TODO.md +++ /dev/null @@ -1,3 +0,0 @@ -# todo -- Move update-repository-with-files.yml to own role -- Move copy-docker-compose-and-env.yml to own role \ No newline at end of file diff --git a/tasks/copy-docker-compose-and-env.yml b/tasks/copy-docker-compose-and-env.yml deleted file mode 100644 index de4f1c98..00000000 --- a/tasks/copy-docker-compose-and-env.yml +++ /dev/null @@ -1,27 +0,0 @@ -- name: "create {{ docker_compose.files.docker_compose }}" - template: - src: "docker-compose.yml.j2" - dest: "{{ docker_compose.files.docker_compose }}" - notify: docker compose project setup - register: docker_compose_template - -- name: "create {{ docker_compose.files.env }}" - template: - src: "env.j2" - dest: "{{ docker_compose.files.env }}" - mode: '770' - force: yes - notify: docker compose project setup - register: env_template - -- name: "Check if any container is running in {{ docker_compose.directories.instance }}" - command: docker compose ps -q --filter status=running - args: - chdir: "{{ docker_compose.directories.instance }}" - register: docker_ps - changed_when: (docker_ps.stdout | trim) == "" - notify: docker compose project setup - when: not (docker_compose_template.changed or env_template.changed) - -- name: flush docker compose project setup - meta: flush_handlers diff --git a/tasks/constructor.yml b/tasks/plays/01_constructor.yml similarity index 100% rename from tasks/constructor.yml rename to tasks/plays/01_constructor.yml diff --git a/tasks/personal-computer.yml b/tasks/plays/02_personal-computer.yml similarity index 100% rename from tasks/personal-computer.yml rename to tasks/plays/02_personal-computer.yml diff --git a/tasks/server.yml b/tasks/plays/02_server.yml similarity index 94% rename from tasks/server.yml rename to tasks/plays/02_server.yml index a2c042cb..dde3bc4c 100644 --- a/tasks/server.yml +++ b/tasks/plays/02_server.yml @@ -12,7 +12,7 @@ - system-btrfs-auto-balancer - name: "Integrate Docker Role includes" - include_tasks: "include-docker-roles.yml" + include_tasks: "./tasks/utils/docker-roles.yml" # Native Webserver Roles - name: setup nginx-serve-htmls diff --git a/tasks/destructor.yml b/tasks/plays/03_destructor.yml similarity index 100% rename from tasks/destructor.yml rename to tasks/plays/03_destructor.yml diff --git a/tasks/utils/.gitignore b/tasks/utils/.gitignore new file mode 100644 index 00000000..c16affc9 --- /dev/null +++ b/tasks/utils/.gitignore @@ -0,0 +1 @@ +docker-roles.yml \ No newline at end of file diff --git a/tasks/update-repository-with-files.yml b/tasks/utils/update-repository-with-files.yml similarity index 100% rename from tasks/update-repository-with-files.yml rename to tasks/utils/update-repository-with-files.yml