Filter services dictionary per host

To greatly reduce the amount of log noise from skipped tasks, set a
var in the role that filters the 'nova_services' dict to one that only
contains services relevant for each host.

Change-Id: I38ab4345f06ba6c9ef45cfe8e3ef48f2328b2333
This commit is contained in:
Jesse Pretorius 2017-06-02 17:23:20 +01:00
parent fb807f2a60
commit f2ed992208
3 changed files with 31 additions and 28 deletions

View File

@ -26,10 +26,7 @@
enabled: yes enabled: yes
state: stopped state: stopped
daemon_reload: "{{ (ansible_service_mgr == 'systemd') | ternary('yes', omit) }}" daemon_reload: "{{ (ansible_service_mgr == 'systemd') | ternary('yes', omit) }}"
with_dict: "{{ cinder_services }}" with_dict: "{{ filtered_cinder_services }}"
when:
- inventory_hostname in groups[item.value.group]
- "item.value.condition | default(true)"
register: _stop register: _stop
until: _stop | success until: _stop | success
retries: 5 retries: 5
@ -58,10 +55,7 @@
enabled: yes enabled: yes
state: "started" state: "started"
daemon_reload: "{{ (ansible_service_mgr == 'systemd') | ternary('yes', omit) }}" daemon_reload: "{{ (ansible_service_mgr == 'systemd') | ternary('yes', omit) }}"
with_dict: "{{ cinder_services }}" with_dict: "{{ filtered_cinder_services }}"
when:
- inventory_hostname in groups[item.value.group]
- "item.value.condition | default(true)"
register: _start register: _start
until: _start | success until: _start | success
retries: 5 retries: 5

View File

@ -21,10 +21,7 @@
owner: "{{ cinder_system_user_name }}" owner: "{{ cinder_system_user_name }}"
group: "{{ cinder_system_group_name }}" group: "{{ cinder_system_group_name }}"
mode: "02755" mode: "02755"
with_dict: "{{ cinder_services }}" with_dict: "{{ filtered_cinder_services }}"
when:
- inventory_hostname in groups[item.value.group]
- "{{ item.value.condition | default(true) }}"
- name: Create TEMP lock dir - name: Create TEMP lock dir
file: file:
@ -33,10 +30,7 @@
owner: "{{ cinder_system_user_name }}" owner: "{{ cinder_system_user_name }}"
group: "{{ cinder_system_group_name }}" group: "{{ cinder_system_group_name }}"
mode: "02755" mode: "02755"
with_dict: "{{ cinder_services }}" with_dict: "{{ filtered_cinder_services }}"
when:
- inventory_hostname in groups[item.value.group]
- "{{ item.value.condition | default(true) }}"
# TODO(mgariepy): # TODO(mgariepy):
# Remove this in Pike as it only needed to handle upgrades # Remove this in Pike as it only needed to handle upgrades
@ -45,10 +39,7 @@
file: file:
path: "/etc/tmpfiles.d/{{ item.value.service_name }}.conf" path: "/etc/tmpfiles.d/{{ item.value.service_name }}.conf"
state: absent state: absent
with_dict: "{{ cinder_services }}" with_dict: "{{ filtered_cinder_services }}"
when:
- inventory_hostname in groups[item.value.group]
- "{{ item.value.condition | default(true) }}"
- name: Create tmpfiles.d entry - name: Create tmpfiles.d entry
template: template:
@ -57,10 +48,7 @@
mode: "0644" mode: "0644"
owner: "root" owner: "root"
group: "root" group: "root"
with_dict: "{{ cinder_services }}" with_dict: "{{ filtered_cinder_services }}"
when:
- inventory_hostname in groups[item.value.group]
- "{{ item.value.condition | default(true) }}"
notify: notify:
- Restart cinder services - Restart cinder services
@ -73,9 +61,6 @@
group: "root" group: "root"
config_overrides: "{{ item.value.init_config_overrides }}" config_overrides: "{{ item.value.init_config_overrides }}"
config_type: "ini" config_type: "ini"
with_dict: "{{ cinder_services }}" with_dict: "{{ filtered_cinder_services }}"
when:
- inventory_hostname in groups[item.value.group]
- "{{ item.value.condition | default(true) }}"
notify: notify:
- Restart cinder services - Restart cinder services

24
vars/main.yml Normal file
View File

@ -0,0 +1,24 @@
---
# Copyright 2017, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
filtered_cinder_services: >
{%- set services = cinder_services.copy() %}
{%- for key,value in cinder_services.items() %}
{%- if value.group not in group_names or
(value.condition is defined and not value.condition) %}
{%- set _ = services.pop(key) %}
{%- endif %}
{%- endfor %}
{{- services -}}