From a900930b7baaaeaed26b3568992e8df82c00095a Mon Sep 17 00:00:00 2001 From: Jimmy McCrory Date: Thu, 3 Nov 2016 17:05:53 -0700 Subject: [PATCH] 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 --- defaults/main.yml | 10 +++++--- handlers/main.yml | 11 +++++---- tasks/ceilometer_init_common.yml | 11 ++++++--- tasks/ceilometer_init_systemd.yml | 30 ++++++++++++++--------- tasks/ceilometer_init_upstart.yml | 8 +++--- templates/ceilometer-systemd-init.j2 | 4 +-- templates/ceilometer-systemd-tempfiles.j2 | 4 +-- templates/ceilometer-upstart-init.j2 | 18 +++++++------- 8 files changed, 57 insertions(+), 39 deletions(-) diff --git a/defaults/main.yml b/defaults/main.yml index dd6ae553..8018480b 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -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: diff --git a/handlers/main.yml b/handlers/main.yml index 07637524..0886691b 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -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: diff --git a/tasks/ceilometer_init_common.yml b/tasks/ceilometer_init_common.yml index d3885eb1..f80d871c 100644 --- a/tasks/ceilometer_init_common.yml +++ b/tasks/ceilometer_init_common.yml @@ -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 diff --git a/tasks/ceilometer_init_systemd.yml b/tasks/ceilometer_init_systemd.yml index b415b56c..da429988 100644 --- a/tasks/ceilometer_init_systemd.yml +++ b/tasks/ceilometer_init_systemd.yml @@ -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 diff --git a/tasks/ceilometer_init_upstart.yml b/tasks/ceilometer_init_upstart.yml index 98d0ea26..cbf057d0 100644 --- a/tasks/ceilometer_init_upstart.yml +++ b/tasks/ceilometer_init_upstart.yml @@ -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 diff --git a/templates/ceilometer-systemd-init.j2 b/templates/ceilometer-systemd-init.j2 index 4a7973df..bab88bbb 100644 --- a/templates/ceilometer-systemd-init.j2 +++ b/templates/ceilometer-systemd-init.j2 @@ -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 diff --git a/templates/ceilometer-systemd-tempfiles.j2 b/templates/ceilometer-systemd-tempfiles.j2 index cf45ebc7..1f76280c 100644 --- a/templates/ceilometer-systemd-tempfiles.j2 +++ b/templates/ceilometer-systemd-tempfiles.j2 @@ -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 }} diff --git a/templates/ceilometer-upstart-init.j2 b/templates/ceilometer-upstart-init.j2 index a2a1919c..4d05c8b3 100644 --- a/templates/ceilometer-upstart-init.j2 +++ b/templates/ceilometer-upstart-init.j2 @@ -1,7 +1,7 @@ # {{ ansible_managed }} -description "{{ item.value.service_name }}" +description "{{ item.0.service_name }}" author "Kevin Carter " 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