From f4757d65745ac7f3c04beb6d0a3dd9125f81717a Mon Sep 17 00:00:00 2001 From: Miguel Alex Cantu Date: Tue, 5 Jan 2016 15:24:09 +0000 Subject: [PATCH] Add ceilometer messaging_url for each service... Without specifying messaging_urls, ceilometer only listens on the vhost specified in the rabbit configuration directives. To align with the the default OSA architecture, which isolates each service into it's own respective rabbitmq vhost, this patchset has added jinja code in the ceilometer.conf.j2 template to specifiy a messaging_url for each service, and for each service, each rabbitmq host. This ensures ceilometer is spawning the correct number of listeners on the correct vhost and consuming notifications correctly. In addition, a few small changes were made in the patch set: * store_events is now True by default * rabbitmq_userid and rabbitmq_vhost service variables have been moved to group_vars. Change-Id: I2bd9cf0ac7ca0492f6b2c56897f77117d2ae730b Depends-On: I98bcd17dac9a47cc19e0d9ec90176945a6d7e355 Closes-Bug: #1526457 --- playbooks/inventory/group_vars/hosts.yml | 16 ++++++++ .../templates/ceilometer.conf.j2 | 39 +++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/playbooks/inventory/group_vars/hosts.yml b/playbooks/inventory/group_vars/hosts.yml index 1a00f95aa3..cacba44229 100644 --- a/playbooks/inventory/group_vars/hosts.yml +++ b/playbooks/inventory/group_vars/hosts.yml @@ -131,6 +131,8 @@ nova_ceph_client: '{{ cinder_ceph_client }}' nova_ceph_client_uuid: '{{ cinder_ceph_client_uuid | default() }}' nova_dhcp_domain: "{{ dhcp_domain }}" nova_service_in_ldap: "{{ service_ldap_backend_enabled }}" +nova_rabbitmq_userid: nova +nova_rabbitmq_vhost: /nova ## Neutron @@ -146,6 +148,8 @@ neutron_service_adminurl: "{{ neutron_service_adminuri }}" neutron_service_region: "{{ service_region }}" neutron_dhcp_domain: "{{ dhcp_domain }}" neutron_service_in_ldap: "{{ service_ldap_backend_enabled }}" +neutron_rabbitmq_userid: neutron +neutron_rabbitmq_vhost: /neutron ## Glance @@ -161,6 +165,8 @@ glance_service_region: "{{ service_region }}" glance_service_in_ldap: "{{ service_ldap_backend_enabled }}" # Only specify this if you want to list the servers - by default LB host/port will be used #glance_api_servers: "{% for host in groups['glance_all'] %}{{ hostvars[host]['container_address'] }}:{{ glance_service_port }}{% if not loop.last %},{% endif %}{% endfor %}" +glance_rabbitmq_userid: glance +glance_rabbitmq_vhost: /glance ## Keystone @@ -175,6 +181,8 @@ keystone_service_publicuri_proto: "{{ openstack_service_publicuri_proto | defaul keystone_service_user_name: keystone keystone_service_tenant_name: service keystone_service_region: "{{ service_region }}" +keystone_rabbitmq_userid: keystone +keystone_rabbitmq_vhost: /keystone keystone_service_internaluri_insecure: false keystone_service_adminuri_insecure: false @@ -196,11 +204,15 @@ keystone_service_in_ldap: "{{ service_ldap_backend_enabled }}" horizon_service_region: "{{ service_region }}" horizon_enable_cinder_backup: "{% if cinder_service_backup_program_enabled is defined and cinder_service_backup_program_enabled | bool %}True{% else %}False{% endif %}" horizon_enable_neutron_lbaas: "{% if neutron_plugin_base is defined and 'neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPlugin' in neutron_plugin_base %}True{% else %}False{% endif %}" +horizon_rabbitmq_userid: horizon +horizon_rabbitmq_vhost: /horizon ## Heat heat_service_region: "{{ service_region }}" heat_service_in_ldap: "{{ service_ldap_backend_enabled }}" +heat_rabbitmq_userid: heat +heat_rabbitmq_vhost: /heat ## Cinder @@ -223,6 +235,8 @@ cinder_ceph_client: cinder cinder_backend_lvm_inuse: '{{ (cinder_backends|default("")|to_json).find("cinder.volume.drivers.lvm.LVMVolumeDriver") != -1 }}' cinder_service_region: "{{ service_region }}" cinder_service_in_ldap: "{{ service_ldap_backend_enabled }}" +cinder_rabbitmq_userid: cinder +cinder_rabbitmq_vhost: /cinder ## Swift @@ -233,6 +247,8 @@ swift_system_comment: swift system user swift_system_home_folder: "/var/lib/{{ swift_system_user_name }}" swift_service_region: "{{ service_region }}" swift_service_in_ldap: "{{ service_ldap_backend_enabled }}" +swift_rabbitmq_userid: swift +swift_rabbitmq_vhost: /swift ## OpenStack Openrc diff --git a/playbooks/roles/os_ceilometer/templates/ceilometer.conf.j2 b/playbooks/roles/os_ceilometer/templates/ceilometer.conf.j2 index e1c1a764c0..3bfd5b9e88 100644 --- a/playbooks/roles/os_ceilometer/templates/ceilometer.conf.j2 +++ b/playbooks/roles/os_ceilometer/templates/ceilometer.conf.j2 @@ -4,6 +4,7 @@ {% set workers = _workers if _workers > 0 else 1 %} [DEFAULT] +debug = {{ debug }} auth_strategy = keystone notification_topics = notifications rpc_backend = rabbit @@ -29,6 +30,44 @@ workers = {{ ceilometer_collector_workers | default(workers) }} [notification] workers = {{ ceilometer_notification_workers | default(workers) }} +store_events = True +# Configuring the notification queue listeners +# Ceilometer needs to connect to it's own rabbitmq vhost +{% for host in groups['rabbitmq_all'] %} +messaging_urls = rabbit://{{ ceilometer_rabbitmq_userid }}:{{ ceilometer_rabbitmq_password }}@{{ hostvars[host]['ansible_ssh_host'] }}:{{ rabbitmq_port }}/{{ ceilometer_rabbitmq_vhost }} +{% endfor %} +{% if glance_ceilometer_enabled %} +# Glance +{% for host in groups['rabbitmq_all'] %} +messaging_urls = rabbit://{{ glance_rabbitmq_userid }}:{{ glance_rabbitmq_password }}@{{ hostvars[host]['ansible_ssh_host'] }}:{{ rabbitmq_port }}/{{ glance_rabbitmq_vhost }} +{% endfor %} +{% endif %} +{% if nova_ceilometer_enabled %} +# Nova +{% for host in groups['rabbitmq_all'] %} +messaging_urls = rabbit://{{ nova_rabbitmq_userid }}:{{ nova_rabbitmq_password }}@{{ hostvars[host]['ansible_ssh_host'] }}:{{ rabbitmq_port }}/{{ nova_rabbitmq_vhost }} +{% endfor %} +{% endif %} +{% if cinder_ceilometer_enabled %} +# Cinder +{% for host in groups['rabbitmq_all'] %} +messaging_urls = rabbit://{{ cinder_rabbitmq_userid }}:{{ cinder_rabbitmq_password }}@{{ hostvars[host]['ansible_ssh_host'] }}:{{ rabbitmq_port }}/{{ cinder_rabbitmq_vhost }} +{% endfor %} +{% endif %} +{% if neutron_ceilometer_enabled %} +# Neutron +{% for host in groups['rabbitmq_all'] %} +messaging_urls = rabbit://{{ neutron_rabbitmq_userid }}:{{ neutron_rabbitmq_password }}@{{ hostvars[host]['ansible_ssh_host'] }}:{{ rabbitmq_port }}/{{ neutron_rabbitmq_vhost }} +{% endfor %} +{% endif %} +{% if heat_ceilometer_enabled %} +# Heat +{% for host in groups['rabbitmq_all'] %} +messaging_urls = rabbit://{{ heat_rabbitmq_userid }}:{{ heat_rabbitmq_password }}@{{ hostvars[host]['ansible_ssh_host'] }}:{{ rabbitmq_port }}/{{ heat_rabbitmq_vhost }} +{% endfor %} +{% endif %} +# TODO: Keystone +# TODO: Swift [database] metering_connection = {{ ceilometer_connection_string }}