--- # nocheck: run-once - name: "📝 For '{{ application_id }}': Freeze database consumer id before includes" set_fact: _database_consumer_id: "{{ database_consumer_id | default(application_id) }}" changed_when: false - name: "🔍 For '{{ application_id }}/{{ _database_consumer_id }}': Resolve shared mode" set_fact: _sys_svc_rdbms_consumer_local: "{{ lookup('database', _database_consumer_id, 'local') | bool }}" _sys_svc_rdbms_central_db_enabled: >- {{ not (lookup('database', _database_consumer_id, 'local') | bool) and (groups[lookup('database', _database_consumer_id, 'id')] | default([])) | length > 0 }} changed_when: false - name: "🔍 For '{{ application_id }}': Find the compose file rendering the engine" ansible.builtin.stat: path: "{{ lookup('path_absolute', 'roles', application_id, 'templates/compose.yml.j2') }}" register: _sys_svc_rdbms_compose_template delegate_to: localhost changed_when: false - name: "🔧 For '{{ application_id }}/{{ _database_consumer_id }}': Apply dedicated setup" include_tasks: dedicated.yml when: - _sys_svc_rdbms_consumer_local | bool - _sys_svc_rdbms_compose_template.stat.exists - name: "🔑 Realign '{{ application_id }}' persisted password before the health gate" ansible.builtin.include_tasks: "{{ _app_persisted_credentials }}" vars: _app_persisted_credentials: "{{ lookup('path_absolute', 'roles/' ~ application_id ~ '/tasks/utils/patch/db_credentials.yml') }}" when: _app_persisted_credentials is exists - name: 🗄️ Central Database Logic block: - name: "✅ For '{{ application_id }}': Assert shared database provider was preloaded" ansible.builtin.assert: that: - >- lookup( 'vars', 'run_once_' ~ (_database_provider_role | replace('-', '_')), default='__missing__' ) != '__missing__' fail_msg: >- Shared database provider '{{ _database_provider_role }}' was not preloaded by sys-service-loader before sys-svc-rdbms ran. when: MODE_ASSERT_LOCAL | bool - name: "🎬 For '{{ application_id }}': Init dedicated db on preloaded provider" ansible.builtin.include_role: name: "{{ _database_provider_role }}" vars: application_id: "{{ _database_provider_role }}" database_init: true compose_repository_pull: false compose_mode_force: "" database_consumer_id: "{{ _database_consumer_id }}" - name: "➕ For '{{ application_id }}': Add Entry for Backup Procedure" include_tasks: utils/seed_backup.yml when: - "'svc-bkp-volume-2-local' in group_names" - IS_STACK_HOST | bool vars: _database_provider_role: "{{ lookup('database', _database_consumer_id, 'id') }}" database_consumer_id: "{{ _database_consumer_id }}" database_type: "{{ _database_type }}" database_instance: "{{ lookup('database', _database_consumer_id, 'instance') }}" database_host: "{{ lookup('database', _database_consumer_id, 'host') }}" database_port: "{{ lookup('database', _database_consumer_id, 'port') }}" database_name: "{{ lookup('database', _database_consumer_id, 'name') }}" database_username: "{{ lookup('database', _database_consumer_id, 'username') }}" database_password: "{{ lookup('database', _database_consumer_id, 'password') }}" when: - _sys_svc_rdbms_central_db_enabled | bool - inventory_hostname in (groups[lookup('database', _database_consumer_id, 'id')] | default([]))