From beeef8413e9c20df64c5f94444d7ed37c228ec69 Mon Sep 17 00:00:00 2001 From: Sam Yaple Date: Fri, 7 Aug 2015 22:26:33 +0000 Subject: [PATCH] Remove Ansible abstraction for Glance Change-Id: I9e2fe6c5e7396d6fb3ce348f30f1d5ea81b6dcf6 Partially-Implements: blueprint remove-abstraction-ansible --- ansible/roles/glance/defaults/main.yml | 24 ++---- ansible/roles/glance/tasks/bootstrap.yml | 93 +++++++++++++++++++----- ansible/roles/glance/tasks/start.yml | 47 ++++++++---- 3 files changed, 115 insertions(+), 49 deletions(-) diff --git a/ansible/roles/glance/defaults/main.yml b/ansible/roles/glance/defaults/main.yml index 3f94f48276..15062b8dff 100644 --- a/ansible/roles/glance/defaults/main.yml +++ b/ansible/roles/glance/defaults/main.yml @@ -8,29 +8,17 @@ glance_database_name: "glance" glance_database_user: "glance" glance_database_address: "{{ kolla_internal_address }}" -# Do not override "service_*" variables -service_database_name: "{{ glance_database_name }}" -service_database_user: "{{ glance_database_user }}" -service_database_password: "{{ glance_database_password }}" - #################### # Docker #################### -docker_glance_registry: "{{ docker_registry ~ '/' if docker_registry else '' }}" -docker_glance_namespace: "{{ docker_namespace }}" -kolla_glance_base_distro: "{{ kolla_base_distro }}" -kolla_glance_install_type: "{{ kolla_install_type }}" -kolla_glance_registry_container_name: "glance-registry" -kolla_glance_api_container_name: "glance-api" +glance_registry_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-glance-registry" +glance_registry_tag: "{{ openstack_release }}" +glance_registry_image_full: "{{ glance_registry_image }}:{{ glance_registry_tag }}" -docker_glance_registry_image: "{{ docker_glance_registry }}{{ docker_glance_namespace }}/{{ kolla_glance_base_distro }}-{{ kolla_glance_install_type }}-{{ kolla_glance_registry_container_name }}" -docker_glance_registry_tag: "{{ openstack_release }}" -docker_glance_registry_image_full: "{{ docker_glance_registry_image }}:{{ docker_glance_registry_tag }}" - -docker_glance_api_image: "{{ docker_glance_registry }}{{ docker_glance_namespace }}/{{ kolla_glance_base_distro }}-{{ kolla_glance_install_type }}-{{ kolla_glance_api_container_name }}" -docker_glance_api_tag: "{{ openstack_release }}" -docker_glance_api_image_full: "{{ docker_glance_api_image }}:{{ docker_glance_api_tag }}" +glance_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-glance-api" +glance_api_tag: "{{ openstack_release }}" +glance_api_image_full: "{{ glance_api_image }}:{{ glance_api_tag }}" #################### diff --git a/ansible/roles/glance/tasks/bootstrap.yml b/ansible/roles/glance/tasks/bootstrap.yml index a0a405fe67..3ccaacb03d 100644 --- a/ansible/roles/glance/tasks/bootstrap.yml +++ b/ansible/roles/glance/tasks/bootstrap.yml @@ -1,20 +1,79 @@ --- -- include: ../../start.yml - vars: - container_command: "/bin/sleep infinity" - container_image: "{{ docker_glance_api_image_full }}" - container_name: "glance_data" - container_volumes: - - "/var/lib/glance/" +- name: Creating Glance 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='{{ glance_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 -- include: ../../bootstrap.yml - vars: - container_detach: False - container_environment: - KOLLA_BOOTSTRAP: +- name: Creating Glance 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='{{ glance_database_name }}' + password='{{ glance_database_password }}' + host='%' + priv='{{ glance_database_name }}.*:ALL' + append_privs='yes'" + register: database_user + changed_when: "{{ database.stdout.find('localhost | SUCCESS => ') != -1 and (database_user.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}" + failed_when: database_user.stdout.split()[2] != 'SUCCESS' + run_once: True + +- name: Starting Glance data container + docker: + docker_api_version: "{{ docker_api_version }}" + net: host + pull: "{{ docker_pull_policy }}" + restart_policy: "{{ docker_restart_policy }}" + restart_policy_retry: "{{ docker_restart_policy_retry }}" + state: reloaded + registry: "{{ docker_registry }}" + username: "{{ docker_registry_username }}" + password: "{{ docker_registry_password }}" + insecure_registry: "{{ docker_insecure_registry }}" + name: glance_data + image: "{{ glance_registry_image_full }}" + command: "/bin/sleep infinity" + volumes: "/var/lib/glance/" + +- name: Starting Glance 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_glance + image: "{{ glance_api_image_full }}" + volumes: "{{ node_config_directory }}/glance/:/opt/kolla/glance/:ro" + volumes_from: glance_data + env: + KOLLA_BOOSTRAP: KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" - container_image: "{{ docker_glance_api_image_full }}" - container_name: "bootstrap_glance_api" - container_restart_policy: "no" - container_volumes: - - "{{ node_config_directory }}/glance-api/:/opt/kolla/glance-api/:ro" + 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 bootstrap container to exit + command: docker wait bootstrap_glance + when: database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed + +- name: Cleaning up Glance boostrap container + docker: + name: bootstrap_glance + image: "{{ glance_api_image_full }}" + state: absent + when: database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed diff --git a/ansible/roles/glance/tasks/start.yml b/ansible/roles/glance/tasks/start.yml index f9534ebd8c..3d73069169 100644 --- a/ansible/roles/glance/tasks/start.yml +++ b/ansible/roles/glance/tasks/start.yml @@ -1,20 +1,39 @@ --- -- include: ../../start.yml - vars: - container_environment: +- name: Starting Glance-registry container + docker: + docker_api_version: "{{ docker_api_version }}" + net: host + pull: "{{ docker_pull_policy }}" + restart_policy: "{{ docker_restart_policy }}" + restart_policy_retry: "{{ docker_restart_policy_retry }}" + state: reloaded + registry: "{{ docker_registry }}" + username: "{{ docker_registry_username }}" + password: "{{ docker_registry_password }}" + insecure_registry: "{{ docker_insecure_registry }}" + name: glance_registry + image: "{{ glance_registry_image_full }}" + volumes: "{{ node_config_directory }}/glance-registry/:/opt/kolla/glance-registry/:ro" + volumes_from: glance_data + env: KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" - container_image: "{{ docker_glance_registry_image_full }}" - container_name: "glance_registry" - container_volumes: - - "{{ node_config_directory }}/glance-registry/:/opt/kolla/glance-registry/:ro" when: inventory_hostname in groups['glance-registry'] -- include: ../../start.yml - vars: - container_environment: +- name: Starting Glance-api container + docker: + docker_api_version: "{{ docker_api_version }}" + net: host + pull: "{{ docker_pull_policy }}" + restart_policy: "{{ docker_restart_policy }}" + restart_policy_retry: "{{ docker_restart_policy_retry }}" + state: reloaded + registry: "{{ docker_registry }}" + username: "{{ docker_registry_username }}" + password: "{{ docker_registry_password }}" + insecure_registry: "{{ docker_insecure_registry }}" + name: glance_api + image: "{{ glance_api_image_full }}" + volumes: "{{ node_config_directory }}/glance-api/:/opt/kolla/glance-api/:ro" + env: KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" - container_image: "{{ docker_glance_api_image_full }}" - container_name: "glance_api" - container_volumes: - - "{{ node_config_directory }}/glance-api/:/opt/kolla/glance-api/:ro" when: inventory_hostname in groups['glance-api']