From 07392c289449e847da4f2237be0d0ca67efca7e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Steinm=C3=BCller?= Date: Tue, 4 Jun 2019 02:36:58 +0000 Subject: [PATCH] db_setup: refactor database setup to a common file This patch refactors the database creation to db_setup.yml which will eventually be managed by openstack-ansible-tests. This also re-orders the mq_setup to be done earlier so these system level dependencies are ready before service activation. Change-Id: I2a955bfc34d37eb30f29c07592854f893f15b619 --- tasks/db_setup.yml | 40 ++++++++++++++++++++++++++++ tasks/magnum_db_setup.yml | 46 -------------------------------- tasks/magnum_db_sync.yml | 20 ++++++++++++++ tasks/main.yml | 55 +++++++++++++++++++++++++-------------- 4 files changed, 95 insertions(+), 66 deletions(-) create mode 100644 tasks/db_setup.yml delete mode 100644 tasks/magnum_db_setup.yml create mode 100644 tasks/magnum_db_sync.yml diff --git a/tasks/db_setup.yml b/tasks/db_setup.yml new file mode 100644 index 0000000..a2cb43a --- /dev/null +++ b/tasks/db_setup.yml @@ -0,0 +1,40 @@ +--- +# Copyright 2019, VEXXHOST, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# WARNING: +# This file is maintained in the openstack-ansible-tests repository. +# https://git.openstack.org/cgit/openstack/openstack-ansible-tests/tree/sync/tasks/db_setup.yml +# If you need to modify this file, update the one in the openstack-ansible-tests +# repository. Once it merges there, the changes will automatically be proposed to +# all the repositories which use it. + +- name: Setup Database Service (MariaDB) + delegate_to: "{{ _oslodb_setup_host }}" + tags: + - common-mariadb + block: + - name: Create database for service + mysql_db: + name: "{{ item.name }}" + loop: "{{ _oslodb_databases }}" + + - name: Grant access to the database for the service + mysql_user: + name: "{{ item.1.username }}" + password: "{{ item.1.password }}" + host: "{{ item.1.host | default('%') }}" + priv: "{{ item.0.name }}.*:{{ item.1.priv | default('ALL') }}" + loop: "{{ _oslodb_databases | subelements('users') }}" + no_log: true diff --git a/tasks/magnum_db_setup.yml b/tasks/magnum_db_setup.yml deleted file mode 100644 index c4c4a8a..0000000 --- a/tasks/magnum_db_setup.yml +++ /dev/null @@ -1,46 +0,0 @@ ---- -# Copyright 2016, Ian Cordasco -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -- name: Create DB for service - mysql_db: - login_user: "{{ galera_root_user }}" - login_password: "{{ galera_root_password }}" - login_host: "{{ magnum_galera_address }}" - name: "{{ magnum_galera_database_name }}" - state: "present" - delegate_to: "{{ magnum_db_setup_host }}" - no_log: True - -- name: Grant access to the DB for the service - mysql_user: - login_user: "{{ galera_root_user }}" - login_password: "{{ galera_root_password }}" - login_host: "{{ magnum_galera_address }}" - name: "{{ magnum_galera_user }}" - password: "{{ magnum_galera_password }}" - host: "{{ item }}" - state: "present" - priv: "{{ magnum_galera_database_name }}.*:ALL" - delegate_to: "{{ magnum_db_setup_host }}" - with_items: - - "localhost" - - "%" - no_log: True - -- name: Perform a synchronization of the Magnum database - command: "{{ magnum_bin}}/magnum-db-manage upgrade" - become: yes - become_user: "{{ magnum_system_user_name }}" - changed_when: false diff --git a/tasks/magnum_db_sync.yml b/tasks/magnum_db_sync.yml new file mode 100644 index 0000000..811a07e --- /dev/null +++ b/tasks/magnum_db_sync.yml @@ -0,0 +1,20 @@ +--- +# Copyright 2016, Ian Cordasco +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +- name: Perform a synchronization of the Magnum database + command: "{{ magnum_bin}}/magnum-db-manage upgrade" + become: yes + become_user: "{{ magnum_system_user_name }}" + changed_when: false diff --git a/tasks/main.yml b/tasks/main.yml index 1f87056..eacbd0b 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -23,6 +23,40 @@ tags: - always +- import_tasks: db_setup.yml + when: + - "magnum_services['magnum-api']['group'] in group_names" + - "inventory_hostname == ((groups[magnum_services['magnum-api']['group']]| intersect(ansible_play_hosts)) | list)[0]" + vars: + _oslodb_setup_host: "{{ magnum_db_setup_host }}" + _oslodb_databases: + - name: "{{ magnum_galera_database_name }}" + users: + - username: "{{ magnum_galera_user }}" + password: "{{ magnum_galera_password }}" + tags: + - common-db + - magnum-config + +- import_tasks: mq_setup.yml + when: + - "magnum_services['magnum-api']['group'] in group_names" + - "inventory_hostname == ((groups[magnum_services['magnum-api']['group']]| intersect(ansible_play_hosts)) | list)[0]" + vars: + _oslomsg_rpc_setup_host: "{{ magnum_oslomsg_rpc_setup_host }}" + _oslomsg_rpc_userid: "{{ magnum_oslomsg_rpc_userid }}" + _oslomsg_rpc_password: "{{ magnum_oslomsg_rpc_password }}" + _oslomsg_rpc_vhost: "{{ magnum_oslomsg_rpc_vhost }}" + _oslomsg_rpc_transport: "{{ magnum_oslomsg_rpc_transport }}" + _oslomsg_notify_setup_host: "{{ magnum_oslomsg_notify_setup_host }}" + _oslomsg_notify_userid: "{{ magnum_oslomsg_notify_userid }}" + _oslomsg_notify_password: "{{ magnum_oslomsg_notify_password }}" + _oslomsg_notify_vhost: "{{ magnum_oslomsg_notify_vhost }}" + _oslomsg_notify_transport: "{{ magnum_oslomsg_notify_transport }}" + tags: + - common-mq + - magnum-config + - include_tasks: magnum_pre_install.yml tags: - magnum-install @@ -75,26 +109,7 @@ - magnum-config - systemd-service -- import_tasks: mq_setup.yml - when: - - "magnum_services['magnum-api']['group'] in group_names" - - "inventory_hostname == ((groups[magnum_services['magnum-api']['group']]| intersect(ansible_play_hosts)) | list)[0]" - vars: - _oslomsg_rpc_setup_host: "{{ magnum_oslomsg_rpc_setup_host }}" - _oslomsg_rpc_userid: "{{ magnum_oslomsg_rpc_userid }}" - _oslomsg_rpc_password: "{{ magnum_oslomsg_rpc_password }}" - _oslomsg_rpc_vhost: "{{ magnum_oslomsg_rpc_vhost }}" - _oslomsg_rpc_transport: "{{ magnum_oslomsg_rpc_transport }}" - _oslomsg_notify_setup_host: "{{ magnum_oslomsg_notify_setup_host }}" - _oslomsg_notify_userid: "{{ magnum_oslomsg_notify_userid }}" - _oslomsg_notify_password: "{{ magnum_oslomsg_notify_password }}" - _oslomsg_notify_vhost: "{{ magnum_oslomsg_notify_vhost }}" - _oslomsg_notify_transport: "{{ magnum_oslomsg_notify_transport }}" - tags: - - common-mq - - magnum-config - -- include_tasks: magnum_db_setup.yml +- include_tasks: magnum_db_sync.yml when: inventory_hostname == groups['magnum_all'][0] tags: - magnum-config