diff --git a/defaults/main.yml b/defaults/main.yml index fc700c5..152e53d 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -126,18 +126,22 @@ trove_galera_connection_string: "mysql+pymysql://{{ trove_galera_user}}:{{ trove ## Oslo Messaging vars # RPC -trove_oslomsg_rpc_transport: rabbit -trove_oslomsg_rpc_servers: "{{ rabbitmq_servers }}" -trove_oslomsg_rpc_port: 5672 -trove_oslomsg_rpc_use_ssl: False +trove_oslomsg_rpc_host_group: "{{ oslomsg_rpc_host_group | default('rabbitmq_all') }}" +trove_oslomsg_rpc_setup_host: "{{ (trove_oslomsg_rpc_host_group in groups) | ternary(groups[trove_oslomsg_rpc_host_group][0], 'localhost') }}" +trove_oslomsg_rpc_transport: "{{ oslomsg_rpc_transport | default('rabbit') }}" +trove_oslomsg_rpc_servers: "{{ oslomsg_rpc_servers | default('127.0.0.1') }}" +trove_oslomsg_rpc_port: "{{ oslomsg_rpc_port | default('5672') }}" +trove_oslomsg_rpc_use_ssl: "{{ oslomsg_rpc_use_ssl | default(False) }}" trove_oslomsg_rpc_userid: trove trove_oslomsg_rpc_vhost: /trove # Notify -trove_oslomsg_notify_transport: rabbit -trove_oslomsg_notify_servers: "{{ rabbitmq_servers }}" -trove_oslomsg_notify_port: 5672 -trove_oslomsg_notify_use_ssl: False +trove_oslomsg_notify_host_group: "{{ oslomsg_notify_host_group | default('rabbitmq_all') }}" +trove_oslomsg_notify_setup_host: "{{ (trove_oslomsg_notify_host_group in groups) | ternary(groups[trove_oslomsg_notify_host_group][0], 'localhost') }}" +trove_oslomsg_notify_transport: "{{ oslomsg_notify_transport | default('rabbit') }}" +trove_oslomsg_notify_servers: "{{ oslomsg_notify_servers | default('127.0.0.1') }}" +trove_oslomsg_notify_port: "{{ oslomsg_notify_port | default('5672') }}" +trove_oslomsg_notify_use_ssl: "{{ oslomsg_notify_use_ssl | default(False) }}" trove_oslomsg_notify_userid: trove trove_oslomsg_notify_vhost: /trove @@ -158,10 +162,10 @@ trove_provider_network: "{{ provider_networks|map(attribute='network')|selectatt trove_provider_ip_from_q: "{{ trove_provider_network['ip_from_q'] }}" # The name of the network address pool trove_container_net_name: "{{ trove_provider_ip_from_q }}_address" -trove_guest_oslomsg_rpc_servers: "{% for host in groups[oslomsg_rpc_host_group] %}{{ hostvars[host]['container_networks'][trove_container_net_name]['address'] }}{% if not loop.last %},{% endif %}{% endfor %}" -trove_guest_oslomsg_rpc_use_ssl: "{{ trove_oslomsg_rpc_use_ssl }}" -trove_guest_oslomsg_notify_servers: "{% for host in groups[oslomsg_notify_host_group] %}{{ hostvars[host]['container_networks'][trove_container_net_name]['address'] }}{% if not loop.last %},{% endif %}{% endfor %}" -trove_guest_oslomsg_notify_use_ssl: "{{ trove_oslomsg_notify_use_ssl }}" +trove_guest_oslomsg_rpc_servers: "{{ oslomsg_rpc_servers | default('127.0.0.1') }}" +trove_guest_oslomsg_rpc_use_ssl: "{{ oslomsg_rpc_use_ssl | default(False) }}" +trove_guest_oslomsg_notify_servers: "{{ oslomsg_notify_servers | default('127.0.0.1') }}" +trove_guest_oslomsg_notify_use_ssl: "{{ oslomsg_notify_use_ssl | default(False) }}" # For OpenStack services that have public, admin, and internal access, use the public ones for the guest VMs. trove_guest_auth_url: "{{ keystone_service_publicurl }}" trove_guest_swift_url: "{{ trove_service_publicuri_proto }}://{{ external_lb_vip_address }}:{{ swift_proxy_port }}/v1/AUTH_" diff --git a/tasks/main.yml b/tasks/main.yml index d66b7f2..e1d58df 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -86,6 +86,25 @@ tags: - trove-install +- include_tasks: mq_setup.yml + when: + - "trove_services['trove-api']['group'] in group_names" + - "inventory_hostname == ((groups[trove_services['trove-api']['group']]| intersect(ansible_play_hosts)) | list)[0]" + with_items: + - oslomsg_setup_host: "{{ trove_oslomsg_rpc_setup_host }}" + oslomsg_userid: "{{ trove_oslomsg_rpc_userid }}" + oslomsg_password: "{{ trove_oslomsg_rpc_password }}" + oslomsg_vhost: "{{ trove_oslomsg_rpc_vhost }}" + oslomsg_transport: "{{ trove_oslomsg_rpc_transport }}" + - oslomsg_setup_host: "{{ trove_oslomsg_notify_setup_host }}" + oslomsg_userid: "{{ trove_oslomsg_notify_userid }}" + oslomsg_password: "{{ trove_oslomsg_notify_password }}" + oslomsg_vhost: "{{ trove_oslomsg_notify_vhost }}" + oslomsg_transport: "{{ trove_oslomsg_notify_transport }}" + no_log: true + tags: + - trove-config + - include: trove_db_setup.yml when: inventory_hostname == groups['trove_conductor'][0] tags: diff --git a/tasks/mq_setup.yml b/tasks/mq_setup.yml new file mode 100644 index 0000000..2ef034a --- /dev/null +++ b/tasks/mq_setup.yml @@ -0,0 +1,45 @@ +--- +# Copyright 2018, Rackspace US, 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/mq_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 MQ Service (RabbitMQ) + delegate_to: "{{ item.oslomsg_setup_host }}" + when: + - "item.oslomsg_transport == 'rabbit'" + block: + - name: Add RabbitMQ vhost + rabbitmq_vhost: + name: "{{ item.oslomsg_vhost }}" + state: "present" + + - name: Add RabbitMQ user + rabbitmq_user: + user: "{{ item.oslomsg_userid }}" + password: "{{ item.oslomsg_password }}" + vhost: "{{ item.oslomsg_vhost }}" + configure_priv: ".*" + read_priv: ".*" + write_priv: ".*" + state: "present" + force: true + no_log: true + +# Note: Add the tasks for additional MQ servers here