Implemented helper role docker-central-database and refactored code

This commit is contained in:
Kevin Veen-Birkenbach 2025-02-04 18:14:37 +01:00
parent cb6a42e97d
commit 5503326ea6
91 changed files with 358 additions and 237 deletions

View File

@ -86,7 +86,7 @@ Detailed steps for backing up your Akaunting instance, including setting manual
### Setting Variables ### Setting Variables
Variables are crucial in configuring your Akaunting setup. Ensure you set the following variables correctly in your environment: 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. - `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 ### Additional Configuration

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
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 include_tasks: update-repository-with-docker-compose.yml
- name: configure run.env - 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 notify: docker compose project setup

View File

@ -1,6 +1,6 @@
services: services:
{% include 'templates/docker/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
application: application:
image: docker.io/akaunting/akaunting:{{applications.akaunting.version}} image: docker.io/akaunting/akaunting:{{applications.akaunting.version}}

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks to receive attendize certbot certificate" - name: "include tasks to receive attendize certbot certificate"
include_tasks: recieve-certbot-certificate.yml include_tasks: recieve-certbot-certificate.yml

View File

@ -2,7 +2,7 @@ services:
{% include 'templates/docker/services/redis.yml.j2' %} {% 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: web:
image: "attendize_web:{{applications.attendize.version}}" image: "attendize_web:{{applications.attendize.version}}"

View File

@ -1,18 +1,19 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: add docker-compose.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 notify: docker compose project setup
- name: add env - name: add env
template: template:
src: env.j2 src: env.j2
dest: "{{docker_compose_instance_directory}}env" dest: "{{docker_compose.directories.instance}}env"
mode: '770' mode: '770'
force: yes force: yes
notify: docker compose project setup notify: docker compose project setup

View File

@ -2,7 +2,7 @@ services:
{% include 'templates/docker/services/redis.yml.j2' %} {% 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: application:
image: "baserow/baserow:{{applications.baserow.version}}" image: "baserow/baserow:{{applications.baserow.version}}"

View File

@ -2,7 +2,7 @@
- name: create docker-compose.yml for bigbluebutton - name: create docker-compose.yml for bigbluebutton
command: command:
cmd: bash ./scripts/generate-compose cmd: bash ./scripts/generate-compose
chdir: "{{docker_compose_instance_directory}}" chdir: "{{docker_compose.directories.instance}}"
environment: environment:
COMPOSE_HTTP_TIMEOUT: 600 COMPOSE_HTTP_TIMEOUT: 600
DOCKER_CLIENT_TIMEOUT: 600 DOCKER_CLIENT_TIMEOUT: 600
@ -63,7 +63,7 @@
command: command:
cmd: docker-compose -p bigbluebutton up -d --force-recreate cmd: docker-compose -p bigbluebutton up -d --force-recreate
# Don't use the --build flag here. This leads to bugs # Don't use the --build flag here. This leads to bugs
chdir: "{{docker_compose_instance_directory}}" chdir: "{{docker_compose.directories.instance}}"
environment: environment:
COMPOSE_HTTP_TIMEOUT: 600 COMPOSE_HTTP_TIMEOUT: 600
DOCKER_CLIENT_TIMEOUT: 600 DOCKER_CLIENT_TIMEOUT: 600

View File

@ -27,7 +27,7 @@
- name: pull docker repository - name: pull docker repository
git: git:
repo: "https://github.com/bigbluebutton/docker.git" repo: "https://github.com/bigbluebutton/docker.git"
dest: "{{docker_compose_instance_directory}}" dest: "{{docker_compose.directories.instance}}"
update: yes update: yes
recursive: yes recursive: yes
version: main version: main
@ -35,7 +35,7 @@
ignore_errors: true ignore_errors: true
- name: deploy .env - 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 notify: setup bigbluebutton
- name: flush docker service - name: flush docker service
@ -49,7 +49,7 @@
- name: create admin - name: create admin
command: command:
cmd: docker compose exec greenlight bundle exec rake admin:create cmd: docker compose exec greenlight bundle exec rake admin:create
chdir: "{{docker_compose_instance_directory}}" chdir: "{{docker_compose.directories.instance}}"
when: mode_setup | bool when: mode_setup | bool
ignore_errors: true ignore_errors: true
register: admin_creation_result register: admin_creation_result

View File

@ -1,5 +1,5 @@
application_id: "bigbluebutton" 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_instance: "bigbluebutton"
database_name: "greenlight-v3" database_name: "greenlight-v3"
database_username: "postgres" database_username: "postgres"

View File

@ -53,5 +53,5 @@
- name: add docker-compose.yml - name: add docker-compose.yml
template: template:
src: docker-compose.yml.j2 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 notify: docker compose project build and setup

View File

@ -1,8 +1,8 @@
application_id: "bluesky" 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: # This should be removed when the following issue is closed:
# https://github.com/bluesky-social/pds/issues/52 # 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_file_path: "{{pdsadmin_folder_path}}/pdsadmin"
pdsadmin_temporary_tar_path: "/tmp/pdsadmin.tar.gz" pdsadmin_temporary_tar_path: "/tmp/pdsadmin.tar.gz"

View File

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

View File

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

View File

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

View File

@ -0,0 +1,4 @@
POSTGRES_PASSWORD={{database_password}}
POSTGRES_USER={{database_username}}
POSTGRES_DB={{database_name}}
POSTGRES_INITDB_ARGS=--encoding=UTF8 --locale=C

View File

@ -6,12 +6,8 @@
driver: journald driver: journald
image: mariadb image: mariadb
restart: {{docker_restart_policy}} restart: {{docker_restart_policy}}
environment: env_file:
MYSQL_DATABASE: "{{database_name}}" - mein_env_file.env
MYSQL_USER: "{{database_username}}"
MYSQL_PASSWORD: "{{database_password}}"
MYSQL_ROOT_PASSWORD: "{{database_password}}"
MARIADB_AUTO_UPGRADE: "1"
command: "--transaction-isolation=READ-COMMITTED --binlog-format=ROW" command: "--transaction-isolation=READ-COMMITTED --binlog-format=ROW"
volumes: volumes:
- database:/var/lib/mysql - database:/var/lib/mysql

View File

@ -3,11 +3,8 @@
database: database:
image: postgres:{{applications.postgres.database_version}}-alpine image: postgres:{{applications.postgres.database_version}}-alpine
container_name: {{application_id}}-database container_name: {{application_id}}-database
environment: env_file:
- POSTGRES_PASSWORD={{database_password}} - {{database_env}}
- POSTGRES_USER={{database_username}}
- POSTGRES_DB={{database_name}}
- POSTGRES_INITDB_ARGS=--encoding=UTF8 --locale=C
restart: {{docker_restart_policy}} restart: {{docker_restart_policy}}
healthcheck: healthcheck:
test: ["CMD-SHELL", "pg_isready -U {{database_name}}"] test: ["CMD-SHELL", "pg_isready -U {{database_name}}"]

View File

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

View File

@ -12,7 +12,7 @@
- name: docker compose project setup - name: docker compose project setup
command: command:
cmd: docker-compose -p "{{application_id}}" up -d --force-recreate cmd: docker-compose -p "{{application_id}}" up -d --force-recreate
chdir: "{{docker_compose_instance_directory}}" chdir: "{{docker_compose.directories.instance}}"
environment: environment:
COMPOSE_HTTP_TIMEOUT: 600 COMPOSE_HTTP_TIMEOUT: 600
DOCKER_CLIENT_TIMEOUT: 600 DOCKER_CLIENT_TIMEOUT: 600
@ -23,7 +23,7 @@
- name: docker compose project build and setup - name: docker compose project build and setup
command: command:
cmd: docker-compose -p "{{application_id}}" up -d --force-recreate --build cmd: docker-compose -p "{{application_id}}" up -d --force-recreate --build
chdir: "{{docker_compose_instance_directory}}" chdir: "{{docker_compose.directories.instance}}"
environment: environment:
COMPOSE_HTTP_TIMEOUT: 600 COMPOSE_HTTP_TIMEOUT: 600
DOCKER_CLIENT_TIMEOUT: 600 DOCKER_CLIENT_TIMEOUT: 600

View File

@ -1,6 +1,5 @@
- name: "Set global docker_compose_instance_directory: {{ path_docker_compose_instances }}{{ application_id }}/" - name: "load variables from {{ role_path }}/vars/docker-compose.yml for whole play"
set_fact: include_vars: "{{ role_path }}/vars/docker-compose.yml"
docker_compose_instance_directory: "{{ path_docker_compose_instances }}{{ application_id }}/"
- name: "Set global domain based on application_id" - name: "Set global domain based on application_id"
set_fact: set_fact:
@ -12,17 +11,20 @@
http_port: "{{ ports.localhost.http_ports[application_id] if application_id in ports.localhost.http_ports else None }}" 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 # 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: file:
path: "{{ docker_compose_instance_directory }}" path: "{{ docker_compose.directories.instance }}"
state: absent state: absent
when: mode_reset | bool 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: file:
path: "{{docker_compose_instance_directory}}" path: "{{ item.value }}"
state: directory state: directory
mode: 0755 mode: '0755'
with_dict: "{{ docker_compose.directories }}"
- name: flush docker service - name: flush docker service
meta: flush_handlers meta: flush_handlers

View File

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

View File

@ -6,8 +6,9 @@
name: which name: which
state: present state: present
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
@ -21,7 +22,7 @@
- name: add docker-compose.yml - name: add docker-compose.yml
template: template:
src: docker-compose.yml.j2 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 notify: docker compose project setup
- name: flush, to recreate discourse docker compose - name: flush, to recreate discourse docker compose

View File

@ -2,7 +2,7 @@ services:
{% include 'templates/docker/services/redis.yml.j2' %} {% 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' %} {% include 'templates/docker/compose/volumes.yml.j2' %}
redis: redis:

View File

@ -1,10 +1,11 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: add docker-compose.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 notify: docker compose project setup

View File

@ -1,6 +1,6 @@
services: services:
{% include 'templates/docker/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
application: application:
image: "friendica:{{applications.friendica.version}}" image: "friendica:{{applications.friendica.version}}"

View File

@ -1,19 +1,20 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: add docker-compose.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 notify: docker compose project setup
- name: add .env - name: add .env
template: template:
src: env.j2 src: env.j2
dest: "{{docker_compose_instance_directory}}.env" dest: "{{docker_compose.directories.instance}}.env"
mode: '770' mode: '770'
force: yes force: yes
notify: docker compose project setup notify: docker compose project setup

View File

@ -1,6 +1,6 @@
services: 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' %} {% include 'templates/docker/services/redis.yml.j2' %}

View File

@ -2,7 +2,7 @@
## update ## update
```bash ```bash
cd {{docker_compose_instance_directory}} cd {{docker_compose.directories.instance}}
docker-compose down docker-compose down
docker-compose pull docker-compose pull
docker-compose up -d 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 ## recreate
```bash ```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 ## database access

View File

@ -1,10 +1,11 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: add docker-compose.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 notify: docker compose project setup

View File

@ -1,6 +1,6 @@
services: services:
{% include 'templates/docker/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
application: application:
logging: logging:

View File

@ -15,7 +15,7 @@ This Ansible role is designed for setting up and managing a GitLab server runnin
## Role Variables ## Role Variables
Variables are defined in `vars/main.yml`. Key variables include: 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. - `application_id`, `database_host`, `database_name`, `database_username`, `database_password`: Database configuration variables.
## Handlers ## Handlers

View File

@ -1,10 +1,11 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: add docker-compose.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 notify: docker compose project setup

View File

@ -2,7 +2,7 @@ services:
{% include 'templates/docker/services/redis.yml.j2' %} {% 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: web:
image: "gitlab/gitlab-ee:{{applications.gitlab.version}}" image: "gitlab/gitlab-ee:{{applications.gitlab.version}}"

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
@ -9,5 +10,5 @@
loop_var: domain loop_var: domain
- name: add docker-compose.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 notify: docker compose project setup

View File

@ -1,6 +1,6 @@
services: services:
{% include 'templates/docker/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
application: application:
image: "joomla:{{applications.joomla.version}}" image: "joomla:{{applications.joomla.version}}"

View File

@ -1,10 +1,11 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: add docker-compose.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 notify: docker compose project setup

View File

@ -1,6 +1,6 @@
services: services:
{% include 'templates/docker/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
application: application:
image: quay.io/keycloak/keycloak:{{applications.keycloak.version}} image: quay.io/keycloak/keycloak:{{applications.keycloak.version}}

View File

@ -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` | | `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_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}}` | | `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_username` | Username for the LDAP admin. | `admin` |
| `applications.ldap.administrator_password` | Password for the LDAP admin. | _Required_ | | `applications.ldap.administrator_password` | Password for the LDAP admin. | _Required_ |
| `applications.ldap.phpldapadmin.version` | Version of phpLDAPadmin Docker image. | `latest` | | `applications.ldap.phpldapadmin.version` | Version of phpLDAPadmin Docker image. | `latest` |
@ -70,7 +70,7 @@ Heres an example playbook to use this role:
roles: roles:
- role: docker-ldap - role: docker-ldap
vars: vars:
docker_compose_instance_directory: "/opt/docker/ldap/" docker_compose.directories.instance: "/opt/docker/ldap/"
primary_domain_sld: "veen" primary_domain_sld: "veen"
primary_domain_tld: "world" primary_domain_tld: "world"
applications.ldap.administrator_username: "administrator" applications.ldap.administrator_username: "administrator"

