From 5503326ea6f41bfac27e7980f4de556689d0668a Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Tue, 4 Feb 2025 18:14:37 +0100 Subject: [PATCH] Implemented helper role docker-central-database and refactored code --- roles/docker-akaunting/README.md | 2 +- roles/docker-akaunting/tasks/main.yml | 7 +- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-attendize/tasks/main.yml | 5 +- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-baserow/tasks/main.yml | 9 +-- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-bigbluebutton/handlers/main.yml | 4 +- roles/docker-bigbluebutton/tasks/main.yml | 6 +- roles/docker-bigbluebutton/vars/main.yml | 2 +- roles/docker-bluesky/tasks/main.yml | 2 +- roles/docker-bluesky/vars/main.yml | 4 +- roles/docker-central-database/README.md | 71 +++++++++++++++++++ roles/docker-central-database/tasks/main.yml | 19 +++++ .../templates/env/mariadb.env.j2 | 5 ++ .../templates/env/postgres.env.j2 | 4 ++ .../templates}/services/mariadb.yml.j2 | 8 +-- .../templates}/services/postgres.yml.j2 | 7 +- .../docker-central-database/vars/database.yml | 6 ++ roles/docker-compose/handlers/main.yml | 4 +- roles/docker-compose/tasks/main.yml | 18 ++--- roles/docker-compose/vars/docker-compose.yml | 10 +++ roles/docker-discourse/tasks/main.yml | 7 +- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-friendica/tasks/main.yml | 7 +- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-funkwhale/tasks/main.yml | 9 +-- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-gitea/README.md | 4 +- roles/docker-gitea/tasks/main.yml | 7 +- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-gitlab/README.md | 2 +- roles/docker-gitlab/tasks/main.yml | 7 +- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-joomla/tasks/main.yml | 7 +- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-keycloak/tasks/main.yml | 7 +- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-ldap/README.md | 4 +- roles/docker-ldap/tasks/main.yml | 6 +- roles/docker-listmonk/tasks/main.yml | 11 +-- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-mailu/tasks/main.yml | 15 ++-- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-mailu/vars/main.yml | 2 +- roles/docker-mastodon/tasks/main.yml | 11 +-- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-matomo/tasks/main.yml | 7 +- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-matrix-ansible/tasks/main.yml | 18 ++--- roles/docker-matrix-compose/README.md | 2 +- roles/docker-matrix-compose/tasks/main.yml | 33 ++++----- .../templates/docker-compose.yml.j2 | 4 +- roles/docker-mediawiki/tasks/main.yml | 7 +- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-moodle/tasks/main.yml | 7 +- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-mybb/tasks/main.yml | 7 +- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-mybb/vars/main.yml | 2 +- roles/docker-nextcloud/tasks/main.yml | 10 +-- .../templates/docker-compose.yml.j2 | 4 +- roles/docker-oauth2-proxy/tasks/main.yml | 4 +- roles/docker-openproject/README.md | 2 +- roles/docker-openproject/handlers/main.yml | 2 +- roles/docker-openproject/tasks/main.yml | 15 ++-- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-openproject/vars/main.yml | 2 +- roles/docker-peertube/tasks/main.yml | 9 +-- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-phpmyadmin/tasks/main.yml | 2 +- roles/docker-pixelfed/tasks/main.yml | 9 +-- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-portfolio/tasks/main.yml | 6 +- roles/docker-roulette-wheel/tasks/main.yml | 4 +- roles/docker-roulette-wheel/vars/main.yml | 2 +- roles/docker-snipe_it/tasks/main.yml | 9 +-- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-taiga/tasks/main.yml | 5 +- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-wordpress/handlers/main.yml | 2 +- roles/docker-wordpress/tasks/main.yml | 17 ++--- .../templates/docker-compose.yml.j2 | 2 +- roles/docker-yourls/tasks/main.yml | 7 +- .../templates/docker-compose.yml.j2 | 2 +- roles/nginx-docker-cert-deploy/README.md | 4 +- .../files/nginx-docker-cert-deploy.sh | 14 ++-- .../nginx-docker-cert-deploy.service.j2 | 4 +- tasks/docker/compose/database.yml | 11 --- tasks/update-repository-with-files.yml | 12 ++-- vars/docker-database.yml.j2 | 5 -- 91 files changed, 358 insertions(+), 237 deletions(-) create mode 100644 roles/docker-central-database/README.md create mode 100644 roles/docker-central-database/tasks/main.yml create mode 100644 roles/docker-central-database/templates/env/mariadb.env.j2 create mode 100644 roles/docker-central-database/templates/env/postgres.env.j2 rename {templates/docker => roles/docker-central-database/templates}/services/mariadb.yml.j2 (74%) rename {templates/docker => roles/docker-central-database/templates}/services/postgres.yml.j2 (74%) create mode 100644 roles/docker-central-database/vars/database.yml create mode 100644 roles/docker-compose/vars/docker-compose.yml delete mode 100644 tasks/docker/compose/database.yml delete mode 100644 vars/docker-database.yml.j2 diff --git a/roles/docker-akaunting/README.md b/roles/docker-akaunting/README.md index f16dbd54..eb43b6df 100644 --- a/roles/docker-akaunting/README.md +++ b/roles/docker-akaunting/README.md @@ -86,7 +86,7 @@ Detailed steps for backing up your Akaunting instance, including setting manual ### Setting Variables Variables are crucial in configuring your Akaunting setup. Ensure you set the following variables correctly in your environment: -- `docker_compose_instance_directory`: Set this variable to the path where your Docker Compose files for Akaunting are located. +- `docker_compose.directories.instance`: Set this variable to the path where your Docker Compose files for Akaunting are located. - `akaunting_db_password`, `applications.akaunting.version`, `applications.akaunting.company_name`, `applications.akaunting.company_email`, `applications.akaunting.setup_admin_email`, and `akaunting_setup_admin_password`: These should be set in your `.env` files as per your requirements. ### Additional Configuration diff --git a/roles/docker-akaunting/tasks/main.yml b/roles/docker-akaunting/tasks/main.yml index 243a1fef..843a510b 100644 --- a/roles/docker-akaunting/tasks/main.yml +++ b/roles/docker-akaunting/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml @@ -9,5 +10,5 @@ include_tasks: update-repository-with-docker-compose.yml - name: configure run.env - template: src=run.env.j2 dest={{docker_compose_instance_directory}}/env/run.env + template: src=run.env.j2 dest={{docker_compose.directories.instance}}/env/run.env notify: docker compose project setup diff --git a/roles/docker-akaunting/templates/docker-compose.yml.j2 b/roles/docker-akaunting/templates/docker-compose.yml.j2 index ff213954..51c4da01 100644 --- a/roles/docker-akaunting/templates/docker-compose.yml.j2 +++ b/roles/docker-akaunting/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: image: docker.io/akaunting/akaunting:{{applications.akaunting.version}} diff --git a/roles/docker-attendize/tasks/main.yml b/roles/docker-attendize/tasks/main.yml index 94dd5612..48035ded 100644 --- a/roles/docker-attendize/tasks/main.yml +++ b/roles/docker-attendize/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks to receive attendize certbot certificate" include_tasks: recieve-certbot-certificate.yml diff --git a/roles/docker-attendize/templates/docker-compose.yml.j2 b/roles/docker-attendize/templates/docker-compose.yml.j2 index 6c0abdb5..f408a9fb 100644 --- a/roles/docker-attendize/templates/docker-compose.yml.j2 +++ b/roles/docker-attendize/templates/docker-compose.yml.j2 @@ -2,7 +2,7 @@ services: {% include 'templates/docker/services/redis.yml.j2' %} -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} web: image: "attendize_web:{{applications.attendize.version}}" diff --git a/roles/docker-baserow/tasks/main.yml b/roles/docker-baserow/tasks/main.yml index 3507b873..0a618f60 100644 --- a/roles/docker-baserow/tasks/main.yml +++ b/roles/docker-baserow/tasks/main.yml @@ -1,18 +1,19 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml - name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml + template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml notify: docker compose project setup - name: add env template: src: env.j2 - dest: "{{docker_compose_instance_directory}}env" + dest: "{{docker_compose.directories.instance}}env" mode: '770' force: yes notify: docker compose project setup \ No newline at end of file diff --git a/roles/docker-baserow/templates/docker-compose.yml.j2 b/roles/docker-baserow/templates/docker-compose.yml.j2 index 50404baa..d4d09e58 100644 --- a/roles/docker-baserow/templates/docker-compose.yml.j2 +++ b/roles/docker-baserow/templates/docker-compose.yml.j2 @@ -2,7 +2,7 @@ services: {% include 'templates/docker/services/redis.yml.j2' %} -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: image: "baserow/baserow:{{applications.baserow.version}}" diff --git a/roles/docker-bigbluebutton/handlers/main.yml b/roles/docker-bigbluebutton/handlers/main.yml index 2f992eca..945152a6 100644 --- a/roles/docker-bigbluebutton/handlers/main.yml +++ b/roles/docker-bigbluebutton/handlers/main.yml @@ -2,7 +2,7 @@ - name: create docker-compose.yml for bigbluebutton command: cmd: bash ./scripts/generate-compose - chdir: "{{docker_compose_instance_directory}}" + chdir: "{{docker_compose.directories.instance}}" environment: COMPOSE_HTTP_TIMEOUT: 600 DOCKER_CLIENT_TIMEOUT: 600 @@ -63,7 +63,7 @@ command: cmd: docker-compose -p bigbluebutton up -d --force-recreate # Don't use the --build flag here. This leads to bugs - chdir: "{{docker_compose_instance_directory}}" + chdir: "{{docker_compose.directories.instance}}" environment: COMPOSE_HTTP_TIMEOUT: 600 DOCKER_CLIENT_TIMEOUT: 600 diff --git a/roles/docker-bigbluebutton/tasks/main.yml b/roles/docker-bigbluebutton/tasks/main.yml index 446afb8d..6df0343d 100644 --- a/roles/docker-bigbluebutton/tasks/main.yml +++ b/roles/docker-bigbluebutton/tasks/main.yml @@ -27,7 +27,7 @@ - name: pull docker repository git: repo: "https://github.com/bigbluebutton/docker.git" - dest: "{{docker_compose_instance_directory}}" + dest: "{{docker_compose.directories.instance}}" update: yes recursive: yes version: main @@ -35,7 +35,7 @@ ignore_errors: true - name: deploy .env - template: src=env.j2 dest={{docker_compose_instance_directory}}/.env + template: src=env.j2 dest={{docker_compose.directories.instance}}/.env notify: setup bigbluebutton - name: flush docker service @@ -49,7 +49,7 @@ - name: create admin command: cmd: docker compose exec greenlight bundle exec rake admin:create - chdir: "{{docker_compose_instance_directory}}" + chdir: "{{docker_compose.directories.instance}}" when: mode_setup | bool ignore_errors: true register: admin_creation_result diff --git a/roles/docker-bigbluebutton/vars/main.yml b/roles/docker-bigbluebutton/vars/main.yml index 647b41f6..dce3cac9 100644 --- a/roles/docker-bigbluebutton/vars/main.yml +++ b/roles/docker-bigbluebutton/vars/main.yml @@ -1,5 +1,5 @@ application_id: "bigbluebutton" -docker_compose_file: "{{docker_compose_instance_directory}}docker-compose.yml" +docker_compose_file: "{{docker_compose.directories.instance}}docker-compose.yml" database_instance: "bigbluebutton" database_name: "greenlight-v3" database_username: "postgres" diff --git a/roles/docker-bluesky/tasks/main.yml b/roles/docker-bluesky/tasks/main.yml index d606d963..62def9ca 100644 --- a/roles/docker-bluesky/tasks/main.yml +++ b/roles/docker-bluesky/tasks/main.yml @@ -53,5 +53,5 @@ - name: add docker-compose.yml template: src: docker-compose.yml.j2 - dest: "{{docker_compose_instance_directory}}docker-compose.yml" + dest: "{{docker_compose.directories.instance}}docker-compose.yml" notify: docker compose project build and setup diff --git a/roles/docker-bluesky/vars/main.yml b/roles/docker-bluesky/vars/main.yml index ea11d80c..f955c9d4 100644 --- a/roles/docker-bluesky/vars/main.yml +++ b/roles/docker-bluesky/vars/main.yml @@ -1,8 +1,8 @@ application_id: "bluesky" -social_app_path: "{{ docker_compose_instance_directory }}/social-app" +social_app_path: "{{ docker_compose.directories.instance }}/social-app" # This should be removed when the following issue is closed: # https://github.com/bluesky-social/pds/issues/52 -pdsadmin_folder_path: "{{ docker_compose_instance_directory }}/pdsadmin" +pdsadmin_folder_path: "{{ docker_compose.directories.instance }}/pdsadmin" pdsadmin_file_path: "{{pdsadmin_folder_path}}/pdsadmin" pdsadmin_temporary_tar_path: "/tmp/pdsadmin.tar.gz" \ No newline at end of file diff --git a/roles/docker-central-database/README.md b/roles/docker-central-database/README.md new file mode 100644 index 00000000..482b55ec --- /dev/null +++ b/roles/docker-central-database/README.md @@ -0,0 +1,71 @@ +# Database Setup Role πŸš€ + +This Ansible role provides the necessary tasks, files, templates, and variables to set up databases in your Docker Compose environment. It is essential for configuring your application's database, whether using a local or a central instance of **MariaDB** or **PostgreSQL**. + +--- + +## Overview πŸ” + +- **Database Variables** + Defined in [./vars/database.yml](./vars/database.yml), these variables include: + - `database_instance` + - `database_host` + - `database_name` + - `database_username` + - `database_port` + - `database_env` + +- **Tasks** + Located in [./tasks/main.yml](./tasks/main.yml), the tasks perform the following: + - Include the Docker Compose role. + - Load database variables. + - Create the environment file for the chosen database from a template. + - Optionally create a central database (if enabled). + +- **Templates** + - **Environment Files:** + - [PostgreSQL Environment Template](./templates/env/postgres.env.j2) + - [MariaDB Environment Template](./templates/env/mariadb.env.j2) + - **Service Files:** + - [MariaDB Service Template](./templates/services/mariadb.yml.j2) + - [PostgreSQL Service Template](./templates/services/postgres.yml.j2) + +--- + +## Usage πŸ“‹ + +To use this role, include it in your playbook as follows: + +```yaml +- hosts: all + roles: + - your_database_role_name +``` + +When executed, the role will: + +1. Load database configuration variables. +2. Generate the appropriate environment file for the database. +3. Incorporate the Docker Compose routines. +4. Create a central database if `enable_central_database` is set to `true`. + +--- + +## Author + +Developed by [Kevin Veen-Birkenbach](https://www.veen.world/) πŸ’»πŸŒ + +--- + +## Acknowledgments & ChatGPT Conversations πŸ€–πŸ’¬ + +This role was created with the assistance of ChatGPT. The following ChatGPT conversations helped shape the design and implementation of this role: + +- https://chatgpt.com/share/67a23d18-fb54-800f-983c-d6d00752b0b4 +- https://chatgpt.com/share/67a244bb-11e4-800f-980f-5ef0e8b109d7 + +Feel free to explore these discussions for insights into design decisions and implementation details. + +--- + +Happy automating! πŸŽ‰ \ No newline at end of file diff --git a/roles/docker-central-database/tasks/main.yml b/roles/docker-central-database/tasks/main.yml new file mode 100644 index 00000000..5d3d59b1 --- /dev/null +++ b/roles/docker-central-database/tasks/main.yml @@ -0,0 +1,19 @@ +# Docker Routines +- name: "include docker-compose role" + include_role: + name: docker-compose + +# Database Routines +- name: "load variables from {{ role_path }}/vars/database.yml for whole play" + include_vars: "{{ role_path }}/vars/database.yml" + +- name: "create {{database_env}}" + template: + src: "env/{{database_type}}.env.j2" + dest: "{{database_env}}" + notify: docker compose project build and setup + +- name: create central database + include_role: + name: docker-{{database_type}} + when: enable_central_database | bool \ No newline at end of file diff --git a/roles/docker-central-database/templates/env/mariadb.env.j2 b/roles/docker-central-database/templates/env/mariadb.env.j2 new file mode 100644 index 00000000..d68af557 --- /dev/null +++ b/roles/docker-central-database/templates/env/mariadb.env.j2 @@ -0,0 +1,5 @@ +MYSQL_DATABASE="{{database_name}}" +MYSQL_USER="{{database_username}}" +MYSQL_PASSWORD="{{database_password}}" +MYSQL_ROOT_PASSWORD="{{database_password}}" +MARIADB_AUTO_UPGRADE="1" \ No newline at end of file diff --git a/roles/docker-central-database/templates/env/postgres.env.j2 b/roles/docker-central-database/templates/env/postgres.env.j2 new file mode 100644 index 00000000..6633a232 --- /dev/null +++ b/roles/docker-central-database/templates/env/postgres.env.j2 @@ -0,0 +1,4 @@ +POSTGRES_PASSWORD={{database_password}} +POSTGRES_USER={{database_username}} +POSTGRES_DB={{database_name}} +POSTGRES_INITDB_ARGS=--encoding=UTF8 --locale=C \ No newline at end of file diff --git a/templates/docker/services/mariadb.yml.j2 b/roles/docker-central-database/templates/services/mariadb.yml.j2 similarity index 74% rename from templates/docker/services/mariadb.yml.j2 rename to roles/docker-central-database/templates/services/mariadb.yml.j2 index 2bfc57c0..e3265990 100644 --- a/templates/docker/services/mariadb.yml.j2 +++ b/roles/docker-central-database/templates/services/mariadb.yml.j2 @@ -6,12 +6,8 @@ driver: journald image: mariadb restart: {{docker_restart_policy}} - environment: - MYSQL_DATABASE: "{{database_name}}" - MYSQL_USER: "{{database_username}}" - MYSQL_PASSWORD: "{{database_password}}" - MYSQL_ROOT_PASSWORD: "{{database_password}}" - MARIADB_AUTO_UPGRADE: "1" + env_file: + - mein_env_file.env command: "--transaction-isolation=READ-COMMITTED --binlog-format=ROW" volumes: - database:/var/lib/mysql diff --git a/templates/docker/services/postgres.yml.j2 b/roles/docker-central-database/templates/services/postgres.yml.j2 similarity index 74% rename from templates/docker/services/postgres.yml.j2 rename to roles/docker-central-database/templates/services/postgres.yml.j2 index 6e780bd3..731c62b7 100644 --- a/templates/docker/services/postgres.yml.j2 +++ b/roles/docker-central-database/templates/services/postgres.yml.j2 @@ -3,11 +3,8 @@ database: image: postgres:{{applications.postgres.database_version}}-alpine container_name: {{application_id}}-database - environment: - - POSTGRES_PASSWORD={{database_password}} - - POSTGRES_USER={{database_username}} - - POSTGRES_DB={{database_name}} - - POSTGRES_INITDB_ARGS=--encoding=UTF8 --locale=C + env_file: + - {{database_env}} restart: {{docker_restart_policy}} healthcheck: test: ["CMD-SHELL", "pg_isready -U {{database_name}}"] diff --git a/roles/docker-central-database/vars/database.yml b/roles/docker-central-database/vars/database.yml new file mode 100644 index 00000000..568ea101 --- /dev/null +++ b/roles/docker-central-database/vars/database.yml @@ -0,0 +1,6 @@ +database_instance: "{{ 'central-' + database_type if enable_central_database | bool else application_id }}" +database_host: "{{ 'central-' + database_type if enable_central_database | bool else 'database' }}" +database_name: "{{ application_id }}" +database_username: "{{ application_id }}" +database_port: "{{ 3306 if database_type == 'mariadb' else 5432 }}" +database_env: "{{docker_compose.directories.env}}{{database_type}}.env" \ No newline at end of file diff --git a/roles/docker-compose/handlers/main.yml b/roles/docker-compose/handlers/main.yml index 92cec58f..1f70fa2b 100644 --- a/roles/docker-compose/handlers/main.yml +++ b/roles/docker-compose/handlers/main.yml @@ -12,7 +12,7 @@ - name: docker compose project setup command: cmd: docker-compose -p "{{application_id}}" up -d --force-recreate - chdir: "{{docker_compose_instance_directory}}" + chdir: "{{docker_compose.directories.instance}}" environment: COMPOSE_HTTP_TIMEOUT: 600 DOCKER_CLIENT_TIMEOUT: 600 @@ -23,7 +23,7 @@ - name: docker compose project build and setup command: cmd: docker-compose -p "{{application_id}}" up -d --force-recreate --build - chdir: "{{docker_compose_instance_directory}}" + chdir: "{{docker_compose.directories.instance}}" environment: COMPOSE_HTTP_TIMEOUT: 600 DOCKER_CLIENT_TIMEOUT: 600 diff --git a/roles/docker-compose/tasks/main.yml b/roles/docker-compose/tasks/main.yml index 4d72985d..a35f2f62 100644 --- a/roles/docker-compose/tasks/main.yml +++ b/roles/docker-compose/tasks/main.yml @@ -1,6 +1,5 @@ -- name: "Set global docker_compose_instance_directory: {{ path_docker_compose_instances }}{{ application_id }}/" - set_fact: - docker_compose_instance_directory: "{{ path_docker_compose_instances }}{{ application_id }}/" +- name: "load variables from {{ role_path }}/vars/docker-compose.yml for whole play" + include_vars: "{{ role_path }}/vars/docker-compose.yml" - name: "Set global domain based on application_id" set_fact: @@ -12,17 +11,20 @@ http_port: "{{ ports.localhost.http_ports[application_id] if application_id in ports.localhost.http_ports else None }}" # Default case: One port exists. Some applications like matrix don't have an default port -- name: "remove {{ docker_compose_instance_directory }} and all its contents" +- name: "remove {{ docker_compose.directories.instance }} and all its contents" file: - path: "{{ docker_compose_instance_directory }}" + path: "{{ docker_compose.directories.instance }}" state: absent when: mode_reset | bool -- name: "create {{docker_compose_instance_directory}}" +# This could lead to problems in docker-compose directories which are based on a git repository +# @todo Verify that this isn't the case. E.g. in accounting +- name: "Create all docker-compose directories (including parent directories)" file: - path: "{{docker_compose_instance_directory}}" + path: "{{ item.value }}" state: directory - mode: 0755 + mode: '0755' + with_dict: "{{ docker_compose.directories }}" - name: flush docker service meta: flush_handlers diff --git a/roles/docker-compose/vars/docker-compose.yml b/roles/docker-compose/vars/docker-compose.yml new file mode 100644 index 00000000..b1f42816 --- /dev/null +++ b/roles/docker-compose/vars/docker-compose.yml @@ -0,0 +1,10 @@ +# Private variable for role. Please use docker_compose.directories.instance instead +_docker_compose_directories_instance: "{{ path_docker_compose_instances }}{{ application_id }}/" + +# @See https://chatgpt.com/share/67a23d18-fb54-800f-983c-d6d00752b0b4 +docker_compose: + directories: + instance: "{{_docker_compose_directories_instance}}" # Folder for docker-compose.yml file + env: "{{_docker_compose_directories_instance}}/.env/" # Folder for env files + services: "{{_docker_compose_directories_instance}}/services/" # Folder for services + volumes: "{{_docker_compose_directories_instance}}/volumes/" # Folder for volumes diff --git a/roles/docker-discourse/tasks/main.yml b/roles/docker-discourse/tasks/main.yml index 21cf05b6..5776107e 100644 --- a/roles/docker-discourse/tasks/main.yml +++ b/roles/docker-discourse/tasks/main.yml @@ -6,8 +6,9 @@ name: which state: present -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml @@ -21,7 +22,7 @@ - name: add docker-compose.yml template: src: docker-compose.yml.j2 - dest: "{{docker_compose_instance_directory}}docker-compose.yml" + dest: "{{docker_compose.directories.instance}}docker-compose.yml" notify: docker compose project setup - name: flush, to recreate discourse docker compose diff --git a/roles/docker-discourse/templates/docker-compose.yml.j2 b/roles/docker-discourse/templates/docker-compose.yml.j2 index 312b2940..c72b5b86 100644 --- a/roles/docker-discourse/templates/docker-compose.yml.j2 +++ b/roles/docker-discourse/templates/docker-compose.yml.j2 @@ -2,7 +2,7 @@ services: {% include 'templates/docker/services/redis.yml.j2' %} -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} {% include 'templates/docker/compose/volumes.yml.j2' %} redis: diff --git a/roles/docker-friendica/tasks/main.yml b/roles/docker-friendica/tasks/main.yml index 452e6d50..a7b9fc29 100644 --- a/roles/docker-friendica/tasks/main.yml +++ b/roles/docker-friendica/tasks/main.yml @@ -1,10 +1,11 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml - name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml + template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml notify: docker compose project setup diff --git a/roles/docker-friendica/templates/docker-compose.yml.j2 b/roles/docker-friendica/templates/docker-compose.yml.j2 index 485416d4..3db5417c 100644 --- a/roles/docker-friendica/templates/docker-compose.yml.j2 +++ b/roles/docker-friendica/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: image: "friendica:{{applications.friendica.version}}" diff --git a/roles/docker-funkwhale/tasks/main.yml b/roles/docker-funkwhale/tasks/main.yml index d6b645b8..a500fa30 100644 --- a/roles/docker-funkwhale/tasks/main.yml +++ b/roles/docker-funkwhale/tasks/main.yml @@ -1,19 +1,20 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml - name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml + template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml notify: docker compose project setup - name: add .env template: src: env.j2 - dest: "{{docker_compose_instance_directory}}.env" + dest: "{{docker_compose.directories.instance}}.env" mode: '770' force: yes notify: docker compose project setup \ No newline at end of file diff --git a/roles/docker-funkwhale/templates/docker-compose.yml.j2 b/roles/docker-funkwhale/templates/docker-compose.yml.j2 index 96844363..b02ff8e7 100644 --- a/roles/docker-funkwhale/templates/docker-compose.yml.j2 +++ b/roles/docker-funkwhale/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} {% include 'templates/docker/services/redis.yml.j2' %} diff --git a/roles/docker-gitea/README.md b/roles/docker-gitea/README.md index a3218c4e..0527d8ae 100644 --- a/roles/docker-gitea/README.md +++ b/roles/docker-gitea/README.md @@ -2,7 +2,7 @@ ## update ```bash -cd {{docker_compose_instance_directory}} +cd {{docker_compose.directories.instance}} docker-compose down docker-compose pull docker-compose up -d @@ -17,7 +17,7 @@ Keep in mind to track and to don't interrupt the update process until the migrat ## recreate ```bash -cd {{docker_compose_instance_directory}} && docker-compose -p gitea up -d --force-recreate +cd {{docker_compose.directories.instance}} && docker-compose -p gitea up -d --force-recreate ``` ## database access diff --git a/roles/docker-gitea/tasks/main.yml b/roles/docker-gitea/tasks/main.yml index 452e6d50..a7b9fc29 100644 --- a/roles/docker-gitea/tasks/main.yml +++ b/roles/docker-gitea/tasks/main.yml @@ -1,10 +1,11 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml - name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml + template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml notify: docker compose project setup diff --git a/roles/docker-gitea/templates/docker-compose.yml.j2 b/roles/docker-gitea/templates/docker-compose.yml.j2 index 8e24b9a3..30da4972 100644 --- a/roles/docker-gitea/templates/docker-compose.yml.j2 +++ b/roles/docker-gitea/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: logging: diff --git a/roles/docker-gitlab/README.md b/roles/docker-gitlab/README.md index 3639b4cc..62cbbf1b 100644 --- a/roles/docker-gitlab/README.md +++ b/roles/docker-gitlab/README.md @@ -15,7 +15,7 @@ This Ansible role is designed for setting up and managing a GitLab server runnin ## Role Variables Variables are defined in `vars/main.yml`. Key variables include: -- `docker_compose_instance_directory`: Directory for Docker Compose instances. +- `docker_compose.directories.instance`: Directory for Docker Compose instances. - `application_id`, `database_host`, `database_name`, `database_username`, `database_password`: Database configuration variables. ## Handlers diff --git a/roles/docker-gitlab/tasks/main.yml b/roles/docker-gitlab/tasks/main.yml index 452e6d50..a7b9fc29 100644 --- a/roles/docker-gitlab/tasks/main.yml +++ b/roles/docker-gitlab/tasks/main.yml @@ -1,10 +1,11 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml - name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml + template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml notify: docker compose project setup diff --git a/roles/docker-gitlab/templates/docker-compose.yml.j2 b/roles/docker-gitlab/templates/docker-compose.yml.j2 index 167271d1..17db0e41 100644 --- a/roles/docker-gitlab/templates/docker-compose.yml.j2 +++ b/roles/docker-gitlab/templates/docker-compose.yml.j2 @@ -2,7 +2,7 @@ services: {% include 'templates/docker/services/redis.yml.j2' %} -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} web: image: "gitlab/gitlab-ee:{{applications.gitlab.version}}" diff --git a/roles/docker-joomla/tasks/main.yml b/roles/docker-joomla/tasks/main.yml index cb532f68..4a245902 100644 --- a/roles/docker-joomla/tasks/main.yml +++ b/roles/docker-joomla/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml @@ -9,5 +10,5 @@ loop_var: domain - name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml + template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml notify: docker compose project setup \ No newline at end of file diff --git a/roles/docker-joomla/templates/docker-compose.yml.j2 b/roles/docker-joomla/templates/docker-compose.yml.j2 index 7a417eba..e1b612d7 100644 --- a/roles/docker-joomla/templates/docker-compose.yml.j2 +++ b/roles/docker-joomla/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: image: "joomla:{{applications.joomla.version}}" diff --git a/roles/docker-keycloak/tasks/main.yml b/roles/docker-keycloak/tasks/main.yml index 452e6d50..a7b9fc29 100644 --- a/roles/docker-keycloak/tasks/main.yml +++ b/roles/docker-keycloak/tasks/main.yml @@ -1,10 +1,11 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml - name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml + template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml notify: docker compose project setup diff --git a/roles/docker-keycloak/templates/docker-compose.yml.j2 b/roles/docker-keycloak/templates/docker-compose.yml.j2 index ef914687..d89c80a7 100644 --- a/roles/docker-keycloak/templates/docker-compose.yml.j2 +++ b/roles/docker-keycloak/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: image: quay.io/keycloak/keycloak:{{applications.keycloak.version}} diff --git a/roles/docker-ldap/README.md b/roles/docker-ldap/README.md index e0ef9ce1..5c5590bd 100644 --- a/roles/docker-ldap/README.md +++ b/roles/docker-ldap/README.md @@ -35,7 +35,7 @@ This Ansible role provides a streamlined implementation of an LDAP server with T | `application_id` | Name of the Docker Compose project. | `ldap` | | `ldap_root` | Base DN for the LDAP directory. | `dc={{primary_domain_sld}},dc={{primary_domain_tld}}` | | `ldap_admin_dn` | Distinguished Name (DN) for the LDAP administrator. | `cn={{applications.ldap.administrator_username}},{{ldap_root}}` | -| `cert_mount_directory` | Directory to mount SSL/TLS certificates. | `{{docker_compose_instance_directory}}/certs/` | +| `cert_mount_directory` | Directory to mount SSL/TLS certificates. | `{{docker_compose.directories.instance}}/certs/` | | `applications.ldap.administrator_username` | Username for the LDAP admin. | `admin` | | `applications.ldap.administrator_password` | Password for the LDAP admin. | _Required_ | | `applications.ldap.phpldapadmin.version` | Version of phpLDAPadmin Docker image. | `latest` | @@ -70,7 +70,7 @@ Here’s an example playbook to use this role: roles: - role: docker-ldap vars: - docker_compose_instance_directory: "/opt/docker/ldap/" + docker_compose.directories.instance: "/opt/docker/ldap/" primary_domain_sld: "veen" primary_domain_tld: "world" applications.ldap.administrator_username: "administrator" diff --git a/roles/docker-ldap/tasks/main.yml b/roles/docker-ldap/tasks/main.yml index e64477bb..48ba9142 100644 --- a/roles/docker-ldap/tasks/main.yml +++ b/roles/docker-ldap/tasks/main.yml @@ -19,14 +19,14 @@ state: absent when: not applications.ldap.openldap.expose_to_internet | bool -- name: "create {{docker_compose_instance_directory}}" +- name: "create {{docker_compose.directories.instance}}" file: - path: "{{docker_compose_instance_directory}}" + path: "{{docker_compose.directories.instance}}" state: directory mode: 0755 - name: add docker-compose.yml template: src: "docker-compose.yml.j2" - dest: "{{docker_compose_instance_directory}}docker-compose.yml" + dest: "{{docker_compose.directories.instance}}docker-compose.yml" notify: docker compose project setup \ No newline at end of file diff --git a/roles/docker-listmonk/tasks/main.yml b/roles/docker-listmonk/tasks/main.yml index b77eca93..8df90f8d 100644 --- a/roles/docker-listmonk/tasks/main.yml +++ b/roles/docker-listmonk/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: Set nginx_docker_reverse_proxy_extra_configuration based on applications.listmonk.public_api_activated set_fact: @@ -17,13 +18,13 @@ - name: add docker-compose.yml template: src: "docker-compose.yml.j2" - dest: "{{docker_compose_instance_directory}}docker-compose.yml" + dest: "{{docker_compose.directories.instance}}docker-compose.yml" notify: docker compose project setup - name: add config.toml template: src: "config.toml.j2" - dest: "{{docker_compose_instance_directory}}config.toml" + dest: "{{docker_compose.directories.instance}}config.toml" notify: docker compose project setup - name: flush docker service @@ -33,5 +34,5 @@ - name: setup routine for listmonk command: cmd: docker compose run -T --rm application sh -c "yes | ./listmonk --install" - chdir: "{{docker_compose_instance_directory}}" + chdir: "{{docker_compose.directories.instance}}" when: mode_setup |bool \ No newline at end of file diff --git a/roles/docker-listmonk/templates/docker-compose.yml.j2 b/roles/docker-listmonk/templates/docker-compose.yml.j2 index 7e4ae57a..eae59ada 100644 --- a/roles/docker-listmonk/templates/docker-compose.yml.j2 +++ b/roles/docker-listmonk/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: restart: {{docker_restart_policy}} diff --git a/roles/docker-mailu/tasks/main.yml b/roles/docker-mailu/tasks/main.yml index 63bdd395..9b771281 100644 --- a/roles/docker-mailu/tasks/main.yml +++ b/roles/docker-mailu/tasks/main.yml @@ -1,15 +1,16 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml vars: nginx_docker_reverse_proxy_extra_configuration: "client_max_body_size 31M;" -- name: "create {{docker_compose_instance_directory}}" +- name: "create {{docker_compose.directories.instance}}" file: - path: "{{docker_compose_instance_directory}}" + path: "{{docker_compose.directories.instance}}" state: directory mode: 0755 @@ -26,13 +27,13 @@ - name: add docker-compose.yml template: src: "docker-compose.yml.j2" - dest: "{{docker_compose_instance_directory}}docker-compose.yml" + dest: "{{docker_compose.directories.instance}}docker-compose.yml" notify: docker compose project setup - name: add .env template: src: "env.j2" - dest: "{{docker_compose_instance_directory}}.env" + dest: "{{docker_compose.directories.instance}}.env" notify: docker compose project setup - name: flush docker service @@ -42,6 +43,6 @@ - name: execute database migration command: cmd: "docker compose -p mailu exec admin flask mailu admin admin {{primary_domain}} {{mailu_initial_root_password}}" - chdir: "{{docker_compose_instance_directory}}" + chdir: "{{docker_compose.directories.instance}}" ignore_errors: true when: mode_setup |bool \ No newline at end of file diff --git a/roles/docker-mailu/templates/docker-compose.yml.j2 b/roles/docker-mailu/templates/docker-compose.yml.j2 index d487cbfb..bf72cd8b 100644 --- a/roles/docker-mailu/templates/docker-compose.yml.j2 +++ b/roles/docker-mailu/templates/docker-compose.yml.j2 @@ -2,7 +2,7 @@ services: {% include 'templates/docker/services/redis.yml.j2' %} -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} # Core services resolver: diff --git a/roles/docker-mailu/vars/main.yml b/roles/docker-mailu/vars/main.yml index 78b575b6..094dab26 100644 --- a/roles/docker-mailu/vars/main.yml +++ b/roles/docker-mailu/vars/main.yml @@ -1,5 +1,5 @@ application_id: "mailu" database_password: "{{mailu_database_password}}" database_type: "mariadb" -cert_mount_directory: "{{docker_compose_instance_directory}}/certs/" +cert_mount_directory: "{{docker_compose.directories.instance}}/certs/" enable_wildcard_certificate: false \ No newline at end of file diff --git a/roles/docker-mastodon/tasks/main.yml b/roles/docker-mastodon/tasks/main.yml index 6337215b..af7bfcb6 100644 --- a/roles/docker-mastodon/tasks/main.yml +++ b/roles/docker-mastodon/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include create-domains.yml" include_tasks: create-domains.yml @@ -9,13 +10,13 @@ loop_var: domain - name: copy docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml + template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml notify: docker compose project setup - name: copy configuration template: src: .env.production.j2 - dest: "{{docker_compose_instance_directory}}.env.production" + dest: "{{docker_compose.directories.instance}}.env.production" notify: docker compose project setup - name: flush docker service @@ -25,5 +26,5 @@ - name: setup routine for mastodon command: cmd: "docker-compose run --rm web bundle exec rails db:migrate" - chdir: "{{docker_compose_instance_directory}}" + chdir: "{{docker_compose.directories.instance}}" when: mode_setup |bool \ No newline at end of file diff --git a/roles/docker-mastodon/templates/docker-compose.yml.j2 b/roles/docker-mastodon/templates/docker-compose.yml.j2 index c85624e8..2683852c 100644 --- a/roles/docker-mastodon/templates/docker-compose.yml.j2 +++ b/roles/docker-mastodon/templates/docker-compose.yml.j2 @@ -2,7 +2,7 @@ services: {% include 'templates/docker/services/redis.yml.j2' %} -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} web: image: ghcr.io/mastodon/mastodon:{{applications.mastodon.version}} diff --git a/roles/docker-matomo/tasks/main.yml b/roles/docker-matomo/tasks/main.yml index a6cc70e6..4eb7f1d5 100644 --- a/roles/docker-matomo/tasks/main.yml +++ b/roles/docker-matomo/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml @@ -8,5 +9,5 @@ - name: add docker-compose.yml template: src: "docker-compose.yml.j2" - dest: "{{docker_compose_instance_directory}}docker-compose.yml" + dest: "{{docker_compose.directories.instance}}docker-compose.yml" notify: docker compose project setup diff --git a/roles/docker-matomo/templates/docker-compose.yml.j2 b/roles/docker-matomo/templates/docker-compose.yml.j2 index e917cee7..731171a3 100644 --- a/roles/docker-matomo/templates/docker-compose.yml.j2 +++ b/roles/docker-matomo/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: logging: diff --git a/roles/docker-matrix-ansible/tasks/main.yml b/roles/docker-matrix-ansible/tasks/main.yml index 0b12c00e..879cc8b5 100644 --- a/roles/docker-matrix-ansible/tasks/main.yml +++ b/roles/docker-matrix-ansible/tasks/main.yml @@ -95,40 +95,40 @@ -#- name: "create {{docker_compose_instance_directory}}" +#- name: "create {{docker_compose.directories.instance}}" # file: -# path: "{{docker_compose_instance_directory}}" +# path: "{{docker_compose.directories.instance}}" # state: directory # mode: 0755 # -#- name: "create {{docker_compose_instance_directory}}mautrix_whatsapp" +#- name: "create {{docker_compose.directories.instance}}mautrix_whatsapp" # file: -# path: "{{docker_compose_instance_directory}}mautrix_whatsapp" +# path: "{{docker_compose.directories.instance}}mautrix_whatsapp" # state: directory # mode: 0755 # #- name: add whatsapp-bridge-config.yml # template: # src: "whatsapp-bridge-config.yml.j2" -# dest: "{{docker_compose_instance_directory}}mautrix_whatsapp/config.yml" +# dest: "{{docker_compose.directories.instance}}mautrix_whatsapp/config.yml" # notify: recreate matrix # #- name: add element-config.json # template: # src: "element-config.json.j2" -# dest: "{{docker_compose_instance_directory}}element-config.json" +# dest: "{{docker_compose.directories.instance}}element-config.json" # notify: recreate matrix # #- name: add homeserver.yaml # template: # src: "homeserver.yaml.j2" -# dest: "{{docker_compose_instance_directory}}homeserver.yaml" +# dest: "{{docker_compose.directories.instance}}homeserver.yaml" # notify: recreate matrix # #- name: add log.config # template: # src: "log.config.j2" -# dest: "{{docker_compose_instance_directory}}{{domains.matrix_synapse}}.log.config" +# dest: "{{docker_compose.directories.instance}}{{domains.matrix_synapse}}.log.config" # notify: recreate matrix # ## https://github.com/matrix-org/synapse/issues/6303 @@ -139,5 +139,5 @@ #- name: add docker-compose.yml # template: # src: "docker-compose.yml.j2" -# dest: "{{docker_compose_instance_directory}}docker-compose.yml" +# dest: "{{docker_compose.directories.instance}}docker-compose.yml" # notify: recreate matrix diff --git a/roles/docker-matrix-compose/README.md b/roles/docker-matrix-compose/README.md index 854905a4..b9d1991d 100644 --- a/roles/docker-matrix-compose/README.md +++ b/roles/docker-matrix-compose/README.md @@ -12,7 +12,7 @@ Matrix is an open-source project that provides a protocol for secure, decentrali ## Files and Their Functions -1. **`vars/main.yml`**: Defines variables such as `docker_compose_instance_directory`. +1. **`vars/main.yml`**: Defines variables such as `docker_compose.directories.instance`. 2. **`handlers/main.yml`**: Contains handlers like `recreate matrix` for restarting the Matrix service. 3. **`tasks/main.yml`**: Contains main tasks like creating directories and configuration files. 4. **`templates/log.config.j2`**: Template for the Matrix server's logging configuration. diff --git a/roles/docker-matrix-compose/tasks/main.yml b/roles/docker-matrix-compose/tasks/main.yml index 3a136b15..c83be0e5 100644 --- a/roles/docker-matrix-compose/tasks/main.yml +++ b/roles/docker-matrix-compose/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include task certbot-matomo.yml" include_tasks: certbot-matomo.yml @@ -46,16 +47,16 @@ - name: shut down docker compose project command: cmd: docker-compose -p "{{application_id}}" down - chdir: "{{ docker_compose_instance_directory }}" + chdir: "{{ docker_compose.directories.instance }}" - name: "cleanup project folder" file: - path: "{{docker_compose_instance_directory}}mautrix/" + path: "{{docker_compose.directories.instance}}mautrix/" state: absent - name: "create bridge folders" file: - path: "{{docker_compose_instance_directory}}mautrix/{{item.bridge_name}}" + path: "{{docker_compose.directories.instance}}mautrix/{{item.bridge_name}}" state: directory mode: 0755 loop: "{{ bridges }}" @@ -63,26 +64,26 @@ - name: add multiple mautrix bridge configuration template: src: "mautrix/{{item.bridge_name}}.config.yml.j2" - dest: "{{docker_compose_instance_directory}}mautrix/{{item.bridge_name}}/config.yaml" + dest: "{{docker_compose.directories.instance}}mautrix/{{item.bridge_name}}/config.yaml" loop: "{{ bridges }}" notify: docker compose project setup - name: add element configuration template: src: "element.config.json.j2" - dest: "{{docker_compose_instance_directory}}element-config.json" + dest: "{{docker_compose.directories.instance}}element-config.json" notify: docker compose project setup - name: add synapse homeserver configuration template: src: "synapse/homeserver.yaml.j2" - dest: "{{docker_compose_instance_directory}}homeserver.yaml" + dest: "{{docker_compose.directories.instance}}homeserver.yaml" notify: docker compose project setup - name: add synapse log configuration template: src: "synapse/log.config.j2" - dest: "{{docker_compose_instance_directory}}{{domains.matrix_synapse}}.log.config" + dest: "{{docker_compose.directories.instance}}{{domains.matrix_synapse}}.log.config" notify: docker compose project setup # https://github.com/matrix-org/synapse/issues/6303 @@ -93,7 +94,7 @@ - name: add docker-compose.yml template: src: "docker-compose.yml.j2" - dest: "{{docker_compose_instance_directory}}docker-compose.yml" + dest: "{{docker_compose.directories.instance}}docker-compose.yml" notify: docker compose project setup # Pull image when update is wished. @@ -101,13 +102,13 @@ - name: docker compose pull command: cmd: docker-compose -p "{{application_id}}" pull - chdir: "{{docker_compose_instance_directory}}" + chdir: "{{docker_compose.directories.instance}}" when: mode_update | bool - name: docker compose project setup command: cmd: docker-compose -p "{{application_id}}" up -d - chdir: "{{docker_compose_instance_directory}}" + chdir: "{{docker_compose.directories.instance}}" environment: COMPOSE_HTTP_TIMEOUT: 600 DOCKER_CLIENT_TIMEOUT: 600 @@ -118,27 +119,27 @@ - name: wait for registration files wait_for: - path: "{{docker_compose_instance_directory}}mautrix/{{item.bridge_name}}/registration.yaml" + path: "{{docker_compose.directories.instance}}mautrix/{{item.bridge_name}}/registration.yaml" state: present timeout: 120 loop: "{{ bridges }}" - name: "change file permissions" file: - path: "{{docker_compose_instance_directory}}mautrix/{{item.bridge_name}}/registration.yaml" + path: "{{docker_compose.directories.instance}}mautrix/{{item.bridge_name}}/registration.yaml" mode: 0755 loop: "{{ bridges }}" - name: create admin account command: cmd: docker compose exec -it synapse register_new_matrix_user -u {{applications.matrix.administrator_username}} -p {{matrix_admin_password}} -a -c /data/homeserver.yaml http://localhost:8008 - chdir: "{{ docker_compose_instance_directory }}" + chdir: "{{ docker_compose.directories.instance }}" ignore_errors: true when: mode_setup | bool - name: create chatgpt bot command: cmd: docker compose exec -it synapse register_new_matrix_user -u chatgptbot -p {{matrix_chatgpt_bridge_user_password}} -a -c /data/homeserver.yaml http://localhost:8008 - chdir: "{{ docker_compose_instance_directory }}" + chdir: "{{ docker_compose.directories.instance }}" ignore_errors: true when: mode_setup | bool \ No newline at end of file diff --git a/roles/docker-matrix-compose/templates/docker-compose.yml.j2 b/roles/docker-matrix-compose/templates/docker-compose.yml.j2 index eb7630d9..912295c6 100644 --- a/roles/docker-matrix-compose/templates/docker-compose.yml.j2 +++ b/roles/docker-matrix-compose/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} synapse: image: matrixdotorg/synapse:{{applications.matrix.synapse.version}} @@ -13,7 +13,7 @@ services: - ./homeserver.yaml:/data/homeserver.yaml:ro - ./{{domains.matrix_synapse}}.log.config:/data/{{domains.matrix_synapse}}.log.config:ro {% for item in bridges %} - - {{docker_compose_instance_directory}}mautrix/{{item.bridge_name}}/registration.yaml:{{registration_file_folder}}{{item.bridge_name}}.registration.yaml:ro + - {{docker_compose.directories.instance}}mautrix/{{item.bridge_name}}/registration.yaml:{{registration_file_folder}}{{item.bridge_name}}.registration.yaml:ro {% endfor %} environment: - SYNAPSE_SERVER_NAME={{domains.matrix_synapse}} diff --git a/roles/docker-mediawiki/tasks/main.yml b/roles/docker-mediawiki/tasks/main.yml index 452e6d50..a7b9fc29 100644 --- a/roles/docker-mediawiki/tasks/main.yml +++ b/roles/docker-mediawiki/tasks/main.yml @@ -1,10 +1,11 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml - name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml + template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml notify: docker compose project setup diff --git a/roles/docker-mediawiki/templates/docker-compose.yml.j2 b/roles/docker-mediawiki/templates/docker-compose.yml.j2 index 8af44097..67d899e9 100644 --- a/roles/docker-mediawiki/templates/docker-compose.yml.j2 +++ b/roles/docker-mediawiki/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: # Seems like image tag got lost. @todo Check and implement if necessary log_driver: journald diff --git a/roles/docker-moodle/tasks/main.yml b/roles/docker-moodle/tasks/main.yml index a6cc70e6..4eb7f1d5 100644 --- a/roles/docker-moodle/tasks/main.yml +++ b/roles/docker-moodle/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml @@ -8,5 +9,5 @@ - name: add docker-compose.yml template: src: "docker-compose.yml.j2" - dest: "{{docker_compose_instance_directory}}docker-compose.yml" + dest: "{{docker_compose.directories.instance}}docker-compose.yml" notify: docker compose project setup diff --git a/roles/docker-moodle/templates/docker-compose.yml.j2 b/roles/docker-moodle/templates/docker-compose.yml.j2 index e2c28909..8b3e5ad8 100644 --- a/roles/docker-moodle/templates/docker-compose.yml.j2 +++ b/roles/docker-moodle/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} moodle: image: docker.io/bitnami/moodle:{{applications.moodle.version}} ports: diff --git a/roles/docker-mybb/tasks/main.yml b/roles/docker-mybb/tasks/main.yml index 063e0682..3396bbf5 100644 --- a/roles/docker-mybb/tasks/main.yml +++ b/roles/docker-mybb/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks create-proxy-with-domain-replace.yml" include_tasks: create-proxy-with-domain-replace.yml @@ -24,5 +25,5 @@ - name: add docker-compose.yml template: src: "docker-compose.yml.j2" - dest: "{{docker_compose_instance_directory}}docker-compose.yml" + dest: "{{docker_compose.directories.instance}}docker-compose.yml" notify: docker compose project setup diff --git a/roles/docker-mybb/templates/docker-compose.yml.j2 b/roles/docker-mybb/templates/docker-compose.yml.j2 index d5f5dc45..2698be57 100644 --- a/roles/docker-mybb/templates/docker-compose.yml.j2 +++ b/roles/docker-mybb/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: logging: diff --git a/roles/docker-mybb/vars/main.yml b/roles/docker-mybb/vars/main.yml index ff6d678a..d74f8d06 100644 --- a/roles/docker-mybb/vars/main.yml +++ b/roles/docker-mybb/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "mybb" -docker_compose_instance_confd_directory: "{{docker_compose_instance_directory}}conf.d/" +docker_compose_instance_confd_directory: "{{docker_compose.directories.instance}}conf.d/" docker_compose_instance_confd_defaultconf_file: "{{docker_compose_instance_confd_directory}}default.conf" target_mount_conf_d_directory: "{{nginx.directories.http.servers}}" source_domain: "mybb.{{primary_domain}}" diff --git a/roles/docker-nextcloud/tasks/main.yml b/roles/docker-nextcloud/tasks/main.yml index 61e5b78f..78065883 100644 --- a/roles/docker-nextcloud/tasks/main.yml +++ b/roles/docker-nextcloud/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include task certbot-matomo.yml" include_tasks: certbot-matomo.yml @@ -14,15 +15,16 @@ - name: create nginx.conf template: src: "templates/nginx.conf.j2" - dest: "{{docker_compose_instance_directory}}nginx.conf" + dest: "{{docker_compose.directories.volumes}}nginx.conf" notify: docker compose project setup - name: add docker-compose.yml template: src: docker-compose.yml.j2 - dest: "{{docker_compose_instance_directory}}docker-compose.yml" + dest: "{{docker_compose.directories.instance}}docker-compose.yml" notify: docker compose project setup +# @todo activate #- name: Include OIDC-specific tasks if OIDC client is active # include_tasks: oidc_tasks.yml # when: oidc_client_active | bool diff --git a/roles/docker-nextcloud/templates/docker-compose.yml.j2 b/roles/docker-nextcloud/templates/docker-compose.yml.j2 index db764ae9..0dfa56a8 100644 --- a/roles/docker-nextcloud/templates/docker-compose.yml.j2 +++ b/roles/docker-nextcloud/templates/docker-compose.yml.j2 @@ -2,7 +2,7 @@ services: {% include 'templates/docker/services/redis.yml.j2' %} -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: image: "nextcloud:{{applications.nextcloud.version}}-fpm-alpine" @@ -47,7 +47,7 @@ services: ports: - "127.0.0.1:{{http_port}}:80" volumes: - - "{{docker_compose_instance_directory}}/nginx.conf:/etc/nginx/nginx.conf:ro" + - "{{docker_compose.directories.volumes}}nginx.conf:/etc/nginx/nginx.conf:ro" volumes_from: - application healthcheck: diff --git a/roles/docker-oauth2-proxy/tasks/main.yml b/roles/docker-oauth2-proxy/tasks/main.yml index 92a94db0..3263b64c 100644 --- a/roles/docker-oauth2-proxy/tasks/main.yml +++ b/roles/docker-oauth2-proxy/tasks/main.yml @@ -1,6 +1,6 @@ -- name: "Transfering oauth2-proxy-keycloak.cfg.j2 to {{docker_compose_instance_directory}}" +- name: "Transfering oauth2-proxy-keycloak.cfg.j2 to {{docker_compose.directories.instance}}" template: src: oauth2-proxy-keycloak.cfg.j2 - dest: "{{docker_compose_instance_directory}}{{applications.oauth2_proxy.configuration_file}}" + dest: "{{docker_compose.directories.instance}}{{applications.oauth2_proxy.configuration_file}}" notify: - docker compose project setup \ No newline at end of file diff --git a/roles/docker-openproject/README.md b/roles/docker-openproject/README.md index 5e3a1011..34c9a591 100644 --- a/roles/docker-openproject/README.md +++ b/roles/docker-openproject/README.md @@ -16,7 +16,7 @@ This role is designed to deploy the OpenProject application using Docker. It inc The role uses several variables, defined in `vars/main.yml`: - `repository_directory`: The directory for the OpenProject repository. -- `docker_compose_instance_directory`: Directory for Docker Compose instances. +- `docker_compose.directories.instance`: Directory for Docker Compose instances. ## Handlers diff --git a/roles/docker-openproject/handlers/main.yml b/roles/docker-openproject/handlers/main.yml index a0e308ce..11ec478c 100644 --- a/roles/docker-openproject/handlers/main.yml +++ b/roles/docker-openproject/handlers/main.yml @@ -2,7 +2,7 @@ - name: rebuild docker image command: cmd: docker build --no-cache -t custom_openproject . - chdir: "{{docker_compose_instance_directory}}" + chdir: "{{docker_compose.directories.instance}}" environment: COMPOSE_HTTP_TIMEOUT: 600 DOCKER_CLIENT_TIMEOUT: 600 \ No newline at end of file diff --git a/roles/docker-openproject/tasks/main.yml b/roles/docker-openproject/tasks/main.yml index 42e39105..b019e3ca 100644 --- a/roles/docker-openproject/tasks/main.yml +++ b/roles/docker-openproject/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml @@ -8,18 +9,18 @@ - name: "include tasks update-repository-with-docker-compose.yml" include_tasks: update-repository-with-docker-compose.yml -- name: "Transfering Gemfile.plugins to {{docker_compose_instance_directory}}" +- name: "Transfering Gemfile.plugins to {{docker_compose.directories.instance}}" copy: src: Gemfile.plugins - dest: "{{docker_compose_instance_directory}}Gemfile.plugins" + dest: "{{docker_compose.directories.instance}}Gemfile.plugins" notify: - docker compose project setup - rebuild docker image -- name: "Transfering Dockerfile to {{docker_compose_instance_directory}}" +- name: "Transfering Dockerfile to {{docker_compose.directories.instance}}" copy: src: Dockerfile - dest: "{{docker_compose_instance_directory}}Dockerfile" + dest: "{{docker_compose.directories.instance}}Dockerfile" notify: - docker compose project setup - rebuild docker image @@ -33,5 +34,5 @@ - name: "copy .env" template: src: env.j2 - dest: "{{ docker_compose_instance_directory }}.env" + dest: "{{ docker_compose.directories.instance }}.env" notify: docker compose project setup diff --git a/roles/docker-openproject/templates/docker-compose.yml.j2 b/roles/docker-openproject/templates/docker-compose.yml.j2 index 4ab67cd1..a6fad774 100644 --- a/roles/docker-openproject/templates/docker-compose.yml.j2 +++ b/roles/docker-openproject/templates/docker-compose.yml.j2 @@ -20,7 +20,7 @@ x-op-app: &app services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-oauth2-proxy/templates/container.yml.j2' %} diff --git a/roles/docker-openproject/vars/main.yml b/roles/docker-openproject/vars/main.yml index 092daf48..f9444f73 100644 --- a/roles/docker-openproject/vars/main.yml +++ b/roles/docker-openproject/vars/main.yml @@ -1,6 +1,6 @@ application_id: "openproject" repository_directory: "{{ path_docker_compose_instances }}{{application_id}}/" -docker_compose_instance_directory: "{{repository_directory}}compose/" +docker_compose.directories.instance: "{{repository_directory}}compose/" repository_address: "https://github.com/opf/openproject-deploy" database_password: "{{openproject_database_password}}" database_type: "postgres" diff --git a/roles/docker-peertube/tasks/main.yml b/roles/docker-peertube/tasks/main.yml index 92b4ae5e..7391efa9 100644 --- a/roles/docker-peertube/tasks/main.yml +++ b/roles/docker-peertube/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include create-domains.yml" include_tasks: create-domains.yml @@ -9,11 +10,11 @@ loop_var: domain - name: copy docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml + template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml notify: docker compose project setup - name: copy configuration template: src: env.j2 - dest: "{{docker_compose_instance_directory}}.env" + dest: "{{docker_compose.directories.instance}}.env" notify: docker compose project setup diff --git a/roles/docker-peertube/templates/docker-compose.yml.j2 b/roles/docker-peertube/templates/docker-compose.yml.j2 index 7ef4705c..df18658c 100644 --- a/roles/docker-peertube/templates/docker-compose.yml.j2 +++ b/roles/docker-peertube/templates/docker-compose.yml.j2 @@ -2,7 +2,7 @@ services: {% include 'templates/docker/services/redis.yml.j2' %} -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: image: chocobozzz/peertube:production-{{applications.peertube.version}} diff --git a/roles/docker-phpmyadmin/tasks/main.yml b/roles/docker-phpmyadmin/tasks/main.yml index 0354b6d3..25e9de21 100644 --- a/roles/docker-phpmyadmin/tasks/main.yml +++ b/roles/docker-phpmyadmin/tasks/main.yml @@ -9,5 +9,5 @@ - name: add docker-compose.yml template: src: "docker-compose.yml.j2" - dest: "{{docker_compose_instance_directory}}docker-compose.yml" + dest: "{{docker_compose.directories.instance}}docker-compose.yml" notify: docker compose project setup diff --git a/roles/docker-pixelfed/tasks/main.yml b/roles/docker-pixelfed/tasks/main.yml index 22e0125b..5d2c5ba0 100644 --- a/roles/docker-pixelfed/tasks/main.yml +++ b/roles/docker-pixelfed/tasks/main.yml @@ -1,18 +1,19 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml - name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml + template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml notify: docker compose project setup - name: add env template: src: env.j2 - dest: "{{docker_compose_instance_directory}}env" + dest: "{{docker_compose.directories.instance}}env" mode: '770' force: yes notify: docker compose project setup \ No newline at end of file diff --git a/roles/docker-pixelfed/templates/docker-compose.yml.j2 b/roles/docker-pixelfed/templates/docker-compose.yml.j2 index 304d1347..b44283cc 100644 --- a/roles/docker-pixelfed/templates/docker-compose.yml.j2 +++ b/roles/docker-pixelfed/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} {% include 'templates/docker/services/redis.yml.j2' %} diff --git a/roles/docker-portfolio/tasks/main.yml b/roles/docker-portfolio/tasks/main.yml index 223d8aa7..1f644728 100644 --- a/roles/docker-portfolio/tasks/main.yml +++ b/roles/docker-portfolio/tasks/main.yml @@ -9,12 +9,12 @@ - name: "include tasks update-repository-with-docker-compose.yml" include_tasks: update-repository-with-docker-compose.yml -- name: create {{docker_compose_instance_directory}}/app/config.yaml +- name: create {{docker_compose.directories.instance}}/app/config.yaml copy: src: "{{ inventory_dir }}/files/{{ inventory_hostname }}/docker/portfolio/config.yaml" - dest: "{{docker_compose_instance_directory}}/app/config.yaml" + dest: "{{docker_compose.directories.instance}}/app/config.yaml" notify: docker compose project setup - name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml + template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml notify: docker compose project setup diff --git a/roles/docker-roulette-wheel/tasks/main.yml b/roles/docker-roulette-wheel/tasks/main.yml index 272738fb..cbe38c5d 100644 --- a/roles/docker-roulette-wheel/tasks/main.yml +++ b/roles/docker-roulette-wheel/tasks/main.yml @@ -13,9 +13,9 @@ ignore_errors: true - name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}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_instance_directory}}Dockerfile + template: src=Dockerfile.j2 dest={{docker_compose.directories.instance}}Dockerfile notify: docker compose project setup diff --git a/roles/docker-roulette-wheel/vars/main.yml b/roles/docker-roulette-wheel/vars/main.yml index 079fedb7..fe89aeb8 100644 --- a/roles/docker-roulette-wheel/vars/main.yml +++ b/roles/docker-roulette-wheel/vars/main.yml @@ -1,2 +1,2 @@ application_id: "roulette-wheel" -app_path: "{{docker_compose_instance_directory}}/app/" \ No newline at end of file +app_path: "{{docker_compose.directories.instance}}/app/" \ No newline at end of file diff --git a/roles/docker-snipe_it/tasks/main.yml b/roles/docker-snipe_it/tasks/main.yml index 6b8cf4a8..6d88d3d9 100644 --- a/roles/docker-snipe_it/tasks/main.yml +++ b/roles/docker-snipe_it/tasks/main.yml @@ -1,14 +1,15 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml - name: create .env - template: src=env.j2 dest={{docker_compose_instance_directory}}/.env + template: src=env.j2 dest={{docker_compose.directories.instance}}/.env notify: docker compose project setup - name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml + template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml notify: docker compose project setup diff --git a/roles/docker-snipe_it/templates/docker-compose.yml.j2 b/roles/docker-snipe_it/templates/docker-compose.yml.j2 index 85556fef..0a9f0650 100644 --- a/roles/docker-snipe_it/templates/docker-compose.yml.j2 +++ b/roles/docker-snipe_it/templates/docker-compose.yml.j2 @@ -2,7 +2,7 @@ services: {% include 'templates/docker/services/redis.yml.j2' %} -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: image: snipe/snipe-it:${APP_VERSION} diff --git a/roles/docker-taiga/tasks/main.yml b/roles/docker-taiga/tasks/main.yml index 29283caa..b9f2203e 100644 --- a/roles/docker-taiga/tasks/main.yml +++ b/roles/docker-taiga/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml diff --git a/roles/docker-taiga/templates/docker-compose.yml.j2 b/roles/docker-taiga/templates/docker-compose.yml.j2 index 62a85097..3220ef86 100644 --- a/roles/docker-taiga/templates/docker-compose.yml.j2 +++ b/roles/docker-taiga/templates/docker-compose.yml.j2 @@ -36,7 +36,7 @@ x-volumes: # - ./config.py:/taiga-back/settings/config.py services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} taiga-back: restart: {{docker_restart_policy}} logging: diff --git a/roles/docker-wordpress/handlers/main.yml b/roles/docker-wordpress/handlers/main.yml index 52c9fdf9..bcdff04f 100644 --- a/roles/docker-wordpress/handlers/main.yml +++ b/roles/docker-wordpress/handlers/main.yml @@ -2,7 +2,7 @@ - name: rebuild wordpress container command: cmd: docker build --no-cache -t custom_wordpress . - chdir: "{{docker_compose_instance_directory}}" + chdir: "{{docker_compose.directories.instance}}" environment: COMPOSE_HTTP_TIMEOUT: 600 DOCKER_CLIENT_TIMEOUT: 600 \ No newline at end of file diff --git a/roles/docker-wordpress/tasks/main.yml b/roles/docker-wordpress/tasks/main.yml index 482ce014..732e9faf 100644 --- a/roles/docker-wordpress/tasks/main.yml +++ b/roles/docker-wordpress/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml @@ -10,22 +11,22 @@ vars: nginx_docker_reverse_proxy_extra_configuration: "client_max_body_size {{wordpress_max_upload_size}};" -- name: "Transfering upload.ini to {{docker_compose_instance_directory}}" +- name: "Transfering upload.ini to {{docker_compose.directories.instance}}" template: src: upload.ini.j2 - dest: "{{docker_compose_instance_directory}}upload.ini" + dest: "{{docker_compose.directories.instance}}upload.ini" notify: - docker compose project setup - rebuild wordpress container -- name: "Transfering Dockerfile to {{docker_compose_instance_directory}}" +- name: "Transfering Dockerfile to {{docker_compose.directories.instance}}" copy: src: Dockerfile - dest: "{{docker_compose_instance_directory}}Dockerfile" + dest: "{{docker_compose.directories.instance}}Dockerfile" notify: - docker compose project setup - rebuild wordpress container -- name: "add docker-compose.yml to {{docker_compose_instance_directory}}" - template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml +- name: "add docker-compose.yml to {{docker_compose.directories.instance}}" + template: src=docker-compose.yml.j2 dest={{docker_compose.directories.instance}}docker-compose.yml notify: docker compose project setup diff --git a/roles/docker-wordpress/templates/docker-compose.yml.j2 b/roles/docker-wordpress/templates/docker-compose.yml.j2 index 0a5623d5..3b16bfd0 100644 --- a/roles/docker-wordpress/templates/docker-compose.yml.j2 +++ b/roles/docker-wordpress/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: logging: diff --git a/roles/docker-yourls/tasks/main.yml b/roles/docker-yourls/tasks/main.yml index a6cc70e6..4eb7f1d5 100644 --- a/roles/docker-yourls/tasks/main.yml +++ b/roles/docker-yourls/tasks/main.yml @@ -1,6 +1,7 @@ --- -- name: "include docker/compose/database.yml" - include_tasks: docker/compose/database.yml +- name: "include docker-central-database" + include_role: + name: docker-central-database - name: "include tasks nginx-docker-proxy-domain.yml" include_tasks: nginx-docker-proxy-domain.yml @@ -8,5 +9,5 @@ - name: add docker-compose.yml template: src: "docker-compose.yml.j2" - dest: "{{docker_compose_instance_directory}}docker-compose.yml" + dest: "{{docker_compose.directories.instance}}docker-compose.yml" notify: docker compose project setup diff --git a/roles/docker-yourls/templates/docker-compose.yml.j2 b/roles/docker-yourls/templates/docker-compose.yml.j2 index 441bd9fc..1fd887ff 100644 --- a/roles/docker-yourls/templates/docker-compose.yml.j2 +++ b/roles/docker-yourls/templates/docker-compose.yml.j2 @@ -1,6 +1,6 @@ services: -{% include 'templates/docker/services/' + database_type + '.yml.j2' %} +{% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} application: logging: diff --git a/roles/nginx-docker-cert-deploy/README.md b/roles/nginx-docker-cert-deploy/README.md index dfdd9312..e1f0adf6 100644 --- a/roles/nginx-docker-cert-deploy/README.md +++ b/roles/nginx-docker-cert-deploy/README.md @@ -135,12 +135,12 @@ The role includes a **`systemd` service** that runs the deployment script whenev Example `nginx-docker-cert-deploy.service.j2`: ```ini [Unit] -Description=Let's Encrypt deploy to {{docker_compose_instance_directory}} +Description=Let's Encrypt deploy to {{docker_compose.directories.instance}} OnFailure=systemd-notifier.cymais@%n.service [Service] Type=oneshot -ExecStart=/usr/bin/bash {{path_administrator_scripts}}/nginx-docker-cert-deploy.sh {{primary_domain}} {{docker_compose_instance_directory}} +ExecStart=/usr/bin/bash {{path_administrator_scripts}}/nginx-docker-cert-deploy.sh {{primary_domain}} {{docker_compose.directories.instance}} ``` --- diff --git a/roles/nginx-docker-cert-deploy/files/nginx-docker-cert-deploy.sh b/roles/nginx-docker-cert-deploy/files/nginx-docker-cert-deploy.sh index 9334ac85..31bf00c6 100644 --- a/roles/nginx-docker-cert-deploy/files/nginx-docker-cert-deploy.sh +++ b/roles/nginx-docker-cert-deploy/files/nginx-docker-cert-deploy.sh @@ -2,29 +2,29 @@ # Check if the necessary parameters are provided if [ "$#" -ne 2 ]; then - echo "Usage: $0 " + echo "Usage: $0 " exit 1 fi # Assign parameters domain="$1" -docker_compose_instance_directory="$2" +docker_compose.directories.instance="$2" # Copy certificates -cp -RvL "/etc/letsencrypt/live/$domain/"* "$docker_compose_instance_directory/certs" || exit 1 +cp -RvL "/etc/letsencrypt/live/$domain/"* "$docker_compose.directories.instance/certs" || exit 1 # This code is optimized for mailu -cp -v "/etc/letsencrypt/live/$domain/privkey.pem" "$docker_compose_instance_directory/certs/key.pem" || exit 1 -cp -v "/etc/letsencrypt/live/$domain/fullchain.pem" "$docker_compose_instance_directory/certs/cert.pem" || exit 1 +cp -v "/etc/letsencrypt/live/$domain/privkey.pem" "$docker_compose.directories.instance/certs/key.pem" || exit 1 +cp -v "/etc/letsencrypt/live/$domain/fullchain.pem" "$docker_compose.directories.instance/certs/cert.pem" || exit 1 # Set correct reading rights -chmod a+r -v "$docker_compose_instance_directory/certs/"* +chmod a+r -v "$docker_compose.directories.instance/certs/"* # Flag to track if any Nginx reload was successful nginx_reload_successful=false # Reload Nginx in all containers within the Docker Compose setup -cd "$docker_compose_instance_directory" || exit 1 +cd "$docker_compose.directories.instance" || exit 1 # Iterate over all services for service in $(docker compose ps --services); do diff --git a/roles/nginx-docker-cert-deploy/templates/nginx-docker-cert-deploy.service.j2 b/roles/nginx-docker-cert-deploy/templates/nginx-docker-cert-deploy.service.j2 index eb0378b7..5b7d50b7 100644 --- a/roles/nginx-docker-cert-deploy/templates/nginx-docker-cert-deploy.service.j2 +++ b/roles/nginx-docker-cert-deploy/templates/nginx-docker-cert-deploy.service.j2 @@ -1,7 +1,7 @@ [Unit] -Description=Let's Encrypt deploy to {{docker_compose_instance_directory}} +Description=Let's Encrypt deploy to {{docker_compose.directories.instance}} OnFailure=systemd-notifier.cymais@%n.service [Service] Type=oneshot -ExecStart=/usr/bin/bash {{path_administrator_scripts}}/nginx-docker-cert-deploy.sh {{domain}} {{docker_compose_instance_directory}} +ExecStart=/usr/bin/bash {{path_administrator_scripts}}/nginx-docker-cert-deploy.sh {{domain}} {{docker_compose.directories.instance}} diff --git a/tasks/docker/compose/database.yml b/tasks/docker/compose/database.yml deleted file mode 100644 index d33a3640..00000000 --- a/tasks/docker/compose/database.yml +++ /dev/null @@ -1,11 +0,0 @@ -- name: include docker vars/docker-database.yml.j2 - include_vars: vars/docker-database.yml.j2 - -- name: "include docker-compose role" - include_role: - name: docker-compose - -- name: create central database - include_role: - name: docker-{{database_type}} - when: enable_central_database | bool \ No newline at end of file diff --git a/tasks/update-repository-with-files.yml b/tasks/update-repository-with-files.yml index 48d8c5f1..63ad8d6e 100644 --- a/tasks/update-repository-with-files.yml +++ b/tasks/update-repository-with-files.yml @@ -5,9 +5,9 @@ - name: "backup detached files" command: > - mv "{{docker_compose_instance_directory}}{{ item }}" "/tmp/{{application_id}}-{{ item }}.backup" + mv "{{docker_compose.directories.instance}}{{ item }}" "/tmp/{{application_id}}-{{ item }}.backup" args: - removes: "{{docker_compose_instance_directory}}{{ item }}" + removes: "{{docker_compose.directories.instance}}{{ item }}" become: true loop: "{{ merged_detached_files | default(detached_files) }}" @@ -15,20 +15,20 @@ ansible.builtin.shell: git checkout . become: true args: - chdir: "{{docker_compose_instance_directory}}" + chdir: "{{docker_compose.directories.instance}}" ignore_errors: true - name: pull docker repository git: repo: "{{ repository_address }}" - dest: "{{ repository_directory | default(docker_compose_instance_directory) }}" + dest: "{{ repository_directory | default(docker_compose.directories.instance) }}" update: yes notify: docker compose project setup become: true - name: "restore detached files" command: > - mv "/tmp/{{application_id}}-{{ item }}.backup" "{{docker_compose_instance_directory}}{{ item }}" + mv "/tmp/{{application_id}}-{{ item }}.backup" "{{docker_compose.directories.instance}}{{ item }}" args: removes: "/tmp/{{application_id}}-{{ item }}.backup" become: true @@ -37,6 +37,6 @@ - name: "copy {{ detached_files }} templates to server" template: src: "{{ item }}.j2" - dest: "{{docker_compose_instance_directory}}{{ item }}" + dest: "{{docker_compose.directories.instance}}{{ item }}" loop: "{{ detached_files }}" notify: docker compose project setup diff --git a/vars/docker-database.yml.j2 b/vars/docker-database.yml.j2 deleted file mode 100644 index ddfc48c8..00000000 --- a/vars/docker-database.yml.j2 +++ /dev/null @@ -1,5 +0,0 @@ -database_instance: "{{ 'central-' + database_type if enable_central_database | bool else application_id }}" -database_host: "{{ 'central-' + database_type if enable_central_database | bool else 'database' }}" -database_name: "{{ application_id }}" -database_username: "{{ application_id }}" -database_port: "{{ 3306 if database_type == 'mariadb' else 5432 }}" \ No newline at end of file