Compare commits

..

4 Commits

9 changed files with 61 additions and 41 deletions

View File

@ -50,25 +50,6 @@
- name: "include seed-database-to-backup.yml" - name: "include seed-database-to-backup.yml"
include_tasks: seed-database-to-backup.yml include_tasks: seed-database-to-backup.yml
- name: Set file permissions for databases.csv to be readable, writable, and executable by root only
ansible.builtin.file:
path: "{{ backup_docker_to_local_folder }}databases.csv"
mode: '0700'
owner: root
group: root
when: >
(database_instance is defined and
database_name is defined and
database_username is defined and
database_password is defined) and
run_once_backup_docker_to_local_file_permission is not defined
register: file_permission_result
- name: run the backup_docker_to_local_file_permission tasks once
set_fact:
run_once_backup_docker_to_local_file_permission: true
when: run_once_backup_docker_to_local_file_permission is not defined and file_permission_result is defined and file_permission_result.changed
- name: run the backup_docker_to_local tasks once - name: run the backup_docker_to_local tasks once
set_fact: set_fact:
run_once_backup_docker_to_local: true run_once_backup_docker_to_local: true

View File

@ -1,6 +1,6 @@
# This file is also used by docker-matrix-compose # This file is also used by docker-matrix-compose
- name: Display all database variables - name: "{{ role_name }} | Display all database variables"
debug: debug:
msg: | msg: |
database_instance: "{{ database_instance | default('undefined') }}" database_instance: "{{ database_instance | default('undefined') }}"
@ -9,7 +9,20 @@
database_password: "{{ database_password | default('undefined') }}" database_password: "{{ database_password | default('undefined') }}"
when: enable_debug | bool when: enable_debug | bool
- name: seed database values - name: "{{ role_name }} | fail if not all required database variables are defined"
fail:
msg: "You must define all of the following variables: database_instance, database_name, database_username, database_password"
when: >
(database_instance is defined or
database_name is defined or
database_username is defined or
database_password is defined) and not
(database_instance is defined and
database_name is defined and
database_username is defined and
database_password is defined)
- name: "{{ role_name }} | seed database values in directory {{ backup_docker_to_local_folder }}"
command: command:
cmd: "python database_entry_seeder.py databases.csv {{database_instance}} {{database_name}} {{database_username}} {{database_password}}" cmd: "python database_entry_seeder.py databases.csv {{database_instance}} {{database_name}} {{database_username}} {{database_password}}"
chdir: "{{ backup_docker_to_local_folder }}" chdir: "{{ backup_docker_to_local_folder }}"
@ -18,3 +31,22 @@
database_name is defined and database_name is defined and
database_username is defined and database_username is defined and
database_password is defined database_password is defined
- name: Set file permissions for databases.csv to be readable, writable, and executable by root only
ansible.builtin.file:
path: "{{ backup_docker_to_local_folder }}databases.csv"
mode: '0700'
owner: root
group: root
when: >
(database_instance is defined and
database_name is defined and
database_username is defined and
database_password is defined) and
run_once_backup_docker_to_local_file_permission is not defined
register: file_permission_result
- name: run the backup_docker_to_local_file_permission tasks once
set_fact:
run_once_backup_docker_to_local_file_permission: true
when: run_once_backup_docker_to_local_file_permission is not defined and file_permission_result is defined and file_permission_result.changed

View File

@ -1,4 +1,4 @@
- name: "reload cleanup-failed-docker-backups.cymais.service daemon" - name: "Reload cleanup-failed-docker-backups.cymais.service"
systemd: systemd:
name: cleanup-failed-docker-backups.cymais.service name: cleanup-failed-docker-backups.cymais.service
enabled: yes enabled: yes

View File

@ -10,16 +10,16 @@
register: pkgmgr_output register: pkgmgr_output
when: run_once_cleanup_failed_docker_backups is not defined when: run_once_cleanup_failed_docker_backups is not defined
- name: Set fact for backup_docker_to_local_cleanup_folder - name: Set fact for backup_docker_to_local_cleanup_script
set_fact: set_fact:
backup_docker_to_local_cleanup_folder: "{{ pkgmgr_output.stdout }}" backup_docker_to_local_cleanup_script: "{{ pkgmgr_output.stdout.rstrip('/') ~ '/cleanup-all.sh' }}"
when: run_once_cleanup_failed_docker_backups is not defined when: run_once_cleanup_failed_docker_backups is not defined
- name: configure cleanup-failed-docker-backups.cymais.service - name: configure cleanup-failed-docker-backups.cymais.service
template: template:
src: cleanup-failed-docker-backups.service.j2 src: cleanup-failed-docker-backups.service.j2
dest: /etc/systemd/system/cleanup-failed-docker-backups.cymais.service dest: /etc/systemd/system/cleanup-failed-docker-backups.cymais.service
notify: reload cleanup-failed-docker-backups.cymais.service daemon notify: Reload cleanup-failed-docker-backups.cymais.service
when: run_once_cleanup_failed_docker_backups is not defined when: run_once_cleanup_failed_docker_backups is not defined
- name: set service_name to the name of the current role - name: set service_name to the name of the current role

