Add quorum support for service

This change implements and enables by default quorum support
for rabbitmq as well as providing default variables to globally tune
it's behaviour.

Depends-On: https://review.opendev.org/c/openstack/openstack-ansible-plugins/+/896017
Depends-On: https://review.opendev.org/c/openstack/openstack-ansible-os_keystone/+/900631
Depends-On: https://review.opendev.org/c/openstack/openstack-ansible-os_swift/+/900632

Change-Id: I3292a388766654b1a10434ee8ba060e28607e707
This commit is contained in:
Dmitriy Rabotyagov 2023-09-18 17:15:52 +02:00 committed by Dmitriy Rabotyagov
parent d632cee836
commit 435a69ed31
3 changed files with 86 additions and 14 deletions

View File

@ -66,7 +66,13 @@ ceilometer_oslomsg_rpc_transport: "{{ oslomsg_rpc_transport | default('rabbit')
ceilometer_oslomsg_rpc_port: "{{ oslomsg_rpc_port | default('5672') }}"
ceilometer_oslomsg_rpc_use_ssl: "{{ oslomsg_rpc_use_ssl | default(False) }}"
ceilometer_oslomsg_rpc_userid: ceilometer
ceilometer_oslomsg_rpc_vhost: /ceilometer
# vhost name depends on value of oslomsg_rabbit_quorum_queues. In case quorum queues
# are not used - vhost name will be prefixed with leading `/`.
ceilometer_oslomsg_rpc_vhost:
- name: /ceilometer
state: "{{ ceilometer_oslomsg_rabbit_quorum_queues | ternary('absent', 'present') }}"
- name: ceilometer
state: "{{ ceilometer_oslomsg_rabbit_quorum_queues | ternary('present', 'absent') }}"
ceilometer_oslomsg_rpc_ssl_version: "{{ oslomsg_rpc_ssl_version | default('TLSv1_2') }}"
ceilometer_oslomsg_rpc_ssl_ca_file: "{{ oslomsg_rpc_ssl_ca_file | default('') }}"
@ -83,6 +89,11 @@ ceilometer_oslomsg_notify_vhost: "{{ ceilometer_oslomsg_rpc_vhost }}"
ceilometer_oslomsg_notify_ssl_version: "{{ oslomsg_rpc_ssl_version | default('TLSv1_2') }}"
ceilometer_oslomsg_notify_ssl_ca_file: "{{ oslomsg_rpc_ssl_ca_file | default('') }}"
## RabbitMQ integration
ceilometer_oslomsg_rabbit_quorum_queues: "{{ oslomsg_rabbit_quorum_queues | default(True) }}"
ceilometer_oslomsg_rabbit_quorum_delivery_limit: "{{ oslomsg_rabbit_quorum_delivery_limit | default(0) }}"
ceilometer_oslomsg_rabbit_quorum_max_memory_bytes: "{{ oslomsg_rabbit_quorum_max_memory_bytes | default(0) }}"
# Cinder notifications
cinder_oslomsg_notify_host_group: "{{ oslomsg_notify_host_group | default('rabbitmq_all') }}"
cinder_oslomsg_notify_transport: "{{ oslomsg_notify_transport | default('rabbit') }}"
@ -90,7 +101,11 @@ cinder_oslomsg_notify_port: "{{ oslomsg_notify_port | default('5672') }}"
cinder_oslomsg_notify_use_ssl: "{{ oslomsg_notify_use_ssl | default(False) }}"
cinder_oslomsg_notify_userid: "{{ cinder_oslomsg_rpc_userid | default('cinder') }}"
cinder_oslomsg_notify_password: "{{ cinder_ceilometer_enabled | ternary(cinder_oslomsg_rpc_password, '') }}"
cinder_oslomsg_notify_vhost: "{{ cinder_oslomsg_rpc_vhost | default('/cinder') }}"
cinder_oslomsg_notify_vhost: >-
{{
cinder_oslomsg_rpc_vhost | default(
(cinder_oslomsg_rabbit_quorum_queues | default(oslomsg_rabbit_quorum_queues | default(True)) | bool) | ternary('cinder', '/cinder'))
}}
cinder_oslomsg_notify_ssl_version: "{{ oslomsg_rpc_ssl_version | default('TLSv1_2') }}"
cinder_oslomsg_notify_ssl_ca_file: "{{ oslomsg_rpc_ssl_ca_file | default('') }}"
@ -101,7 +116,11 @@ designate_oslomsg_notify_port: "{{ oslomsg_notify_port | default('5672') }}"
designate_oslomsg_notify_use_ssl: "{{ oslomsg_notify_use_ssl | default(False) }}"
designate_oslomsg_notify_userid: "{{ designate_oslomsg_rpc_userid | default('designate-rpc') }}"
designate_oslomsg_notify_password: "{{ designate_ceilometer_enabled | ternary(designate_oslomsg_rpc_password, '') }}"
designate_oslomsg_notify_vhost: "{{ designate_oslomsg_rpc_vhost | default('/designate') }}"
designate_oslomsg_notify_vhost: >-
{{
designate_oslomsg_rpc_vhost | default(
(designate_oslomsg_rabbit_quorum_queues | default(oslomsg_rabbit_quorum_queues | default(True)) | bool) | ternary('designate', '/designate'))
}}
designate_oslomsg_notify_ssl_version: "{{ oslomsg_rpc_ssl_version | default('TLSv1_2') }}"
designate_oslomsg_notify_ssl_ca_file: "{{ oslomsg_rpc_ssl_ca_file | default('') }}"
@ -112,7 +131,11 @@ glance_oslomsg_notify_port: "{{ oslomsg_notify_port | default('5672') }}"
glance_oslomsg_notify_use_ssl: "{{ oslomsg_notify_use_ssl | default(False) }}"
glance_oslomsg_notify_userid: "{{ glance_oslomsg_rpc_userid | default('glance') }}"
glance_oslomsg_notify_password: "{{ glance_ceilometer_enabled | ternary(glance_oslomsg_rpc_password, '') }}"
glance_oslomsg_notify_vhost: "{{ glance_oslomsg_rpc_vhost | default('/glance') }}"
glance_oslomsg_notify_vhost: >-
{{
glance_oslomsg_rpc_vhost | default(
(glance_oslomsg_rabbit_quorum_queues | default(oslomsg_rabbit_quorum_queues | default(True)) | bool) | ternary('glance', '/glance'))
}}
glance_oslomsg_notify_ssl_version: "{{ oslomsg_rpc_ssl_version | default('TLSv1_2') }}"
glance_oslomsg_notify_ssl_ca_file: "{{ oslomsg_rpc_ssl_ca_file | default('') }}"
@ -123,7 +146,11 @@ heat_oslomsg_notify_port: "{{ oslomsg_notify_port | default('5672') }}"
heat_oslomsg_notify_use_ssl: "{{ oslomsg_notify_use_ssl | default(False) }}"
heat_oslomsg_notify_userid: "{{ heat_oslomsg_rpc_userid | default('heat') }}"
heat_oslomsg_notify_password: "{{ heat_ceilometer_enabled | ternary(heat_oslomsg_rpc_password, '') }}"
heat_oslomsg_notify_vhost: "{{ heat_oslomsg_rpc_vhost | default('/heat') }}"
heat_oslomsg_notify_vhost: >-
{{
heat_oslomsg_rpc_vhost | default(
(heat_oslomsg_rabbit_quorum_queues | default(oslomsg_rabbit_quorum_queues | default(True)) | bool) | ternary('heat', '/heat'))
}}
heat_oslomsg_notify_ssl_version: "{{ oslomsg_rpc_ssl_version | default('TLSv1_2') }}"
heat_oslomsg_notify_ssl_ca_file: "{{ oslomsg_rpc_ssl_ca_file | default('') }}"
@ -134,7 +161,11 @@ keystone_oslomsg_notify_port: "{{ oslomsg_notify_port | default('5672') }}"
keystone_oslomsg_notify_use_ssl: "{{ oslomsg_notify_use_ssl | default(False) }}"
keystone_oslomsg_notify_userid: "{{ keystone_oslomsg_rpc_userid | default('keystone') }}"
keystone_oslomsg_notify_password: "{{ keystone_ceilometer_enabled | ternary(keystone_oslomsg_rpc_password, '') }}"
keystone_oslomsg_notify_vhost: "{{ keystone_oslomsg_rpc_vhost | default('/keystone') }}"
keystone_oslomsg_notify_vhost: >-
{{
keystone_oslomsg_rpc_vhost | default(
(keystone_oslomsg_rabbit_quorum_queues | default(oslomsg_rabbit_quorum_queues | default(True)) | bool) | ternary('keystone', '/keystone'))
}}
keystone_oslomsg_notify_ssl_version: "{{ oslomsg_rpc_ssl_version | default('TLSv1_2') }}"
keystone_oslomsg_notify_ssl_ca_file: "{{ oslomsg_rpc_ssl_ca_file | default('') }}"
@ -145,7 +176,11 @@ neutron_oslomsg_notify_port: "{{ oslomsg_notify_port | default('5672') }}"
neutron_oslomsg_notify_use_ssl: "{{ oslomsg_notify_use_ssl | default(False) }}"
neutron_oslomsg_notify_userid: "{{ neutron_oslomsg_rpc_userid | default('neutron') }}"
neutron_oslomsg_notify_password: "{{ neutron_ceilometer_enabled | ternary(neutron_oslomsg_rpc_password, '') }}"
neutron_oslomsg_notify_vhost: "{{ neutron_oslomsg_rpc_vhost | default('/neutron') }}"
neutron_oslomsg_notify_vhost: >-
{{
neutron_oslomsg_rpc_vhost | default(
(neutron_oslomsg_rabbit_quorum_queues | default(oslomsg_rabbit_quorum_queues | default(True)) | bool) | ternary('neutron', '/neutron'))
}}
neutron_oslomsg_notify_ssl_version: "{{ oslomsg_rpc_ssl_version | default('TLSv1_2') }}"
neutron_oslomsg_notify_ssl_ca_file: "{{ oslomsg_rpc_ssl_ca_file | default('') }}"
@ -156,7 +191,11 @@ nova_oslomsg_notify_port: "{{ oslomsg_notify_port | default('5672') }}"
nova_oslomsg_notify_use_ssl: "{{ oslomsg_notify_use_ssl | default(False) }}"
nova_oslomsg_notify_userid: "{{ nova_oslomsg_rpc_userid | default('nova') }}"
nova_oslomsg_notify_password: "{{ nova_ceilometer_enabled | ternary(nova_oslomsg_rpc_password, '') }}"
nova_oslomsg_notify_vhost: "{{ nova_oslomsg_rpc_vhost | default('/nova') }}"
nova_oslomsg_notify_vhost: >-
{{
nova_oslomsg_rpc_vhost | default(
(nova_oslomsg_rabbit_quorum_queues | default(oslomsg_rabbit_quorum_queues | default(True)) | bool) | ternary('nova', '/nova'))
}}
nova_oslomsg_notify_ssl_version: "{{ oslomsg_rpc_ssl_version | default('TLSv1_2') }}"
nova_oslomsg_notify_ssl_ca_file: "{{ oslomsg_rpc_ssl_ca_file | default('') }}"
@ -167,7 +206,11 @@ octavia_oslomsg_notify_port: "{{ oslomsg_notify_port | default('5672') }}"
octavia_oslomsg_notify_use_ssl: "{{ oslomsg_notify_use_ssl | default(False) }}"
octavia_oslomsg_notify_userid: "{{ octavia_oslomsg_rpc_userid | default('octavia') }}"
octavia_oslomsg_notify_password: "{{ octavia_ceilometer_enabled | ternary(octavia_oslomsg_rpc_password, '') }}"
octavia_oslomsg_notify_vhost: "{{ octavia_oslomsg_rpc_vhost | default('/octavia') }}"
octavia_oslomsg_notify_vhost: >-
{{
octavia_oslomsg_rpc_vhost | default(
(octavia_oslomsg_rabbit_quorum_queues | default(oslomsg_rabbit_quorum_queues | default(True)) | bool) | ternary('octavia', '/octavia'))
}}
octavia_oslomsg_notify_ssl_version: "{{ oslomsg_rpc_ssl_version | default('TLSv1_2') }}"
octavia_oslomsg_notify_ssl_ca_file: "{{ oslomsg_rpc_ssl_ca_file | default('') }}"
@ -178,7 +221,11 @@ sahara_oslomsg_notify_port: "{{ oslomsg_notify_port | default('5672') }}"
sahara_oslomsg_notify_use_ssl: "{{ oslomsg_notify_use_ssl | default(False) }}"
sahara_oslomsg_notify_userid: "{{ sahara_oslomsg_rpc_userid | default('sahara') }}"
sahara_oslomsg_notify_password: "{{ sahara_ceilometer_enabled | ternary(sahara_oslomsg_rpc_password, '') }}"
sahara_oslomsg_notify_vhost: "{{ sahara_oslomsg_rpc_vhost | default('/sahara') }}"
sahara_oslomsg_notify_vhost: >-
{{
sahara_oslomsg_rpc_vhost | default(
(sahara_oslomsg_rabbit_quorum_queues | default(oslomsg_rabbit_quorum_queues | default(True)) | bool) | ternary('sahara', '/sahara'))
}}
sahara_oslomsg_notify_ssl_version: "{{ oslomsg_rpc_ssl_version | default('TLSv1_2') }}"
sahara_oslomsg_notify_ssl_ca_file: "{{ oslomsg_rpc_ssl_ca_file | default('') }}"
@ -188,7 +235,11 @@ swift_oslomsg_notify_transport: "{{ oslomsg_notify_transport | default('rabbit')
swift_oslomsg_notify_port: "{{ oslomsg_notify_port | default('5672') }}"
swift_oslomsg_notify_use_ssl: "{{ oslomsg_notify_use_ssl | default(False) }}"
swift_oslomsg_notify_userid: "swift"
swift_oslomsg_notify_vhost: "/swift"
swift_oslomsg_notify_vhost: >-
{{
swift_oslomsg_rpc_vhost | default(
(swift_oslomsg_rabbit_quorum_queues | default(oslomsg_rabbit_quorum_queues | default(True)) | bool) | ternary('swift', '/swift'))
}}
swift_oslomsg_notify_ssl_version: "{{ oslomsg_rpc_ssl_version | default('TLSv1_2') }}"
swift_oslomsg_notify_ssl_ca_file: "{{ oslomsg_rpc_ssl_ca_file | default('') }}"
@ -199,7 +250,11 @@ 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_oslomsg_rpc_userid | default('trove') }}"
trove_oslomsg_notify_password: "{{ trove_ceilometer_enabled | ternary(trove_oslomsg_rpc_password, '') }}"
trove_oslomsg_notify_vhost: "{{ trove_oslomsg_rpc_vhost | default('/trove') }}"
trove_oslomsg_notify_vhost: >-
{{
trove_oslomsg_rpc_vhost | default(
(trove_oslomsg_rabbit_quorum_queues | default(oslomsg_rabbit_quorum_queues | default(True)) | bool) | ternary('trove', '/trove'))
}}
trove_oslomsg_notify_ssl_version: "{{ oslomsg_rpc_ssl_version | default('TLSv1_2') }}"
trove_oslomsg_notify_ssl_ca_file: "{{ oslomsg_rpc_ssl_ca_file | default('') }}"