View File

@ -19,14 +19,14 @@
state: absent state: absent
when: not applications.ldap.openldap.expose_to_internet | bool when: not applications.ldap.openldap.expose_to_internet | bool
- name: "create {{docker_compose_instance_directory}}" - name: "create {{docker_compose.directories.instance}}"
file: file:
path: "{{docker_compose_instance_directory}}" path: "{{docker_compose.directories.instance}}"
state: directory state: directory
mode: 0755 mode: 0755
- name: add docker-compose.yml - name: add docker-compose.yml
template: template:
src: "docker-compose.yml.j2" 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 notify: docker compose project setup

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: Set nginx_docker_reverse_proxy_extra_configuration based on applications.listmonk.public_api_activated - name: Set nginx_docker_reverse_proxy_extra_configuration based on applications.listmonk.public_api_activated
set_fact: set_fact:
@ -17,13 +18,13 @@
- name: add docker-compose.yml - name: add docker-compose.yml
template: template:
src: "docker-compose.yml.j2" 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 notify: docker compose project setup
- name: add config.toml - name: add config.toml
template: template:
src: "config.toml.j2" src: "config.toml.j2"
dest: "{{docker_compose_instance_directory}}config.toml" dest: "{{docker_compose.directories.instance}}config.toml"
notify: docker compose project setup notify: docker compose project setup
- name: flush docker service - name: flush docker service
@ -33,5 +34,5 @@
- name: setup routine for listmonk - name: setup routine for listmonk
command: command:
cmd: docker compose run -T --rm application sh -c "yes | ./listmonk --install" 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 when: mode_setup |bool