View File

@ -5,4 +5,4 @@ OnFailure=systemd-notifier.cymais@%n.service
[Service] [Service]
Type=oneshot Type=oneshot
ExecStartPre=/bin/sh -c '/usr/bin/python {{ path_system_lock_script }} {{ system_maintenance_services | join(' ') }} --ignore {{system_maintenance_cleanup_services| join(' ') }} --timeout "{{system_maintenance_lock_timeout_backup_services}}"' ExecStartPre=/bin/sh -c '/usr/bin/python {{ path_system_lock_script }} {{ system_maintenance_services | join(' ') }} --ignore {{system_maintenance_cleanup_services| join(' ') }} --timeout "{{system_maintenance_lock_timeout_backup_services}}"'
ExecStart=/bin/sh -c '/usr/bin/yes | /usr/bin/bash {{backup_docker_to_local_cleanup_folder}}cleanup-all.sh' ExecStart=/bin/sh -c '/usr/bin/yes | /usr/bin/bash {{backup_docker_to_local_cleanup_script}}'

View File

@ -1,22 +1,27 @@
- name: "{{ role_name }} | Load database variables"
include_vars: "{{ item }}"
loop:
- "{{ docker_var_file }}" # Important to load docker variables first so that database can use them
- "{{ database_var_file }}" # Important to load them before docker role so that backup can use them
# Docker Routines # Docker Routines
- name: "include docker-compose role" - name: "{{ role_name }} | Include docker-compose role"
include_role: include_role:
name: docker-compose name: docker-compose
# Database Routines
- name: "load variables from {{ role_path }}/vars/database.yml for whole play"
include_vars: "{{ role_path }}/vars/database.yml"
# The following env file will just be used from the dedicated mariadb container # The following env file will just be used from the dedicated mariadb container
# and not the central-mariadb-database # and not the central-mariadb-database
- name: "create {{database_env}}" - name: "{{ role_name }} | Create {{database_env}}"
template: template:
src: "env/{{database_type}}.env.j2" src: "env/{{database_type}}.env.j2"
dest: "{{database_env}}" dest: "{{database_env}}"
notify: docker compose project build and setup notify: docker compose project build and setup
when: not applications[application_id].database.central_storage | bool when: not applications[application_id].database.central_storage | bool
- name: create central database - name: "{{ role_name }} | Create central database"
include_role: include_role:
name: "docker-{{database_type}}" name: "docker-{{database_type}}"
when: applications[application_id].database.central_storage | bool when: applications[application_id].database.central_storage | bool
- name: "{{ role_name }} | Add database to backup"
include_tasks: "{{ playbook_dir }}/roles/backup-docker-to-local/tasks/seed-database-to-backup.yml"

View File

@ -0,0 +1,2 @@
database_var_file: "{{ role_path }}/vars/database.yml"
docker_var_file: "{{playbook_dir}}/roles/docker-compose/vars/docker-compose.yml"

View File

@ -1,7 +1,7 @@
- name: "load variables from {{ role_path }}/vars/docker-compose.yml for whole play" - name: "{{ role_name }} | Load variables from {{ role_path }}/vars/docker-compose.yml for whole play"
include_vars: "{{ role_path }}/vars/docker-compose.yml" include_vars: "{{ role_path }}/vars/docker-compose.yml"
- name: "remove {{ docker_compose.directories.instance }} and all its contents" - name: "{{ role_name }} | Remove {{ docker_compose.directories.instance }} and all its contents"
file: file:
path: "{{ docker_compose.directories.instance }}" path: "{{ docker_compose.directories.instance }}"
state: absent state: absent
@ -9,7 +9,7 @@
# This could lead to problems in docker-compose directories which are based on a git repository # 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 # @todo Verify that this isn't the case. E.g. in accounting
- name: "Create all docker-compose directories (including parent directories)" - name: "{{ role_name }} | Create all docker-compose directories (including parent directories)"
file: file:
path: "{{ item.value }}" path: "{{ item.value }}"
state: directory state: directory