
docker_restart_policy: no causes systemd units to not get created and we use it in CI to disable restarts on services. Introducing oneshot policy to not create systemd unit for oneshot containers (those that are running bootstrap tasks, like db bootstrap and don't need a systemd unit), but still create systemd units for long lived containers but with Restart=No. Change-Id: I9e0d656f19143ec2fcad7d6d345b2c9387551604
92 lines
2.8 KiB
YAML
92 lines
2.8 KiB
YAML
---
|
|
- name: Starting first MariaDB container
|
|
vars:
|
|
service_name: "mariadb"
|
|
service: "{{ mariadb_services[service_name] }}"
|
|
become: true
|
|
kolla_docker:
|
|
action: "start_container"
|
|
common_options: "{{ docker_common_options }}"
|
|
environment:
|
|
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
|
BOOTSTRAP_ARGS: "--wsrep-new-cluster"
|
|
image: "{{ service.image }}"
|
|
labels:
|
|
BOOTSTRAP:
|
|
name: "{{ service.container_name }}"
|
|
restart_policy: oneshot
|
|
volumes: "{{ service.volumes }}"
|
|
dimensions: "{{ service.dimensions }}"
|
|
listen: Bootstrap MariaDB cluster
|
|
|
|
# NOTE(yoctozepto): We have to loop this to avoid breaking on connection resets
|
|
- name: Wait for first MariaDB service port liveness
|
|
wait_for:
|
|
host: "{{ api_interface_address }}"
|
|
port: "{{ mariadb_port }}"
|
|
connect_timeout: 1
|
|
timeout: 60
|
|
search_regex: "MariaDB"
|
|
register: check_mariadb_port
|
|
until: check_mariadb_port is success
|
|
retries: 10
|
|
delay: 6
|
|
listen: Bootstrap MariaDB cluster
|
|
|
|
- name: Wait for first MariaDB service to sync WSREP
|
|
become: true
|
|
command: >-
|
|
{{ kolla_container_engine }} exec {{ mariadb_service.container_name }}
|
|
mysql -uroot -p{{ database_password }}
|
|
--silent --skip-column-names
|
|
-e 'SHOW STATUS LIKE "wsrep_local_state_comment"'
|
|
changed_when: false
|
|
register: result
|
|
until: result.stdout == "wsrep_local_state_comment\tSynced"
|
|
retries: 10
|
|
delay: 6
|
|
no_log: true
|
|
listen: Bootstrap MariaDB cluster
|
|
|
|
- name: Ensure MariaDB is running normally on bootstrap host
|
|
group_by:
|
|
key: mariadb_bootstrap_restart
|
|
listen: Bootstrap MariaDB cluster
|
|
|
|
- name: Restart MariaDB on existing cluster members
|
|
group_by:
|
|
key: mariadb_restart
|
|
when:
|
|
- groups[mariadb_shard_group + '_port_alive_True'] is defined
|
|
- inventory_hostname in groups[mariadb_shard_group + '_port_alive_True']
|
|
- kolla_action != "config"
|
|
listen: restart mariadb
|
|
|
|
- name: Start MariaDB on new nodes
|
|
group_by:
|
|
key: mariadb_start
|
|
when:
|
|
- bootstrap_host is not defined or bootstrap_host != inventory_hostname
|
|
- groups[mariadb_shard_group + '_port_alive_False'] is defined
|
|
- inventory_hostname in groups[mariadb_shard_group + '_port_alive_False']
|
|
- kolla_action != "config"
|
|
listen: restart mariadb
|
|
|
|
- name: Restart mariadb-clustercheck container
|
|
vars:
|
|
service_name: "mariadb-clustercheck"
|
|
service: "{{ mariadb_services[service_name] }}"
|
|
become: true
|
|
kolla_docker:
|
|
action: "recreate_or_restart_container"
|
|
common_options: "{{ docker_common_options }}"
|
|
image: "{{ service.image }}"
|
|
name: "{{ service.container_name }}"
|
|
volumes: "{{ service.volumes }}"
|
|
dimensions: "{{ service.dimensions }}"
|
|
environment: "{{ service.environment }}"
|
|
listen:
|
|
- restart mariadb-clustercheck
|
|
when:
|
|
- kolla_action != "config"
|