7f81dbc85b
Currently bootstrap containers are waited to exit but are not checked for exit status and ansible runs further tasks. If bootstrapping fails we notice it at much later time. Change-Id: I137fc11b0f9d1f03d2ded08a213e8dbd62741f92 Closes-Bug: #1492337
78 lines
3.4 KiB
YAML
78 lines
3.4 KiB
YAML
---
|
|
- name: Creating Keystone database
|
|
command: docker exec -t kolla_ansible /usr/bin/ansible localhost
|
|
-m mysql_db
|
|
-a "login_host='{{ database_address }}'
|
|
login_port='{{ mariadb_port }}'
|
|
login_user='{{ database_user }}'
|
|
login_password='{{ database_password }}'
|
|
name='{{ keystone_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
|
|
|
|
- name: Creating Keystone database user and setting permissions
|
|
command: docker exec -t kolla_ansible /usr/bin/ansible localhost
|
|
-m mysql_user
|
|
-a "login_host='{{ database_address }}'
|
|
login_port='{{ mariadb_port }}'
|
|
login_user='{{ database_user }}'
|
|
login_password='{{ database_password }}'
|
|
name='{{ keystone_database_name }}'
|
|
password='{{ keystone_database_password }}'
|
|
host='%'
|
|
priv='{{ keystone_database_name }}.*:ALL'
|
|
append_privs='yes'"
|
|
register: database_user_create
|
|
changed_when: "{{ database.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
|
|
|
|
- name: Starting Keystone bootstrap container
|
|
docker:
|
|
detach: False
|
|
docker_api_version: "{{ docker_api_version }}"
|
|
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_keystone
|
|
image: "{{ keystone_image_full }}"
|
|
volumes: "{{ node_config_directory }}/keystone/:/opt/kolla/keystone/:ro"
|
|
env:
|
|
KOLLA_BOOTSTRAP:
|
|
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
|
KEYSTONE_ADMIN_PASSWORD: "{{ keystone_admin_password }}"
|
|
REGION_NAME: "{{ openstack_region_name }}"
|
|
PUBLIC_URL: "http://{{ kolla_external_address }}:{{ keystone_public_port }}/v2.0"
|
|
INTERNAL_URL: "http://{{ kolla_internal_address }}:{{ keystone_public_port }}/v2.0"
|
|
ADMIN_URL: "http://{{ kolla_internal_address }}:{{ keystone_admin_port }}/v2.0"
|
|
OS_TOKEN: "{{ keystone_admin_token }}"
|
|
OS_URL: "http://{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}:{{ keystone_admin_port }}/v2.0"
|
|
run_once: True
|
|
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 Keystone bootstrap container to exit
|
|
command: docker wait bootstrap_keystone
|
|
register: bootstrap_result
|
|
run_once: True
|
|
when: database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed
|
|
|
|
- name: Checking for bootstrap failures
|
|
fail: msg="Bootstrapping failed"
|
|
run_once: True
|
|
when: bootstrap_result|changed and bootstrap_result.stdout != "0"
|
|
|
|
- name: Cleaning up Keystone bootstrap container
|
|
docker:
|
|
name: bootstrap_keystone
|
|
image: "{{ keystone_image_full }}"
|
|
state: absent
|
|
when: database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed
|