Merge "mariadb: Use mysql_query instead of command"

This commit is contained in:
Zuul 2025-03-21 14:52:06 +00:00 committed by Gerrit Code Review
commit 99cbe02881
5 changed files with 54 additions and 41 deletions

@ -35,17 +35,20 @@
- name: Wait for first MariaDB service to sync WSREP
become: true
command: >-
{{ kolla_container_engine }} exec {{ mariadb_service.container_name }}
mariadb -uroot -p{{ database_password }}
--silent --skip-column-names
-e 'SHOW STATUS LIKE "wsrep_local_state_comment"'
changed_when: false
kolla_toolbox:
container_engine: "{{ kolla_container_engine }}"
module_name: mysql_query
module_args:
login_db: "mysql"
login_host: "{{ api_interface_address }}"
login_port: "{{ mariadb_port }}"
login_user: "{{ database_user }}"
login_password: "{{ database_password }}"
query: 'SHOW STATUS LIKE "wsrep_local_state_comment"'
register: result
until: result.stdout == "wsrep_local_state_comment\tSynced"
until: result.query_result[0][0]['Value'] == "Synced"
retries: 10
delay: 6
no_log: true
listen: Bootstrap MariaDB cluster
- name: Ensure MariaDB is running normally on bootstrap host

@ -5,13 +5,18 @@
- name: Wait for MariaDB service to be ready through VIP
become: true
command: >
{{ kolla_container_engine }} exec {{ mariadb_service.container_name }}
mariadb -h {{ database_address }} -P {{ database_port }}
-u {{ mariadb_shard_database_user }} -p{{ database_password }} -e 'show databases;'
kolla_toolbox:
container_engine: "{{ kolla_container_engine }}"
module_name: mysql_query
module_args:
login_db: "mysql"
login_host: "{{ api_interface_address }}"
login_port: "{{ mariadb_port }}"
login_user: "{{ database_user }}"
login_password: "{{ database_password }}"
query: "SHOW DATABASES;"
register: result
until: result is success
changed_when: False
retries: 6
delay: 10
when: mariadb_shard_id == mariadb_default_database_shard_id

@ -44,22 +44,22 @@
- block:
- name: Check MariaDB service WSREP sync status
become: true
command: >-
{{ kolla_container_engine }} exec {{ mariadb_service.container_name }}
mariadb -uroot -p{{ database_password }}
--silent --skip-column-names
-e 'SHOW STATUS LIKE "wsrep_local_state_comment"'
changed_when: false
kolla_toolbox:
container_engine: "{{ kolla_container_engine }}"
module_name: mysql_query
module_args:
login_db: "mysql"
login_host: "{{ api_interface_address }}"
login_port: "{{ mariadb_port }}"
login_user: "{{ database_user }}"
login_password: "{{ database_password }}"
query: 'SHOW STATUS LIKE "wsrep_local_state_comment"'
check_mode: false
register: check_mariadb_sync_status
no_log: true
# NOTE(yoctozepto): this is extracted separately to properly escape
# the TAB character which likes to go wrong due to interaction between
# Python/Ansible/Jinja2/YAML, the way below works
- name: Extract MariaDB service WSREP sync status
set_fact:
mariadb_sync_status: "{{ check_mariadb_sync_status.stdout.split('\t')[1] }}"
mariadb_sync_status: "{{ check_mariadb_sync_status.query_result[0][0]['Value'] }}"
when:
- groups[mariadb_shard_group + '_port_alive_True'] is defined
- inventory_hostname in groups[mariadb_shard_group + '_port_alive_True']

@ -154,17 +154,20 @@
- name: Wait for MariaDB to become operational
become: true
command: >-
{{ kolla_container_engine }} exec {{ mariadb_service.container_name }}
mariadb -uroot -p{{ database_password }}
--silent --skip-column-names
-e 'SHOW STATUS LIKE "wsrep_evs_state"'
changed_when: false
kolla_toolbox:
container_engine: "{{ kolla_container_engine }}"
module_name: mysql_query
module_args:
login_db: "mysql"
login_host: "{{ api_interface_address }}"
login_port: "{{ mariadb_port }}"
login_user: "{{ database_user }}"
login_password: "{{ database_password }}"
query: 'SHOW STATUS LIKE "wsrep_evs_state"'
register: result
until: '"OPERATIONAL" in result.stdout'
until: result.query_result[0][0]['Value'] == "OPERATIONAL"
retries: 10
delay: 6
no_log: true
when:
- bootstrap_host is defined
- bootstrap_host == inventory_hostname

@ -30,18 +30,20 @@
- name: Wait for MariaDB service to sync WSREP
become: true
command: >-
{{ kolla_container_engine }} exec {{ mariadb_service.container_name }}
mariadb -uroot -p{{ database_password }}
-h {{ api_interface_address }} -P {{ mariadb_port }}
--silent --skip-column-names
-e 'SHOW STATUS LIKE "wsrep_local_state_comment"'
changed_when: false
kolla_toolbox:
container_engine: "{{ kolla_container_engine }}"
module_name: mysql_query
module_args:
login_db: "mysql"
login_host: "{{ api_interface_address }}"
login_port: "{{ mariadb_port }}"
login_user: "{{ database_user }}"
login_password: "{{ database_password }}"
query: 'SHOW STATUS LIKE "wsrep_local_state_comment"'
register: result
until: result.stdout == "wsrep_local_state_comment\tSynced"
until: result.query_result[0][0]['Value'] == "Synced"
retries: 10
delay: 6
no_log: true
check_mode: false
when:
# NOTE(yoctozepto): we don't want to wait for new nodes to fully sync