View File

@ -1,6 +1,6 @@
services: services:
{% include 'templates/docker/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
application: application:
restart: {{docker_restart_policy}} restart: {{docker_restart_policy}}

View File

@ -1,15 +1,16 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
vars: vars:
nginx_docker_reverse_proxy_extra_configuration: "client_max_body_size 31M;" nginx_docker_reverse_proxy_extra_configuration: "client_max_body_size 31M;"
- name: "create {{docker_compose_instance_directory}}" - name: "create {{docker_compose.directories.instance}}"
file: file:
path: "{{docker_compose_instance_directory}}" path: "{{docker_compose.directories.instance}}"
state: directory state: directory
mode: 0755 mode: 0755
@ -26,13 +27,13 @@
- name: add docker-compose.yml - name: add docker-compose.yml
template: template:
src: "docker-compose.yml.j2" 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 notify: docker compose project setup
- name: add .env - name: add .env
template: template:
src: "env.j2" src: "env.j2"
dest: "{{docker_compose_instance_directory}}.env" dest: "{{docker_compose.directories.instance}}.env"
notify: docker compose project setup notify: docker compose project setup
- name: flush docker service - name: flush docker service
@ -42,6 +43,6 @@
- name: execute database migration - name: execute database migration
command: command:
cmd: "docker compose -p mailu exec admin flask mailu admin admin {{primary_domain}} {{mailu_initial_root_password}}" 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 ignore_errors: true
when: mode_setup |bool when: mode_setup |bool

View File

@ -2,7 +2,7 @@ services:
{% include 'templates/docker/services/redis.yml.j2' %} {% 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 # Core services
resolver: resolver:

View File

@ -1,5 +1,5 @@
application_id: "mailu" application_id: "mailu"
database_password: "{{mailu_database_password}}" database_password: "{{mailu_database_password}}"
database_type: "mariadb" database_type: "mariadb"
cert_mount_directory: "{{docker_compose_instance_directory}}/certs/" cert_mount_directory: "{{docker_compose.directories.instance}}/certs/"
enable_wildcard_certificate: false enable_wildcard_certificate: false

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include create-domains.yml" - name: "include create-domains.yml"
include_tasks: create-domains.yml include_tasks: create-domains.yml
@ -9,13 +10,13 @@
loop_var: domain loop_var: domain
- name: copy docker-compose.yml - 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 notify: docker compose project setup
- name: copy configuration - name: copy configuration
template: template:
src: .env.production.j2 src: .env.production.j2
dest: "{{docker_compose_instance_directory}}.env.production" dest: "{{docker_compose.directories.instance}}.env.production"
notify: docker compose project setup notify: docker compose project setup
- name: flush docker service - name: flush docker service
@ -25,5 +26,5 @@
- name: setup routine for mastodon - name: setup routine for mastodon
command: command:
cmd: "docker-compose run --rm web bundle exec rails db:migrate" 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 when: mode_setup |bool

View File

@ -2,7 +2,7 @@ services:
{% include 'templates/docker/services/redis.yml.j2' %} {% 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: web:
image: ghcr.io/mastodon/mastodon:{{applications.mastodon.version}} image: ghcr.io/mastodon/mastodon:{{applications.mastodon.version}}

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
@ -8,5 +9,5 @@
- name: add docker-compose.yml - name: add docker-compose.yml
template: template:
src: "docker-compose.yml.j2" 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 notify: docker compose project setup

View File

@ -1,6 +1,6 @@
services: services:
{% include 'templates/docker/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
application: application:
logging: logging:

View File

@ -95,40 +95,40 @@
#- name: "create {{docker_compose_instance_directory}}" #- name: "create {{docker_compose.directories.instance}}"
# file: # file:
# path: "{{docker_compose_instance_directory}}" # path: "{{docker_compose.directories.instance}}"
# state: directory # state: directory
# mode: 0755 # mode: 0755
# #
#- name: "create {{docker_compose_instance_directory}}mautrix_whatsapp" #- name: "create {{docker_compose.directories.instance}}mautrix_whatsapp"
# file: # file:
# path: "{{docker_compose_instance_directory}}mautrix_whatsapp" # path: "{{docker_compose.directories.instance}}mautrix_whatsapp"
# state: directory # state: directory
# mode: 0755 # mode: 0755
# #
#- name: add whatsapp-bridge-config.yml #- name: add whatsapp-bridge-config.yml
# template: # template:
# src: "whatsapp-bridge-config.yml.j2" # 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 # notify: recreate matrix
# #
#- name: add element-config.json #- name: add element-config.json
# template: # template:
# src: "element-config.json.j2" # src: "element-config.json.j2"
# dest: "{{docker_compose_instance_directory}}element-config.json" # dest: "{{docker_compose.directories.instance}}element-config.json"
# notify: recreate matrix # notify: recreate matrix
# #
#- name: add homeserver.yaml #- name: add homeserver.yaml
# template: # template:
# src: "homeserver.yaml.j2" # src: "homeserver.yaml.j2"
# dest: "{{docker_compose_instance_directory}}homeserver.yaml" # dest: "{{docker_compose.directories.instance}}homeserver.yaml"
# notify: recreate matrix # notify: recreate matrix
# #
#- name: add log.config #- name: add log.config
# template: # template:
# src: "log.config.j2" # 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 # notify: recreate matrix
# #
## https://github.com/matrix-org/synapse/issues/6303 ## https://github.com/matrix-org/synapse/issues/6303
@ -139,5 +139,5 @@
#- name: add docker-compose.yml #- name: add docker-compose.yml
# template: # template:
# src: "docker-compose.yml.j2" # src: "docker-compose.yml.j2"
# dest: "{{docker_compose_instance_directory}}docker-compose.yml" # dest: "{{docker_compose.directories.instance}}docker-compose.yml"
# notify: recreate matrix # notify: recreate matrix

View File

@ -12,7 +12,7 @@ Matrix is an open-source project that provides a protocol for secure, decentrali
## Files and Their Functions ## 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. 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. 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. 4. **`templates/log.config.j2`**: Template for the Matrix server's logging configuration.

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include task certbot-matomo.yml" - name: "include task certbot-matomo.yml"
include_tasks: certbot-matomo.yml include_tasks: certbot-matomo.yml
@ -46,16 +47,16 @@
- name: shut down docker compose project - name: shut down docker compose project
command: command:
cmd: docker-compose -p "{{application_id}}" down cmd: docker-compose -p "{{application_id}}" down
chdir: "{{ docker_compose_instance_directory }}" chdir: "{{ docker_compose.directories.instance }}"
- name: "cleanup project folder" - name: "cleanup project folder"
file: file:
path: "{{docker_compose_instance_directory}}mautrix/" path: "{{docker_compose.directories.instance}}mautrix/"
state: absent state: absent
- name: "create bridge folders" - name: "create bridge folders"
file: file:
path: "{{docker_compose_instance_directory}}mautrix/{{item.bridge_name}}" path: "{{docker_compose.directories.instance}}mautrix/{{item.bridge_name}}"
state: directory state: directory
mode: 0755 mode: 0755
loop: "{{ bridges }}" loop: "{{ bridges }}"
@ -63,26 +64,26 @@
- name: add multiple mautrix bridge configuration - name: add multiple mautrix bridge configuration
template: template:
src: "mautrix/{{item.bridge_name}}.config.yml.j2" 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 }}" loop: "{{ bridges }}"
notify: docker compose project setup notify: docker compose project setup
- name: add element configuration - name: add element configuration
template: template:
src: "element.config.json.j2" 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 notify: docker compose project setup
- name: add synapse homeserver configuration - name: add synapse homeserver configuration
template: template:
src: "synapse/homeserver.yaml.j2" src: "synapse/homeserver.yaml.j2"
dest: "{{docker_compose_instance_directory}}homeserver.yaml" dest: "{{docker_compose.directories.instance}}homeserver.yaml"
notify: docker compose project setup notify: docker compose project setup
- name: add synapse log configuration - name: add synapse log configuration
template: template:
src: "synapse/log.config.j2" 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 notify: docker compose project setup
# https://github.com/matrix-org/synapse/issues/6303 # https://github.com/matrix-org/synapse/issues/6303
@ -93,7 +94,7 @@
- name: add docker-compose.yml - name: add docker-compose.yml
template: template:
src: "docker-compose.yml.j2" 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 notify: docker compose project setup
# Pull image when update is wished. # Pull image when update is wished.
@ -101,13 +102,13 @@
- name: docker compose pull - name: docker compose pull
command: command:
cmd: docker-compose -p "{{application_id}}" pull cmd: docker-compose -p "{{application_id}}" pull
chdir: "{{docker_compose_instance_directory}}" chdir: "{{docker_compose.directories.instance}}"
when: mode_update | bool when: mode_update | bool
- name: docker compose project setup - name: docker compose project setup
command: command:
cmd: docker-compose -p "{{application_id}}" up -d cmd: docker-compose -p "{{application_id}}" up -d
chdir: "{{docker_compose_instance_directory}}" chdir: "{{docker_compose.directories.instance}}"
environment: environment:
COMPOSE_HTTP_TIMEOUT: 600 COMPOSE_HTTP_TIMEOUT: 600
DOCKER_CLIENT_TIMEOUT: 600 DOCKER_CLIENT_TIMEOUT: 600
@ -118,27 +119,27 @@
- name: wait for registration files - name: wait for registration files
wait_for: 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 state: present
timeout: 120 timeout: 120
loop: "{{ bridges }}" loop: "{{ bridges }}"
- name: "change file permissions" - name: "change file permissions"
file: 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 mode: 0755
loop: "{{ bridges }}" loop: "{{ bridges }}"
- name: create admin account - name: create admin account
command: 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 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 ignore_errors: true
when: mode_setup | bool when: mode_setup | bool
- name: create chatgpt bot - name: create chatgpt bot
command: 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 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 ignore_errors: true
when: mode_setup | bool when: mode_setup | bool

View File

@ -1,6 +1,6 @@
services: services:
{% include 'templates/docker/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
synapse: synapse:
image: matrixdotorg/synapse:{{applications.matrix.synapse.version}} image: matrixdotorg/synapse:{{applications.matrix.synapse.version}}
@ -13,7 +13,7 @@ services:
- ./homeserver.yaml:/data/homeserver.yaml:ro - ./homeserver.yaml:/data/homeserver.yaml:ro
- ./{{domains.matrix_synapse}}.log.config:/data/{{domains.matrix_synapse}}.log.config:ro - ./{{domains.matrix_synapse}}.log.config:/data/{{domains.matrix_synapse}}.log.config:ro
{% for item in bridges %} {% 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 %} {% endfor %}
environment: environment:
- SYNAPSE_SERVER_NAME={{domains.matrix_synapse}} - SYNAPSE_SERVER_NAME={{domains.matrix_synapse}}

View File

@ -1,10 +1,11 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: add docker-compose.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 notify: docker compose project setup

View File

@ -1,6 +1,6 @@
services: services:
{% include 'templates/docker/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
application: application:
# Seems like image tag got lost. @todo Check and implement if necessary # Seems like image tag got lost. @todo Check and implement if necessary
log_driver: journald log_driver: journald

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
@ -8,5 +9,5 @@
- name: add docker-compose.yml - name: add docker-compose.yml
template: template:
src: "docker-compose.yml.j2" 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 notify: docker compose project setup

View File

@ -1,6 +1,6 @@
services: services:
{% include 'templates/docker/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
moodle: moodle:
image: docker.io/bitnami/moodle:{{applications.moodle.version}} image: docker.io/bitnami/moodle:{{applications.moodle.version}}
ports: ports:

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks create-proxy-with-domain-replace.yml" - name: "include tasks create-proxy-with-domain-replace.yml"
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 - name: add docker-compose.yml
template: template:
src: "docker-compose.yml.j2" 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 notify: docker compose project setup

View File

@ -1,6 +1,6 @@
services: services:
{% include 'templates/docker/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
application: application:
logging: logging:

View File

@ -1,6 +1,6 @@
--- ---
application_id: "mybb" 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" docker_compose_instance_confd_defaultconf_file: "{{docker_compose_instance_confd_directory}}default.conf"
target_mount_conf_d_directory: "{{nginx.directories.http.servers}}" target_mount_conf_d_directory: "{{nginx.directories.http.servers}}"
source_domain: "mybb.{{primary_domain}}" source_domain: "mybb.{{primary_domain}}"

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include task certbot-matomo.yml" - name: "include task certbot-matomo.yml"
include_tasks: certbot-matomo.yml include_tasks: certbot-matomo.yml
@ -14,15 +15,16 @@
- name: create nginx.conf - name: create nginx.conf
template: template:
src: "templates/nginx.conf.j2" src: "templates/nginx.conf.j2"
dest: "{{docker_compose_instance_directory}}nginx.conf" dest: "{{docker_compose.directories.volumes}}nginx.conf"
notify: docker compose project setup notify: docker compose project setup
- name: add docker-compose.yml - name: add docker-compose.yml
template: template:
src: docker-compose.yml.j2 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 notify: docker compose project setup
# @todo activate
#- name: Include OIDC-specific tasks if OIDC client is active #- name: Include OIDC-specific tasks if OIDC client is active
# include_tasks: oidc_tasks.yml # include_tasks: oidc_tasks.yml
# when: oidc_client_active | bool # when: oidc_client_active | bool

View File

@ -2,7 +2,7 @@ services:
{% include 'templates/docker/services/redis.yml.j2' %} {% 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: application:
image: "nextcloud:{{applications.nextcloud.version}}-fpm-alpine" image: "nextcloud:{{applications.nextcloud.version}}-fpm-alpine"
@ -47,7 +47,7 @@ services:
ports: ports:
- "127.0.0.1:{{http_port}}:80" - "127.0.0.1:{{http_port}}:80"
volumes: 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: volumes_from:
- application - application
healthcheck: healthcheck:

View File

@ -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: template:
src: oauth2-proxy-keycloak.cfg.j2 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: notify:
- docker compose project setup - docker compose project setup

View File

@ -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`: The role uses several variables, defined in `vars/main.yml`:
- `repository_directory`: The directory for the OpenProject repository. - `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 ## Handlers

View File

@ -2,7 +2,7 @@
- name: rebuild docker image - name: rebuild docker image
command: command:
cmd: docker build --no-cache -t custom_openproject . cmd: docker build --no-cache -t custom_openproject .
chdir: "{{docker_compose_instance_directory}}" chdir: "{{docker_compose.directories.instance}}"
environment: environment:
COMPOSE_HTTP_TIMEOUT: 600 COMPOSE_HTTP_TIMEOUT: 600
DOCKER_CLIENT_TIMEOUT: 600 DOCKER_CLIENT_TIMEOUT: 600

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
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" - name: "include tasks update-repository-with-docker-compose.yml"
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: copy:
src: Gemfile.plugins src: Gemfile.plugins
dest: "{{docker_compose_instance_directory}}Gemfile.plugins" dest: "{{docker_compose.directories.instance}}Gemfile.plugins"
notify: notify:
- docker compose project setup - docker compose project setup
- rebuild docker image - rebuild docker image
- name: "Transfering Dockerfile to {{docker_compose_instance_directory}}" - name: "Transfering Dockerfile to {{docker_compose.directories.instance}}"
copy: copy:
src: Dockerfile src: Dockerfile
dest: "{{docker_compose_instance_directory}}Dockerfile" dest: "{{docker_compose.directories.instance}}Dockerfile"
notify: notify:
- docker compose project setup - docker compose project setup
- rebuild docker image - rebuild docker image
@ -33,5 +34,5 @@
- name: "copy .env" - name: "copy .env"
template: template:
src: env.j2 src: env.j2
dest: "{{ docker_compose_instance_directory }}.env" dest: "{{ docker_compose.directories.instance }}.env"
notify: docker compose project setup notify: docker compose project setup

View File

@ -20,7 +20,7 @@ x-op-app: &app
services: 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' %} {% include 'roles/docker-oauth2-proxy/templates/container.yml.j2' %}

View File

@ -1,6 +1,6 @@
application_id: "openproject" application_id: "openproject"
repository_directory: "{{ path_docker_compose_instances }}{{application_id}}/" 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" repository_address: "https://github.com/opf/openproject-deploy"
database_password: "{{openproject_database_password}}" database_password: "{{openproject_database_password}}"
database_type: "postgres" database_type: "postgres"

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include create-domains.yml" - name: "include create-domains.yml"
include_tasks: create-domains.yml include_tasks: create-domains.yml
@ -9,11 +10,11 @@
loop_var: domain loop_var: domain
- name: copy docker-compose.yml - 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 notify: docker compose project setup
- name: copy configuration - name: copy configuration
template: template:
src: env.j2 src: env.j2
dest: "{{docker_compose_instance_directory}}.env" dest: "{{docker_compose.directories.instance}}.env"
notify: docker compose project setup notify: docker compose project setup

View File

@ -2,7 +2,7 @@ services:
{% include 'templates/docker/services/redis.yml.j2' %} {% 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: application:
image: chocobozzz/peertube:production-{{applications.peertube.version}} image: chocobozzz/peertube:production-{{applications.peertube.version}}

View File

@ -9,5 +9,5 @@
- name: add docker-compose.yml - name: add docker-compose.yml
template: template:
src: "docker-compose.yml.j2" 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 notify: docker compose project setup

View File

@ -1,18 +1,19 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: add docker-compose.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 notify: docker compose project setup
- name: add env - name: add env
template: template:
src: env.j2 src: env.j2
dest: "{{docker_compose_instance_directory}}env" dest: "{{docker_compose.directories.instance}}env"
mode: '770' mode: '770'
force: yes force: yes
notify: docker compose project setup notify: docker compose project setup

View File

@ -1,6 +1,6 @@
services: 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' %} {% include 'templates/docker/services/redis.yml.j2' %}

View File

@ -9,12 +9,12 @@
- name: "include tasks update-repository-with-docker-compose.yml" - name: "include tasks update-repository-with-docker-compose.yml"
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: copy:
src: "{{ inventory_dir }}/files/{{ inventory_hostname }}/docker/portfolio/config.yaml" 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 notify: docker compose project setup
- name: add docker-compose.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 notify: docker compose project setup

View File

@ -13,9 +13,9 @@
ignore_errors: true ignore_errors: true
- name: add docker-compose.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 notify: docker compose project setup
- name: add Dockerfile - 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 notify: docker compose project setup

View File

@ -1,2 +1,2 @@
application_id: "roulette-wheel" application_id: "roulette-wheel"
app_path: "{{docker_compose_instance_directory}}/app/" app_path: "{{docker_compose.directories.instance}}/app/"

View File

@ -1,14 +1,15 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
- name: create .env - 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 notify: docker compose project setup
- name: add docker-compose.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 notify: docker compose project setup

View File

@ -2,7 +2,7 @@ services:
{% include 'templates/docker/services/redis.yml.j2' %} {% 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: application:
image: snipe/snipe-it:${APP_VERSION} image: snipe/snipe-it:${APP_VERSION}

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml

View File

@ -36,7 +36,7 @@ x-volumes:
# - ./config.py:/taiga-back/settings/config.py # - ./config.py:/taiga-back/settings/config.py
services: services:
{% include 'templates/docker/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
taiga-back: taiga-back:
restart: {{docker_restart_policy}} restart: {{docker_restart_policy}}
logging: logging:

View File

@ -2,7 +2,7 @@
- name: rebuild wordpress container - name: rebuild wordpress container
command: command:
cmd: docker build --no-cache -t custom_wordpress . cmd: docker build --no-cache -t custom_wordpress .
chdir: "{{docker_compose_instance_directory}}" chdir: "{{docker_compose.directories.instance}}"
environment: environment:
COMPOSE_HTTP_TIMEOUT: 600 COMPOSE_HTTP_TIMEOUT: 600
DOCKER_CLIENT_TIMEOUT: 600 DOCKER_CLIENT_TIMEOUT: 600

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
@ -10,22 +11,22 @@
vars: vars:
nginx_docker_reverse_proxy_extra_configuration: "client_max_body_size {{wordpress_max_upload_size}};" 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: template:
src: upload.ini.j2 src: upload.ini.j2
dest: "{{docker_compose_instance_directory}}upload.ini" dest: "{{docker_compose.directories.instance}}upload.ini"
notify: notify:
- docker compose project setup - docker compose project setup
- rebuild wordpress container - rebuild wordpress container
- name: "Transfering Dockerfile to {{docker_compose_instance_directory}}" - name: "Transfering Dockerfile to {{docker_compose.directories.instance}}"
copy: copy:
src: Dockerfile src: Dockerfile
dest: "{{docker_compose_instance_directory}}Dockerfile" dest: "{{docker_compose.directories.instance}}Dockerfile"
notify: notify:
- docker compose project setup - docker compose project setup
- rebuild wordpress container - rebuild wordpress container
- name: "add docker-compose.yml to {{docker_compose_instance_directory}}" - name: "add docker-compose.yml to {{docker_compose.directories.instance}}"
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 notify: docker compose project setup

View File

@ -1,6 +1,6 @@
services: services:
{% include 'templates/docker/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
application: application:
logging: logging:

View File

@ -1,6 +1,7 @@
--- ---
- name: "include docker/compose/database.yml" - name: "include docker-central-database"
include_tasks: docker/compose/database.yml include_role:
name: docker-central-database
- name: "include tasks nginx-docker-proxy-domain.yml" - name: "include tasks nginx-docker-proxy-domain.yml"
include_tasks: nginx-docker-proxy-domain.yml include_tasks: nginx-docker-proxy-domain.yml
@ -8,5 +9,5 @@
- name: add docker-compose.yml - name: add docker-compose.yml
template: template:
src: "docker-compose.yml.j2" 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 notify: docker compose project setup

View File

@ -1,6 +1,6 @@
services: services:
{% include 'templates/docker/services/' + database_type + '.yml.j2' %} {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %}
application: application:
logging: logging:

View File

@ -135,12 +135,12 @@ The role includes a **`systemd` service** that runs the deployment script whenev
Example `nginx-docker-cert-deploy.service.j2`: Example `nginx-docker-cert-deploy.service.j2`:
```ini ```ini
[Unit] [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 OnFailure=systemd-notifier.cymais@%n.service
[Service] [Service]
Type=oneshot 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}}
``` ```
--- ---

View File

@ -2,29 +2,29 @@
# Check if the necessary parameters are provided # Check if the necessary parameters are provided
if [ "$#" -ne 2 ]; then if [ "$#" -ne 2 ]; then
echo "Usage: $0 <domain> <docker_compose_instance_directory>" echo "Usage: $0 <domain> <docker_compose.directories.instance>"
exit 1 exit 1
fi fi
# Assign parameters # Assign parameters
domain="$1" domain="$1"
docker_compose_instance_directory="$2" docker_compose.directories.instance="$2"
# Copy certificates # 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 # 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/privkey.pem" "$docker_compose.directories.instance/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/fullchain.pem" "$docker_compose.directories.instance/certs/cert.pem" || exit 1
# Set correct reading rights # 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 # Flag to track if any Nginx reload was successful
nginx_reload_successful=false nginx_reload_successful=false
# Reload Nginx in all containers within the Docker Compose setup # 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 # Iterate over all services
for service in $(docker compose ps --services); do for service in $(docker compose ps --services); do

View File

@ -1,7 +1,7 @@
[Unit] [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 OnFailure=systemd-notifier.cymais@%n.service
[Service] [Service]
Type=oneshot 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}}

View File

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

View File

@ -5,9 +5,9 @@
- name: "backup detached files" - name: "backup detached files"
command: > command: >
mv "{{docker_compose_instance_directory}}{{ item }}" "/tmp/{{application_id}}-{{ item }}.backup" mv "{{docker_compose.directories.instance}}{{ item }}" "/tmp/{{application_id}}-{{ item }}.backup"
args: args:
removes: "{{docker_compose_instance_directory}}{{ item }}" removes: "{{docker_compose.directories.instance}}{{ item }}"
become: true become: true
loop: "{{ merged_detached_files | default(detached_files) }}" loop: "{{ merged_detached_files | default(detached_files) }}"
@ -15,20 +15,20 @@
ansible.builtin.shell: git checkout . ansible.builtin.shell: git checkout .
become: true become: true
args: args:
chdir: "{{docker_compose_instance_directory}}" chdir: "{{docker_compose.directories.instance}}"
ignore_errors: true ignore_errors: true
- name: pull docker repository - name: pull docker repository
git: git:
repo: "{{ repository_address }}" repo: "{{ repository_address }}"
dest: "{{ repository_directory | default(docker_compose_instance_directory) }}" dest: "{{ repository_directory | default(docker_compose.directories.instance) }}"
update: yes update: yes
notify: docker compose project setup notify: docker compose project setup
become: true become: true
- name: "restore detached files" - name: "restore detached files"
command: > command: >
mv "/tmp/{{application_id}}-{{ item }}.backup" "{{docker_compose_instance_directory}}{{ item }}" mv "/tmp/{{application_id}}-{{ item }}.backup" "{{docker_compose.directories.instance}}{{ item }}"
args: args:
removes: "/tmp/{{application_id}}-{{ item }}.backup" removes: "/tmp/{{application_id}}-{{ item }}.backup"
become: true become: true
@ -37,6 +37,6 @@
- name: "copy {{ detached_files }} templates to server" - name: "copy {{ detached_files }} templates to server"
template: template:
src: "{{ item }}.j2" src: "{{ item }}.j2"
dest: "{{docker_compose_instance_directory}}{{ item }}" dest: "{{docker_compose.directories.instance}}{{ item }}"
loop: "{{ detached_files }}" loop: "{{ detached_files }}"
notify: docker compose project setup notify: docker compose project setup

View File

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