Update to use oslo.messaging service RPC and Notify

This introduces oslo.messaging variables that define the RPC and
Notify transports for the OpenStack services. These parameters replace
the rabbitmq values and are used to generate the messaging
transport_url for the service.

This patch:
* Add oslo.messaging variables for RPC and Notify to defaults
* Update transport_url generation in conf
* Add oslo.messaging to tests inventory and update tests
* Install extra packages for optional drivers
* Add release note

Change-Id: I0612252927f81b3584054f6cd77a2826c5d3fc3b
This commit is contained in:
Andy Smith 2018-07-27 10:30:26 -04:00 committed by Jesse Pretorius
parent 44037f0c1b
commit cfddca21eb
8 changed files with 91 additions and 30 deletions

View File

@ -24,7 +24,8 @@ Required Variables
.. code-block:: yaml
cloudkitty_service_password
cloudkitty_rabbitmq_password
cloudkitty_oslomsg_rpc_password
cloudkitty_oslomsg_notify_password
cloudkitty_container_mysql_password
cloudkitty_galera_address
@ -44,7 +45,8 @@ Example Playbook
cloudkitty_galera_address: "{{ internal_lb_vip_address }}"
cloudkitty_container_mysql_password: "SuperSecretePassword1"
cloudkitty_service_password: "SuperSecretePassword2"
cloudkitty_rabbitmq_password: "SuperSecretePassword3"
cloudkitty_oslomsg_rpc_password: "SuperSecretePassword3"
cloudkitty_oslomsg_notify_password: "SuperSecretePassword4"
Documentation for the project can be found at:
https://docs.openstack.org/openstack-ansible-os_cloudkitty/latest/

View File

@ -28,11 +28,24 @@ cloudkitty_pip_package_state: "latest"
cloudkitty_service_user_name: cloudkitty
cloudkitty_rabbitmq_userid: cloudkitty
cloudkitty_rabbitmq_vhost: /cloudkitty
cloudkitty_rabbitmq_port: 5672
cloudkitty_rabbitmq_servers: 127.0.0.1
cloudkitty_rabbitmq_use_ssl: False
## Oslo Messaging info
# RPC
cloudkitty_oslomsg_rpc_transport: rabbit
cloudkitty_oslomsg_rpc_servers: 127.0.0.1
cloudkitty_oslomsg_rpc_port: 5672
cloudkitty_oslomsg_rpc_use_ssl: False
cloudkitty_oslomsg_rpc_userid: cloudkitty
cloudkitty_oslomsg_rpc_vhost: /cloudkitty
# Notify
cloudkitty_oslomsg_notify_transport: rabbit
cloudkitty_oslomsg_notify_servers: 127.0.0.1
cloudkitty_oslomsg_notify_port: 5672
cloudkitty_oslomsg_notify_use_ssl: False
cloudkitty_oslomsg_notify_userid: "{{ cloudkitty_oslomsg_rpc_userid }}"
cloudkitty_oslomsg_notify_password: "{{ cloudkitty_oslomsg_rpc_password }}"
cloudkitty_oslomsg_notify_vhost: "{{ cloudkitty_oslomsg_rpc_vhost }}"
cloudkitty_system_group_name: cloudkitty
cloudkitty_system_user_name: cloudkitty
@ -117,6 +130,13 @@ cloudkitty_pip_packages:
- SQLAlchemy>=1.0.10
- tooz
## (Qdrouterd) integration
# TODO(ansmith): Change structure when more backends will be supported
cloudkitty_oslomsg_amqp1_enabled: "{{ cloudkitty_oslomsg_rpc_transport == 'amqp' }}"
cloudkitty_optional_oslomsg_amqp1_pip_packages:
- oslo.messaging[amqp1]
# This variable is used by the repo_build process to determine
# which host group to check for members of before building the
# pip packages required by this role. The value is picked up

View File

@ -0,0 +1,19 @@
---
features:
- Support separate oslo.messaging services for RPC and Notifications
to enable operation of separate and different messaging backend servers.
deprecations:
- |
The rabbitmq server parameters have been replaced by corresponding
oslo.messaging RPC and Notify parameters in order to abstract the
messaging service from the actual backend server deployment.
- cloudkitty_oslomsg_rpc_servers replaces rabbitmq_servers
- cloudkitty_oslomsg_rpc_port replaces rabbitmq_port
- cloudkitty_oslomsg_rpc_userid replaces rabbitmq_userid
- cloudkitty_oslomsg_rpc_vhost replaces rabbitmq_vhost
- cloudkitty_oslomsg_rpc_use_ssl replaces rabbitmq_use_ssl
- added cloudkitty_oslomsg_notify_servers
- added cloudkitty_oslomsg_notify_port
- added cloudkitty_oslomsg_notify_use_ssl
- added cloudkitty_oslomsg_notify_userid
- added cloudkitty_oslomsg_notify_vhost

View File

@ -132,3 +132,20 @@
- skip_ansible_lint
- cloudkitty-install
- cloudkitty-pip-packages
- name: Install optional pip packages
pip:
name: "{{ cloudkitty_optional_oslomsg_amqp1_pip_packages }}"
state: "{{ cloudkitty_pip_package_state }}"
virtualenv: "{{ cloudkitty_bin | dirname }}"
virtualenv_site_packages: "no"
when: cloudkitty_oslomsg_amqp1_enabled
register: install_optional_packages
until: install_optional_packages is success
retries: 5
delay: 2
notify:
- Restart cloudkitty services
tags:
- cloudkitty-install
- cloudkitty-pip-packages

