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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

View File

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

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

View File

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

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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' %}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

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

View File

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

View File

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

View File

@ -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' %}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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' %}

View File

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

View File

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

View File

@ -1,2 +1,2 @@
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"
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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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`:
```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}}
```
---

View File

@ -2,29 +2,29 @@
# Check if the necessary parameters are provided
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <domain> <docker_compose_instance_directory>"
echo "Usage: $0 <domain> <docker_compose.directories.instance>"
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

View File

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

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

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