---
- name: "๐ Read the seeded database definitions once per host"
include_tasks: 05_read-seeded-databases.yml
when: svc_bkp_volume_2_local_seeded is not defined
- name: "๐ BKP | Debug seed context (sanitized)"
ansible.builtin.debug:
msg: |
database_consumer_id: "{{ database_consumer_id | default('undefined') }}"
database_instance: "{{ database_instance | default('undefined') }}"
database_name: "{{ database_name | default('undefined') }}"
database_type: "{{ database_type | default('undefined') }}"
database_host: "{{ database_host | default('undefined') }}"
database_port: "{{ database_port | default('undefined') }}"
database_username: "{{ database_username | default('undefined') }}"
when: MODE_DEBUG | bool
changed_when: false
- name: "โ
BKP | Assert required database variables are explicitly passed"
ansible.builtin.assert:
that:
- database_instance is defined
- (database_instance | string | trim) != ""
- database_type is defined
- (database_type | string | trim) != ""
- database_host is defined
- (database_host | string | trim) != ""
- database_port is defined
- (database_port | string | trim) != ""
- database_username is defined
- (database_username | string | trim) != ""
- database_password is defined
- (database_password | string | trim) != ""
- database_name is defined
fail_msg: >-
You must pass ALL database variables explicitly when including
svc-bkp-volume-2-local/tasks/03_seed-database-to-backup.yml:
database_instance, database_type, database_host, database_port,
database_username, database_password, database_name
Note: database_name may be an empty string to represent "all databases".
changed_when: false
- name: "๐งฎ Compare the database definition with the seeded one"
ansible.builtin.set_fact:
svc_bkp_volume_2_local_seed_argv: "{{ svc_bkp_volume_2_local_seed_command }}"
svc_bkp_volume_2_local_seed_current: >-
{{ svc_bkp_volume_2_local_seeded | baudolo_seed_current(*svc_bkp_volume_2_local_seed_command[2:]) }}
svc_bkp_volume_2_local_seeded: >-
{{ svc_bkp_volume_2_local_seeded | baudolo_seed_apply(*svc_bkp_volume_2_local_seed_command[2:]) }}
vars:
svc_bkp_volume_2_local_seed_command:
- baudolo-seed
- "{{ FILE_DATABASE_SECRETS | string }}"
- "{{ database_instance | string }}"
- "{{ '*' if (database_name | string | length) == 0 else (database_name | string) }}"
- "{{ database_username | string }}"
- "{{ database_password | string }}"
no_log: "{{ MASK_CREDENTIALS_IN_LOGS | bool }}"
- name: ๐ฑ Seed database definition via baudolo-seed (system binary)
ansible.builtin.command:
argv: "{{ svc_bkp_volume_2_local_seed_argv }}"
when: not (svc_bkp_volume_2_local_seed_current | bool)
no_log: "{{ MASK_CREDENTIALS_IN_LOGS | bool }}"
# todo: add flock to baudolo-seed upstream, then async seeding becomes safe again.
throttle: 1