View File

@ -20,7 +20,7 @@ auth_strategy = keystone
aodh_is_enabled = {{ ceilometer_aodh_enabled | bool }}
# RPC
transport_url = {{ _oslomsg_url(ceilometer_oslomsg_rpc_transport, ceilometer_oslomsg_rpc_userid, ceilometer_oslomsg_rpc_password, groups[ceilometer_oslomsg_rpc_host_group], ceilometer_oslomsg_rpc_port, ceilometer_oslomsg_rpc_vhost, ceilometer_oslomsg_rpc_use_ssl, ceilometer_oslomsg_rpc_ssl_version, ceilometer_oslomsg_rpc_ssl_ca_file) }}
transport_url = {{ _oslomsg_url(ceilometer_oslomsg_rpc_transport, ceilometer_oslomsg_rpc_userid, ceilometer_oslomsg_rpc_password, groups[ceilometer_oslomsg_rpc_host_group], ceilometer_oslomsg_rpc_port, _ceilometer_oslomsg_rpc_vhost_conf, ceilometer_oslomsg_rpc_use_ssl, ceilometer_oslomsg_rpc_ssl_version, ceilometer_oslomsg_rpc_ssl_ca_file) }}
{% if ceilometer_gnocchi_enabled | bool %}
event_dispatchers = gnocchi
@ -32,8 +32,13 @@ event_dispatchers = database
polling_namespaces = {{ _ceilometer_polling_namespaces | join(',') }}
{% if ceilometer_oslomsg_rpc_transport == 'rabbit' %}
[oslo_messaging_rabbit]
ssl = {{ ceilometer_oslomsg_rpc_use_ssl }}
rabbit_quorum_queue = {{ ceilometer_oslomsg_rabbit_quorum_queues }}
rabbit_quorum_delivery_limit = {{ ceilometer_oslomsg_rabbit_quorum_delivery_limit }}
rabbit_quorum_max_memory_bytes = {{ ceilometer_oslomsg_rabbit_quorum_max_memory_bytes }}
{% endif %}
{% if 'ceilometer_agent_notification' in group_names %}
[notification]
@ -43,7 +48,7 @@ store_events = {{ not ceilometer_gnocchi_enabled | bool }}
# Notification queues to listen on
# Ceilometer needs to connect to it's own notification vhost
messaging_urls = {{ _oslomsg_url(ceilometer_oslomsg_notify_transport, ceilometer_oslomsg_notify_userid, ceilometer_oslomsg_notify_password, groups[ceilometer_oslomsg_notify_host_group], ceilometer_oslomsg_notify_port, ceilometer_oslomsg_notify_vhost, ceilometer_oslomsg_notify_use_ssl, ceilometer_oslomsg_notify_ssl_version, ceilometer_oslomsg_notify_ssl_ca_file) }}
messaging_urls = {{ _oslomsg_url(ceilometer_oslomsg_notify_transport, ceilometer_oslomsg_notify_userid, ceilometer_oslomsg_notify_password, groups[ceilometer_oslomsg_notify_host_group], ceilometer_oslomsg_notify_port, _ceilometer_oslomsg_notify_vhost_conf, ceilometer_oslomsg_notify_use_ssl, ceilometer_oslomsg_notify_ssl_version, ceilometer_oslomsg_notify_ssl_ca_file) }}
{% if cinder_ceilometer_enabled %}
# Cinder notifications

View File

@ -22,6 +22,18 @@ ceilometer_osprofiler_event_definitions_user_content: "{{ lookup('file', ceilome
ceilometer_polling_user_content: "{{ lookup('file', ceilometer_polling_default_file_path, errors='ignore') }}"
ceilometer_pipeline_user_content: "{{ lookup('file', ceilometer_pipeline_default_file_path, errors='ignore') }}"
_ceilometer_oslomsg_rpc_vhost_conf: >-
{{
(ceilometer_oslomsg_rpc_vhost is string) | ternary(ceilometer_oslomsg_rpc_vhost, ceilometer_oslomsg_rpc_vhost | selectattr(
'state', 'eq', 'present') | map(attribute='name') | first)
}}
_ceilometer_oslomsg_notify_vhost_conf: >-
{{
(ceilometer_oslomsg_notify_vhost is string) | ternary(ceilometer_oslomsg_notify_vhost, ceilometer_oslomsg_notify_vhost | selectattr(
'state', 'eq', 'present') | map(attribute='name') | first)
}}
_ceilometer_polling_namespaces: |
{% set _polling_namespaces = [] %}
{% if 'ceilometer_agent_central' in group_names %}