
The bootstrap tasks could be started on any node listed in the site.yml The issue is that all the tasks must run on the same node, and the only node that all the tasks can run on is the 'api' node due to needing to start the bootstrap container which binds in the configs. delegate_to is required to ensure that the proper node gets the task. Co-Authored-By: Sam Yaple <sam@yaple.net> Change-Id: Ica04ab366777a571a92212ac22c482f1881d4ecd Closes-Bug: #1513598 Related-Bug: #1513439
71 lines
3.0 KiB
YAML
71 lines
3.0 KiB
YAML
---
|
|
- name: Creating Neutron database
|
|
command: docker exec -t kolla_ansible /usr/bin/ansible localhost
|
|
-m mysql_db
|
|
-a "login_host='{{ database_address }}'
|
|
login_user='{{ database_user }}'
|
|
login_password='{{ database_password }}'
|
|
name='{{ neutron_database_name }}'"
|
|
register: database
|
|
changed_when: "{{ database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
|
|
failed_when: database.stdout.split()[2] != 'SUCCESS'
|
|
run_once: True
|
|
delegate_to: "{{ groups['neutron-server'][0] }}"
|
|
|
|
- name: Creating Neutron database user and setting permissions
|
|
command: docker exec -t kolla_ansible /usr/bin/ansible localhost
|
|
-m mysql_user
|
|
-a "login_host='{{ database_address }}'
|
|
login_user='{{ database_user }}'
|
|
login_password='{{ database_password }}'
|
|
name='{{ neutron_database_name }}'
|
|
password='{{ neutron_database_password }}'
|
|
host='%'
|
|
priv='{{ neutron_database_name }}.*:ALL'
|
|
append_privs='yes'"
|
|
register: database_user_create
|
|
changed_when: "{{ database_user_create.stdout.find('localhost | SUCCESS => ') != -1 and (database_user_create.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
|
|
failed_when: database_user_create.stdout.split()[2] != 'SUCCESS'
|
|
run_once: True
|
|
delegate_to: "{{ groups['neutron-server'][0] }}"
|
|
|
|
- name: Starting Neutron bootstrap container
|
|
docker:
|
|
tty: True
|
|
detach: False
|
|
net: host
|
|
pull: "{{ docker_pull_policy }}"
|
|
restart_policy: "no"
|
|
state: reloaded
|
|
registry: "{{ docker_registry }}"
|
|
username: "{{ docker_registry_username }}"
|
|
password: "{{ docker_registry_password }}"
|
|
insecure_registry: "{{ docker_insecure_registry }}"
|
|
name: bootstrap_neutron
|
|
image: "{{ neutron_server_image_full }}"
|
|
volumes: "{{ node_config_directory }}/neutron-server/:{{ container_config_directory }}/:ro"
|
|
env:
|
|
KOLLA_BOOTSTRAP:
|
|
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
|
run_once: True
|
|
delegate_to: "{{ groups['neutron-server'][0] }}"
|
|
when: database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed
|
|
|
|
# https://github.com/ansible/ansible-modules-core/pull/1031
|
|
- name: Waiting for bootstrap container to exit
|
|
command: docker wait bootstrap_neutron
|
|
register: bootstrap_result
|
|
run_once: True
|
|
failed_when: bootstrap_result.stdout != "0"
|
|
delegate_to: "{{ groups['neutron-server'][0] }}"
|
|
when: database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed
|
|
|
|
- name: Cleaning up Neutron bootstrap container
|
|
docker:
|
|
tty: True
|
|
name: bootstrap_neutron
|
|
image: "{{ neutron_server_image_full }}"
|
|
state: absent
|
|
delegate_to: "{{ groups['neutron-server'][0] }}"
|
|
when: database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed
|