diff --git a/defaults/main.yml b/defaults/main.yml index 22675dda..89ba28e0 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -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('') }}" diff --git a/templates/ceilometer.conf.j2 b/templates/ceilometer.conf.j2 index a4b159b9..237eb84b 100644 --- a/templates/ceilometer.conf.j2 +++ b/templates/ceilometer.conf.j2 @@ -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 diff --git a/vars/main.yml b/vars/main.yml index aed62b2c..a04d5a99 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -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 %}