mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-02-21 12:09:39 +01:00
Implemented helper role docker-central-database and refactored code
This commit is contained in:
parent
cb6a42e97d
commit
5503326ea6
@ -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
|
||||
|
@ -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
|
||||
|
@ -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}}
|
||||
|
@ -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
|
||||
|
@ -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}}"
|
||||
|
@ -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
|
@ -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}}"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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"
|
71
roles/docker-central-database/README.md
Normal file
71
roles/docker-central-database/README.md
Normal 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! 🎉
|
19
roles/docker-central-database/tasks/main.yml
Normal file
19
roles/docker-central-database/tasks/main.yml
Normal 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
|
5
roles/docker-central-database/templates/env/mariadb.env.j2
vendored
Normal file
5
roles/docker-central-database/templates/env/mariadb.env.j2
vendored
Normal 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"
|
4
roles/docker-central-database/templates/env/postgres.env.j2
vendored
Normal file
4
roles/docker-central-database/templates/env/postgres.env.j2
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
POSTGRES_PASSWORD={{database_password}}
|
||||
POSTGRES_USER={{database_username}}
|
||||
POSTGRES_DB={{database_name}}
|
||||
POSTGRES_INITDB_ARGS=--encoding=UTF8 --locale=C
|
@ -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
|
@ -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}}"]
|
6
roles/docker-central-database/vars/database.yml
Normal file
6
roles/docker-central-database/vars/database.yml
Normal 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"
|
@ -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
|
||||
|
@ -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
|
||||
|
10
roles/docker-compose/vars/docker-compose.yml
Normal file
10
roles/docker-compose/vars/docker-compose.yml
Normal 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
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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}}"
|
||||
|
@ -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
|
@ -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' %}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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}}"
|
||||
|
@ -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
|
@ -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}}"
|
||||
|
@ -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
|
||||
|
@ -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}}
|
||||
|
@ -35,7 +35,7 @@ This Ansible role provides a streamlined implementation of an LDAP server with T
|
||||
| `application_id` | Name of the Docker Compose project. | `ldap` |
|
||||
| `ldap_root` | Base DN for the LDAP directory. | `dc={{primary_domain_sld}},dc={{primary_domain_tld}}` |
|
||||
| `ldap_admin_dn` | Distinguished Name (DN) for the LDAP administrator. | `cn={{applications.ldap.administrator_username}},{{ldap_root}}` |
|
||||
| `cert_mount_directory` | Directory to mount SSL/TLS certificates. | `{{docker_compose_instance_directory}}/certs/` |
|
||||
| `cert_mount_directory` | Directory to mount SSL/TLS certificates. | `{{docker_compose.directories.instance}}/certs/` |
|
||||
| `applications.ldap.administrator_username` | Username for the LDAP admin. | `admin` |
|
||||
| `applications.ldap.administrator_password` | Password for the LDAP admin. | _Required_ |
|
||||
| `applications.ldap.phpldapadmin.version` | Version of phpLDAPadmin Docker image. | `latest` |
|
||||
@ -70,7 +70,7 @@ Here’s an example playbook to use this role:
|
||||
roles:
|
||||
- role: docker-ldap
|
||||
vars:
|
||||
docker_compose_instance_directory: "/opt/docker/ldap/"
|
||||
docker_compose.directories.instance: "/opt/docker/ldap/"
|
||||
primary_domain_sld: "veen"
|
||||
primary_domain_tld: "world"
|
||||
applications.ldap.administrator_username: "administrator"
|
||||
|
@ -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
|
@ -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
|
@ -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}}
|
||||
|
@ -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
|
@ -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:
|
||||
|
@ -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
|
@ -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
|
@ -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}}
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
@ -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}}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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}}"
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
@ -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
|
||||
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -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' %}
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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}}
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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' %}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -1,2 +1,2 @@
|
||||
application_id: "roulette-wheel"
|
||||
app_path: "{{docker_compose_instance_directory}}/app/"
|
||||
app_path: "{{docker_compose.directories.instance}}/app/"
|
@ -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
|
||||
|
@ -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}
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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}}
|
||||
```
|
||||
|
||||
---
|
||||
|
@ -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
|
||||
|
@ -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}}
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -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 }}"
|
Loading…
x
Reference in New Issue
Block a user