View File

@ -6,8 +6,8 @@ use_stderr = False
debug = {{ debug }}
notification_topics = {{ cloudkitty_notification_topics }}
## RabbitMQ RPC
transport_url = rabbit://{% for host in cloudkitty_rabbitmq_servers.split(',') %}{{ cloudkitty_rabbitmq_userid }}:{{ cloudkitty_rabbitmq_password }}@{{ host }}:{{ cloudkitty_rabbitmq_port }}{% if not loop.last %},{% else %}/{{ cloudkitty_rabbitmq_vhost }}{% endif %}{% endfor %}
## Oslo Messaging RPC
transport_url = {{ cloudkitty_oslomsg_rpc_transport }}://{% for host in cloudkitty_oslomsg_rpc_servers.split(',') %}{{ cloudkitty_oslomsg_rpc_userid }}:{{ cloudkitty_oslomsg_rpc_password }}@{{ host }}:{{ cloudkitty_oslomsg_rpc_port }}{% if not loop.last %},{% else %}/{{ cloudkitty_oslomsg_rpc_vhost }}{% if (cloudkitty_oslomsg_rpc_use_ssl | lower) | bool %}?ssl=1{% else %}?ssl=0{% endif %}{% endif %}{% endfor %}
[api]
port = {{ cloudkitty_service_port }}
@ -47,7 +47,10 @@ auth_section = keystone_authtoken
[oslo_messaging_qpid]
[oslo_messaging_rabbit]
ssl = {{ cloudkitty_rabbitmq_use_ssl }}
ssl = {{ cloudkitty_oslomsg_notify_use_ssl | bool }}
[oslo_messaging_notifications]
transport_url = {{ cloudkitty_oslomsg_notify_transport }}://{% for host in cloudkitty_oslomsg_notify_servers.split(',') %}{{ cloudkitty_oslomsg_notify_userid }}:{{ cloudkitty_oslomsg_notify_password }}@{{ host }}:{{ cloudkitty_oslomsg_notify_port }}{% if not loop.last %},{% else %}/{{ cloudkitty_oslomsg_notify_vhost }}{% if (cloudkitty_oslomsg_notify_use_ssl | lower) | bool %}?ssl=1{% else %}?ssl=0{% endif %}{% endif %}{% endfor %}
[output]
pipeline = {{ cloudkitty_output_pipeline }}
@ -65,4 +68,4 @@ backend = {{ cloudkitty_output_backend }}
auth_section = keystone_authtoken
[orchestrator]
coordination_url = mysql://{{ cloudkitty_galera_user }}:{{ cloudkitty_container_mysql_password }}@{{ cloudkitty_galera_address }}/{{ cloudkitty_galera_database }}
coordination_url = mysql://{{ cloudkitty_galera_user }}:{{ cloudkitty_container_mysql_password }}@{{ cloudkitty_galera_address }}/{{ cloudkitty_galera_database }}

View File

@ -7,6 +7,12 @@ openstack1 ansible_host=10.100.100.3 ansible_become=True ansible_user=root
service1
openstack1
[oslomsg_rpc_all]
service1
[oslomsg_notify_all]
service1
[rabbitmq_all]
service1

View File

@ -20,6 +20,9 @@ cloudkitty_requirements_git_install_branch: master
cloudkitty_galera_address: "{{ hostvars[groups['galera_all'][0]]['ansible_host'] }}"
cloudkitty_container_mysql_password: "SuperSecrete"
cloudkitty_service_password: "secrete"
cloudkitty_rabbitmq_password: "secrete"
cloudkitty_rabbitmq_userid: cloudkitty
cloudkitty_rabbitmq_vhost: /cloudkitty
cloudkitty_oslomsg_rpc_password: "secrete"
cloudkitty_oslomsg_rpc_userid: cloudkitty
cloudkitty_oslomsg_rpc_vhost: /cloudkitty
cloudkitty_oslomsg_notify_password: "secrete"
cloudkitty_oslomsg_notify_userid: cloudkitty
cloudkitty_oslomsg_notify_vhost: /cloudkitty

View File

@ -18,22 +18,13 @@
remote_user: root
gather_facts: true
pre_tasks:
- name: Ensure Rabbitmq vhost
rabbitmq_vhost:
name: "{{ cloudkitty_rabbitmq_vhost }}"
state: "present"
delegate_to: "{{ hostvars[groups['rabbitmq_all'][0]]['ansible_host'] }}"
- name: Ensure rabbitmq user
rabbitmq_user:
user: "{{ cloudkitty_rabbitmq_userid }}"
password: "{{ cloudkitty_rabbitmq_password }}"
vhost: "{{ cloudkitty_rabbitmq_vhost }}"
configure_priv: ".*"
read_priv: ".*"
write_priv: ".*"
state: "present"
no_log: true
delegate_to: "{{ hostvars[groups['rabbitmq_all'][0]]['ansible_host'] }}"
- include: common/ensure-oslomsg.yml
rpc_vhost: "{{ cloudkitty_oslomsg_rpc_vhost }}"
rpc_user: "{{ cloudkitty_oslomsg_rpc_userid }}"
rpc_password: "{{ cloudkitty_oslomsg_rpc_password }}"
notify_vhost: "{{ cloudkitty_oslomsg_notify_vhost }}"
notify_user: "{{ cloudkitty_oslomsg_notify_userid }}"
notify_password: "{{ cloudkitty_oslomsg_notify_password }}"
roles:
- role: "os_cloudkitty"
vars_files: