Install ceilometer-polling on compute nodes

With the move to using a service-group mapping for installing services,
the ceilometer-polling agent now only installs on hosts within the
ceilometer_central_agent group when it should also be installed to the
ceilometer_compute_agent group. Adjust the service mapping to allow for
multiple group assignments per service and update relevant tasks to use
subelements to install each service within its assigned groups.

Also fix the 'Reload upstart init scripts' handler so that it can
properly be marked 'changed' in order to notify the 'Restart
ceilometer services' handler.

Closes-Bug: 1639026
Change-Id: Iba8e1f58c996a55389f50c727a4afa55099daa22
This commit is contained in:
Jimmy McCrory 2016-11-03 17:05:53 -07:00
parent 2b02a015f4
commit a900930b7b
8 changed files with 57 additions and 39 deletions

View File

@ -154,13 +154,17 @@ ceilometer_pip_packages:
## Service Name-Group Mapping
ceilometer_services:
ceilometer-collector:
group: ceilometer_collector
group:
- ceilometer_collector
service_name: ceilometer-collector
ceilometer-agent-notification:
group: ceilometer_agent_notification
group:
- ceilometer_agent_notification
service_name: ceilometer-agent-notification
ceilometer-polling:
group: ceilometer_agent_central
group:
- ceilometer_agent_central
- ceilometer_agent_compute
service_name: ceilometer-polling
ceilometer_required_secrets:

View File

@ -20,17 +20,18 @@
- name: Reload upstart init scripts
command: initctl reload-configuration
changed_when: false
notify:
- Restart ceilometer services
- name: Restart ceilometer services
service:
name: "{{ item.value.service_name }}"
name: "{{ item.0.service_name }}"
state: "restarted"
pattern: "{{ item.value.service_name }}"
with_dict: "{{ ceilometer_services }}"
when: inventory_hostname in groups[item.value.group]
pattern: "{{ item.0.service_name }}"
with_subelements:
- "{{ ceilometer_services }}"
- group
when: inventory_hostname in groups[item.1]
- name: Restart Apache
service:

View File

@ -21,9 +21,12 @@
- name: Load service
service:
name: "{{ item.value.service_name }}"
enabled: "yes"
with_dict: "{{ ceilometer_services }}"
when: inventory_hostname in groups[item.value.group]
name: "{{ item.0.service_name }}"
state: "restarted"
pattern: "{{ item.0.service_name }}"
with_subelements:
- "{{ ceilometer_services }}"
- group
when: inventory_hostname in groups[item.1]
notify:
- Restart ceilometer services

View File

@ -15,23 +15,27 @@
- name: Create TEMP run dir
file:
path: "/var/run/{{ item.value.service_name }}"
path: "/var/run/{{ item.0.service_name }}"
state: directory
owner: "{{ ceilometer_system_user_name }}"
group: "{{ ceilometer_system_group_name }}"
mode: "02755"
with_dict: "{{ ceilometer_services }}"
when: inventory_hostname in groups[item.value.group]
with_subelements:
- "{{ ceilometer_services }}"
- group
when: inventory_hostname in groups[item.1]
- name: Create TEMP lock dir
file:
path: "/var/lock/{{ item.value.service_name }}"
path: "/var/lock/{{ item.0.service_name }}"
state: directory
owner: "{{ ceilometer_system_user_name }}"
group: "{{ ceilometer_system_group_name }}"
mode: "02755"
with_dict: "{{ ceilometer_services }}"
when: inventory_hostname in groups[item.value.group]
with_subelements:
- "{{ ceilometer_services }}"
- group
when: inventory_hostname in groups[item.1]
- name: Create tempfile.d entry
template:
@ -40,17 +44,21 @@
mode: "0644"
owner: "root"
group: "root"
with_dict: "{{ ceilometer_services }}"
when: inventory_hostname in groups[item.value.group]
with_subelements:
- "{{ ceilometer_services }}"
- group
when: inventory_hostname in groups[item.1]
- name: Place the systemd init script
template:
src: "ceilometer-systemd-init.j2"
dest: "/etc/systemd/system/{{ item.value.service_name }}.service"
dest: "/etc/systemd/system/{{ item.0.service_name }}.service"
mode: "0644"
owner: "root"
group: "root"
with_dict: "{{ ceilometer_services }}"
when: inventory_hostname in groups[item.value.group]
with_subelements:
- "{{ ceilometer_services }}"
- group
when: inventory_hostname in groups[item.1]
notify:
- Reload systemd daemon

View File

@ -16,11 +16,13 @@
- name: Place the init script
template:
src: "ceilometer-upstart-init.j2"
dest: "/etc/init/{{ item.value.service_name }}.conf"
dest: "/etc/init/{{ item.0.service_name }}.conf"
mode: "0644"
owner: "root"
group: "root"
with_dict: "{{ ceilometer_services }}"
when: inventory_hostname in groups[item.value.group]
with_subelements:
- "{{ ceilometer_services }}"
- group
when: inventory_hostname in groups[item.1]
notify:
- Reload upstart init scripts

View File

@ -11,9 +11,9 @@ User={{ ceilometer_system_user_name }}
Group={{ ceilometer_system_group_name }}
{% if program_override is defined %}
ExecStart={{ program_override }} {{ program_config_options|default('') }} --log-file=/var/log/ceilometer/{{ item.value.service_name }}.log
ExecStart={{ program_override }} {{ program_config_options|default('') }} --log-file=/var/log/ceilometer/{{ item.0.service_name }}.log
{% else %}
ExecStart={{ ceilometer_bin }}/{{ item.value.service_name }} {{ program_config_options|default('') }} --log-file=/var/log/ceilometer/{{ item.value.service_name }}.log
ExecStart={{ ceilometer_bin }}/{{ item.0.service_name }} {{ program_config_options|default('') }} --log-file=/var/log/ceilometer/{{ item.0.service_name }}.log
{% endif %}
# Give a reasonable amount of time for the server to start up/shut down

View File

@ -1,4 +1,4 @@
# {{ ansible_managed }}
D /var/lock/{{ item.value.service_name }} 2755 {{ ceilometer_system_user_name }} {{ ceilometer_system_group_name }}
D /var/run/{{ item.value.service_name }} 2755 {{ ceilometer_system_user_name }} {{ ceilometer_system_group_name }}
D /var/lock/{{ item.0.service_name }} 2755 {{ ceilometer_system_user_name }} {{ ceilometer_system_group_name }}
D /var/run/{{ item.0.service_name }} 2755 {{ ceilometer_system_user_name }} {{ ceilometer_system_group_name }}

View File

@ -1,7 +1,7 @@
# {{ ansible_managed }}
description "{{ item.value.service_name }}"
description "{{ item.0.service_name }}"
author "Kevin Carter <kevin.carter@rackspace.com>"
start on runlevel [2345]
@ -11,18 +11,18 @@ respawn
respawn limit 10 5
# Set the RUNBIN environment variable
env RUNBIN="{{ ceilometer_bin }}/{{ item.value.service_name }}"
env RUNBIN="{{ ceilometer_bin }}/{{ item.0.service_name }}"
# Change directory to service users home
chdir "{{ ceilometer_system_user_home }}"
# Pre start actions
pre-start script
mkdir -p "/var/run/{{ item.value.service_name }}"
chown {{ ceilometer_system_user_name }}:{{ ceilometer_system_group_name }} "/var/run/{{ item.value.service_name }}"
mkdir -p "/var/run/{{ item.0.service_name }}"
chown {{ ceilometer_system_user_name }}:{{ ceilometer_system_group_name }} "/var/run/{{ item.0.service_name }}"
mkdir -p "/var/lock/{{ item.value.service_name }}"
chown {{ ceilometer_system_user_name }}:{{ ceilometer_system_group_name }} "/var/lock/{{ item.value.service_name }}"
mkdir -p "/var/lock/{{ item.0.service_name }}"
chown {{ ceilometer_system_user_name }}:{{ ceilometer_system_group_name }} "/var/lock/{{ item.0.service_name }}"
. {{ ceilometer_bin }}/activate
@ -30,15 +30,15 @@ end script
# Post stop actions
post-stop script
rm "/var/run/{{ item.value.service_name }}/{{ item.value.service_name }}.pid"
rm "/var/run/{{ item.0.service_name }}/{{ item.0.service_name }}.pid"
end script
# Run the start up job
exec start-stop-daemon --start \
--chuid {{ ceilometer_system_user_name }} \
--make-pidfile \
--pidfile /var/run/{{ item.value.service_name }}/{{ item.value.service_name }}.pid \
--pidfile /var/run/{{ item.0.service_name }}/{{ item.0.service_name }}.pid \
--exec "{{ program_override|default('$RUNBIN') }}" \
-- {{ program_config_options|default('') }} \
--log-file=/var/log/{{ ceilometer_service_name }}/{{ item.value.service_name }}.log
--log-file=/var/log/{{ ceilometer_service_name }}/{{ item.0.service_name }}.log