diff options
| author | Radosław Piliszek <radoslaw.piliszek@gmail.com> | 2020-07-31 17:54:52 +0200 |
|---|---|---|
| committer | Michal Arbet <michal.arbet@ultimum.io> | 2024-12-01 22:16:51 +0100 |
| commit | 345ecbf55e079c6f578302c3e2189fa56e4ff5fe (patch) | |
| tree | f1258a74b842593bebd9a113eca1f37901f32506 | |
| parent | 53376aed8fc8175a2e5a2ca69dfe15a56a16273f (diff) | |
| download | kolla-ansible-345ecbf55e079c6f578302c3e2189fa56e4ff5fe.tar.gz kolla-ansible-345ecbf55e079c6f578302c3e2189fa56e4ff5fe.zip | |
Refactor services' check-containers and optimise
This might fix some hidden bugs where the check tasks forgot to
include params important for the service.
We also get a nice optimisation by using a filtered loop instead
of task skipping per service with 'when'. As proven in
https://review.opendev.org/c/openstack/kolla-ansible/+/914997
This refactoring allows for further optimisation and
fixing work to proceed with much less hassle. Including getting
rid of many notify statements as the restarts are now safely handled
by check-containers. Some notifies had to stay, because of special
edge cases eg. in rolling upgrades and loadbalancer config.
One downside is we remove the little optimisation for Zun that
ignored config change for copying loopback but this is an
acceptable tradeoff considering the benefits above.
Co-Authored-By: Roman Krček <roman.krcek@tietoevry.com>
Change-Id: I855dfef33aa0f3fd1301295bb8ede3e587e7162a
Partially-Implements: blueprint performance-improvements
64 files changed, 161 insertions, 761 deletions
diff --git a/ansible/library/kolla_container.py b/ansible/library/kolla_container.py index a2cf44daa..a4eaaaedd 100644 --- a/ansible/library/kolla_container.py +++ b/ansible/library/kolla_container.py @@ -267,6 +267,8 @@ EXAMPLES = ''' def generate_module(): # NOTE(jeffrey4l): add empty string '' to choices let us use # pid_mode: "{{ service.pid_mode | default ('') }}" in yaml + # NOTE(r-krcek): arguments_spec should also be reflected in the list of + # arguments in service-check-containers role argument_spec = dict( common_options=dict(required=False, type='dict', default=dict()), action=dict(required=True, type='str', diff --git a/ansible/roles/aodh/tasks/check-containers.yml b/ansible/roles/aodh/tasks/check-containers.yml index ae2a21242..b7e2f7c29 100644 --- a/ansible/roles/aodh/tasks/check-containers.yml +++ b/ansible/roles/aodh/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check aodh containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ aodh_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/barbican/tasks/check-containers.yml b/ansible/roles/barbican/tasks/check-containers.yml index 13a763e7d..b7e2f7c29 100644 --- a/ansible/roles/barbican/tasks/check-containers.yml +++ b/ansible/roles/barbican/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check barbican containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ barbican_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/blazar/tasks/check-containers.yml b/ansible/roles/blazar/tasks/check-containers.yml index b1a3b9cc8..b7e2f7c29 100644 --- a/ansible/roles/blazar/tasks/check-containers.yml +++ b/ansible/roles/blazar/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check blazar containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ blazar_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/ceilometer/tasks/check-containers.yml b/ansible/roles/ceilometer/tasks/check-containers.yml index dec2865e3..b7e2f7c29 100644 --- a/ansible/roles/ceilometer/tasks/check-containers.yml +++ b/ansible/roles/ceilometer/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check ceilometer containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - privileged: "{{ item.value.privileged | default(False) }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ ceilometer_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/cinder/tasks/check-containers.yml b/ansible/roles/cinder/tasks/check-containers.yml index 50595bbc8..b7e2f7c29 100644 --- a/ansible/roles/cinder/tasks/check-containers.yml +++ b/ansible/roles/cinder/tasks/check-containers.yml @@ -1,17 +1,3 @@ --- -- name: Check cinder containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - tmpfs: "{{ item.value.tmpfs | default(omit) }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - privileged: "{{ item.value.privileged | default(False) }}" - ipc_mode: "{{ item.value.ipc_mode | default('') }}" - with_dict: "{{ cinder_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/cinder/tasks/external_ceph.yml b/ansible/roles/cinder/tasks/external_ceph.yml index 4b5b8dcd3..cf9c34fd1 100644 --- a/ansible/roles/cinder/tasks/external_ceph.yml +++ b/ansible/roles/cinder/tasks/external_ceph.yml @@ -35,8 +35,6 @@ with_nested: - "{{ cinder_services | dict2items }}" - "{{ cinder_ceph_backends + [cinder_backup_ceph_backend] }}" - notify: - - "Restart {{ service_name }} container" - name: Copy over Ceph keyring files for cinder-volume vars: @@ -51,8 +49,6 @@ when: - external_ceph_cephx_enabled | bool - service | service_enabled_and_mapped_to_host - notify: - - Restart cinder-volume container - name: Copy over Ceph keyring files for cinder-backup vars: @@ -69,8 +65,6 @@ when: - external_ceph_cephx_enabled | bool - service | service_enabled_and_mapped_to_host - notify: - - Restart cinder-backup container - name: Ensuring config directory has correct owner and permission become: true diff --git a/ansible/roles/cloudkitty/tasks/check-containers.yml b/ansible/roles/cloudkitty/tasks/check-containers.yml index 73fdcf74b..b7e2f7c29 100644 --- a/ansible/roles/cloudkitty/tasks/check-containers.yml +++ b/ansible/roles/cloudkitty/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check cloudkitty containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ cloudkitty_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/collectd/tasks/check-containers.yml b/ansible/roles/collectd/tasks/check-containers.yml index 820587667..b7e2f7c29 100644 --- a/ansible/roles/collectd/tasks/check-containers.yml +++ b/ansible/roles/collectd/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check collectd containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - privileged: "{{ item.value.privileged | default(False) }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - with_dict: "{{ collectd_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/common/tasks/check-containers.yml b/ansible/roles/common/tasks/check-containers.yml index 1aa8b2073..b7e2f7c29 100644 --- a/ansible/roles/common/tasks/check-containers.yml +++ b/ansible/roles/common/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check common containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - privileged: "{{ item.value.privileged | default(False) }}" - environment: "{{ item.value.environment }}" - with_dict: "{{ common_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/cyborg/tasks/check-containers.yml b/ansible/roles/cyborg/tasks/check-containers.yml index a7bcb4b97..b7e2f7c29 100644 --- a/ansible/roles/cyborg/tasks/check-containers.yml +++ b/ansible/roles/cyborg/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check cyborg containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - privileged: "{{ item.value.privileged | default(False) }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ cyborg_services | select_services_enabled_and_mapped_to_host }}" - notify: - - Restart {{ item.key }} container +- import_role: + name: service-check-containers diff --git a/ansible/roles/designate/tasks/backend_external.yml b/ansible/roles/designate/tasks/backend_external.yml index 67a1990f8..75e3efe01 100644 --- a/ansible/roles/designate/tasks/backend_external.yml +++ b/ansible/roles/designate/tasks/backend_external.yml @@ -9,8 +9,6 @@ - designate_backend_external == 'bind9' - item.key in [ "designate-worker" ] with_dict: "{{ designate_services | select_services_enabled_and_mapped_to_host }}" - notify: - - Restart {{ item.key }} container - name: Copying over rndc.key (designate_backend_external) template: @@ -22,5 +20,3 @@ - designate_backend_external == 'bind9' - item.key in [ "designate-worker" ] with_dict: "{{ designate_services | select_services_enabled_and_mapped_to_host }}" - notify: - - Restart {{ item.key }} container diff --git a/ansible/roles/designate/tasks/check-containers.yml b/ansible/roles/designate/tasks/check-containers.yml index 1dfe7ca1e..b7e2f7c29 100644 --- a/ansible/roles/designate/tasks/check-containers.yml +++ b/ansible/roles/designate/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check designate containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ designate_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/etcd/tasks/check-containers.yml b/ansible/roles/etcd/tasks/check-containers.yml index 11e9b5434..b7e2f7c29 100644 --- a/ansible/roles/etcd/tasks/check-containers.yml +++ b/ansible/roles/etcd/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check etcd containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - environment: "{{ item.value.environment }}" - with_dict: "{{ etcd_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/glance/tasks/check-containers.yml b/ansible/roles/glance/tasks/check-containers.yml index 641ba907f..b7e2f7c29 100644 --- a/ansible/roles/glance/tasks/check-containers.yml +++ b/ansible/roles/glance/tasks/check-containers.yml @@ -1,16 +1,3 @@ --- -- name: Check glance containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - privileged: "{{ item.value.privileged | default(omit) }}" - environment: "{{ item.value.environment | default(omit) }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ glance_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/glance/tasks/external_ceph.yml b/ansible/roles/glance/tasks/external_ceph.yml index 8137f4541..3daa656bd 100644 --- a/ansible/roles/glance/tasks/external_ceph.yml +++ b/ansible/roles/glance/tasks/external_ceph.yml @@ -21,8 +21,6 @@ become: true when: inventory_hostname in groups['glance-api'] with_items: "{{ glance_ceph_backends }}" - notify: - - Restart glance-api container - name: Copy over ceph Glance keyrings vars: @@ -34,8 +32,6 @@ become: true with_items: "{{ glance_ceph_backends }}" when: inventory_hostname in groups['glance-api'] - notify: - - Restart glance-api container - name: Ensuring config directory has correct owner and permission file: diff --git a/ansible/roles/gnocchi/tasks/check-containers.yml b/ansible/roles/gnocchi/tasks/check-containers.yml index 4369977f2..b7e2f7c29 100644 --- a/ansible/roles/gnocchi/tasks/check-containers.yml +++ b/ansible/roles/gnocchi/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check gnocchi containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ gnocchi_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/gnocchi/tasks/external_ceph.yml b/ansible/roles/gnocchi/tasks/external_ceph.yml index d05629f9f..c36fd9855 100644 --- a/ansible/roles/gnocchi/tasks/external_ceph.yml +++ b/ansible/roles/gnocchi/tasks/external_ceph.yml @@ -18,8 +18,6 @@ mode: "0660" become: true with_dict: "{{ gnocchi_services | select_services_enabled_and_mapped_to_host }}" - notify: - - Restart {{ item.key }} container - name: Copy over ceph Gnocchi keyrings template: @@ -28,8 +26,6 @@ mode: "0660" become: true with_dict: "{{ gnocchi_services | select_services_enabled_and_mapped_to_host }}" - notify: - - Restart {{ item.key }} container - name: Ensuring config directory has correct owner and permission become: true diff --git a/ansible/roles/grafana/tasks/check-containers.yml b/ansible/roles/grafana/tasks/check-containers.yml index 4c24c3b50..b7e2f7c29 100644 --- a/ansible/roles/grafana/tasks/check-containers.yml +++ b/ansible/roles/grafana/tasks/check-containers.yml @@ -1,13 +1,3 @@ --- -- name: Check grafana containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - with_dict: "{{ grafana_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/hacluster/tasks/check-containers.yml b/ansible/roles/hacluster/tasks/check-containers.yml index 0a0f8253e..b7e2f7c29 100644 --- a/ansible/roles/hacluster/tasks/check-containers.yml +++ b/ansible/roles/hacluster/tasks/check-containers.yml @@ -1,25 +1,3 @@ --- -- name: Check hacluster containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ service.container_name }}" - image: "{{ service.image | default(omit) }}" - volumes: "{{ service.volumes | default(omit) }}" - dimensions: "{{ service.dimensions | default(omit) }}" - volumes_from: "{{ service.volumes_from | default(omit) }}" - privileged: "{{ service.privileged | default(omit) }}" - cap_add: "{{ service.cap_add | default(omit) }}" - environment: "{{ service.environment | default(omit) }}" - ipc_mode: "{{ service.ipc_mode | default(omit) }}" - pid_mode: "{{ service.pid_mode | default(omit) }}" - security_opt: "{{ service.security_opt | default(omit) }}" - labels: "{{ service.labels | default(omit) }}" - command: "{{ service.command | default(omit) }}" - vars: - service_name: "{{ item.key }}" - service: "{{ item.value }}" - with_dict: "{{ hacluster_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ service_name }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/heat/tasks/check-containers.yml b/ansible/roles/heat/tasks/check-containers.yml index 9ac2c53f4..b7e2f7c29 100644 --- a/ansible/roles/heat/tasks/check-containers.yml +++ b/ansible/roles/heat/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check heat containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ heat_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/horizon/tasks/check-containers.yml b/ansible/roles/horizon/tasks/check-containers.yml index b7e38d8f5..b7e2f7c29 100644 --- a/ansible/roles/horizon/tasks/check-containers.yml +++ b/ansible/roles/horizon/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Deploy horizon container - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - environment: "{{ item.value.environment }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ horizon_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/influxdb/tasks/check-containers.yml b/ansible/roles/influxdb/tasks/check-containers.yml index ac1408971..b7e2f7c29 100644 --- a/ansible/roles/influxdb/tasks/check-containers.yml +++ b/ansible/roles/influxdb/tasks/check-containers.yml @@ -1,13 +1,3 @@ --- -- name: Check influxdb containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - with_dict: "{{ influxdb_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/ironic/tasks/check-containers.yml b/ansible/roles/ironic/tasks/check-containers.yml index 7ee5e7771..b7e2f7c29 100644 --- a/ansible/roles/ironic/tasks/check-containers.yml +++ b/ansible/roles/ironic/tasks/check-containers.yml @@ -1,17 +1,3 @@ --- -- name: Check ironic containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - privileged: "{{ item.value.privileged | default(False) }}" - cap_add: "{{ item.value.cap_add | default([]) }}" - environment: "{{ item.value.environment | default(omit) }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ ironic_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/iscsi/tasks/check-containers.yml b/ansible/roles/iscsi/tasks/check-containers.yml index 3eae52913..b7e2f7c29 100644 --- a/ansible/roles/iscsi/tasks/check-containers.yml +++ b/ansible/roles/iscsi/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check iscsi containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - ipc_mode: "{{ item.value.ipc_mode }}" - privileged: "{{ item.value.privileged | default(False) }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - with_dict: "{{ iscsi_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/keystone/tasks/check-containers.yml b/ansible/roles/keystone/tasks/check-containers.yml index 226d979dc..b7e2f7c29 100644 --- a/ansible/roles/keystone/tasks/check-containers.yml +++ b/ansible/roles/keystone/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check keystone containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ keystone_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/kuryr/tasks/check-containers.yml b/ansible/roles/kuryr/tasks/check-containers.yml index c1fdb0c5e..b7e2f7c29 100644 --- a/ansible/roles/kuryr/tasks/check-containers.yml +++ b/ansible/roles/kuryr/tasks/check-containers.yml @@ -1,16 +1,3 @@ --- -- name: Check kuryr containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - privileged: "{{ item.value.privileged | default(False) }}" - cap_add: "{{ item.value.cap_add }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ kuryr_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/letsencrypt/tasks/check-containers.yml b/ansible/roles/letsencrypt/tasks/check-containers.yml index 0c20e0523..b7e2f7c29 100644 --- a/ansible/roles/letsencrypt/tasks/check-containers.yml +++ b/ansible/roles/letsencrypt/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check LetsEncrypt containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - environment: "{{ item.value.environment | default(omit) }}" - with_dict: "{{ letsencrypt_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/loadbalancer/tasks/check-containers.yml b/ansible/roles/loadbalancer/tasks/check-containers.yml index ee6f92fe4..b7e2f7c29 100644 --- a/ansible/roles/loadbalancer/tasks/check-containers.yml +++ b/ansible/roles/loadbalancer/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check loadbalancer containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - privileged: "{{ item.value.privileged | default(False) }}" - with_dict: "{{ loadbalancer_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/magnum/tasks/check-containers.yml b/ansible/roles/magnum/tasks/check-containers.yml index b233b5e60..b7e2f7c29 100644 --- a/ansible/roles/magnum/tasks/check-containers.yml +++ b/ansible/roles/magnum/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check magnum containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - environment: "{{ item.value.environment }}" - with_dict: "{{ magnum_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/manila/tasks/check-containers.yml b/ansible/roles/manila/tasks/check-containers.yml index ce5200472..b7e2f7c29 100644 --- a/ansible/roles/manila/tasks/check-containers.yml +++ b/ansible/roles/manila/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check manila containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - privileged: "{{ item.value.privileged | default(False) }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ manila_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/manila/tasks/external_ceph.yml b/ansible/roles/manila/tasks/external_ceph.yml index 8a66ed370..3b70b0ad4 100644 --- a/ansible/roles/manila/tasks/external_ceph.yml +++ b/ansible/roles/manila/tasks/external_ceph.yml @@ -23,8 +23,6 @@ - inventory_hostname in groups['manila-share'] - item.enabled | bool with_items: "{{ manila_ceph_backends }}" - notify: - - Restart manila-share container - name: Copy over ceph Manila keyrings template: @@ -36,8 +34,6 @@ when: - inventory_hostname in groups['manila-share'] - item.enabled | bool - notify: - - Restart manila-share container - name: Ensuring config directory has correct owner and permission become: true diff --git a/ansible/roles/mariadb/handlers/main.yml b/ansible/roles/mariadb/handlers/main.yml index 156e16627..78d99e4a1 100644 --- a/ansible/roles/mariadb/handlers/main.yml +++ b/ansible/roles/mariadb/handlers/main.yml @@ -83,7 +83,5 @@ volumes: "{{ service.volumes }}" dimensions: "{{ service.dimensions }}" environment: "{{ service.environment }}" - listen: - - Restart mariadb-clustercheck container when: - service | service_enabled_and_mapped_to_host diff --git a/ansible/roles/mariadb/tasks/check-containers.yml b/ansible/roles/mariadb/tasks/check-containers.yml index f4f7a603b..b7e2f7c29 100644 --- a/ansible/roles/mariadb/tasks/check-containers.yml +++ b/ansible/roles/mariadb/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check mariadb containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - environment: "{{ item.value.environment | default(omit) }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ mariadb_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/masakari/tasks/check-containers.yml b/ansible/roles/masakari/tasks/check-containers.yml index fa46c70bc..b7e2f7c29 100644 --- a/ansible/roles/masakari/tasks/check-containers.yml +++ b/ansible/roles/masakari/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check masakari containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - ipc_mode: "{{ item.value.ipc_mode | default(omit) }}" - privileged: "{{ item.value.privileged | default(False) }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - with_dict: "{{ masakari_services | select_services_enabled_and_mapped_to_host }}" - notify: - - Restart {{ item.key }} container +- import_role: + name: service-check-containers diff --git a/ansible/roles/memcached/tasks/check-containers.yml b/ansible/roles/memcached/tasks/check-containers.yml index 49d1c2953..b7e2f7c29 100644 --- a/ansible/roles/memcached/tasks/check-containers.yml +++ b/ansible/roles/memcached/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check memcached container - vars: - service: "{{ memcached_services.memcached }}" - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ service.container_name }}" - image: "{{ service.image }}" - volumes: "{{ service.volumes }}" - dimensions: "{{ service.dimensions }}" - healthcheck: "{{ service.healthcheck | default(omit) }}" - when: service | service_enabled_and_mapped_to_host - notify: Restart memcached container +- import_role: + name: service-check-containers diff --git a/ansible/roles/mistral/tasks/check-containers.yml b/ansible/roles/mistral/tasks/check-containers.yml index 7ed520ca3..b7e2f7c29 100644 --- a/ansible/roles/mistral/tasks/check-containers.yml +++ b/ansible/roles/mistral/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check mistral containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ mistral_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/multipathd/tasks/check-containers.yml b/ansible/roles/multipathd/tasks/check-containers.yml index 5d41bdba5..b7e2f7c29 100644 --- a/ansible/roles/multipathd/tasks/check-containers.yml +++ b/ansible/roles/multipathd/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check multipathd containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - ipc_mode: "{{ item.value.ipc_mode }}" - privileged: "{{ item.value.privileged | default(False) }}" - volumes: "{{ item.value.volumes }}" - with_dict: "{{ multipathd_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/neutron/tasks/check-containers.yml b/ansible/roles/neutron/tasks/check-containers.yml index cc3ec4fa8..b7e2f7c29 100644 --- a/ansible/roles/neutron/tasks/check-containers.yml +++ b/ansible/roles/neutron/tasks/check-containers.yml @@ -1,16 +1,3 @@ --- -- name: Check neutron containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - privileged: "{{ item.value.privileged | default(False) }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - environment: "{{ item.value.environment | default(omit) }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ neutron_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/nova-cell/defaults/main.yml b/ansible/roles/nova-cell/defaults/main.yml index a497a5fdc..b3f445d0d 100644 --- a/ansible/roles/nova-cell/defaults/main.yml +++ b/ansible/roles/nova-cell/defaults/main.yml @@ -1,4 +1,6 @@ --- +project_name: "nova" + nova_cell_services: nova-libvirt: container_name: nova_libvirt diff --git a/ansible/roles/nova-cell/tasks/check-containers.yml b/ansible/roles/nova-cell/tasks/check-containers.yml index 93452874a..b7e2f7c29 100644 --- a/ansible/roles/nova-cell/tasks/check-containers.yml +++ b/ansible/roles/nova-cell/tasks/check-containers.yml @@ -1,19 +1,3 @@ --- -- name: Check nova-cell containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - environment: "{{ item.value.environment | default(omit) }}" - pid_mode: "{{ item.value.pid_mode | default('') }}" - cgroupns_mode: "{{ item.value.cgroupns_mode | default(omit) }}" - ipc_mode: "{{ item.value.ipc_mode | default(omit) }}" - privileged: "{{ item.value.privileged | default(False) }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ nova_cell_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/nova-cell/tasks/external_ceph.yml b/ansible/roles/nova-cell/tasks/external_ceph.yml index 30a679976..4bf94c44d 100644 --- a/ansible/roles/nova-cell/tasks/external_ceph.yml +++ b/ansible/roles/nova-cell/tasks/external_ceph.yml @@ -61,8 +61,6 @@ - inventory_hostname in groups[nova_cell_compute_group] - nova_backend == "rbd" - external_ceph_cephx_enabled | bool - notify: - - Restart {{ item }} container - name: Copy over ceph cinder keyring file template: @@ -78,8 +76,6 @@ - inventory_hostname in groups[nova_cell_compute_group] - nova_backend == "rbd" - external_ceph_cephx_enabled | bool - notify: - - Restart {{ item }} container - name: Copy over ceph.conf vars: @@ -100,8 +96,6 @@ when: - service | service_enabled_and_mapped_to_host - nova_backend == "rbd" - notify: - - Restart {{ item }} container - block: - name: Ensure /etc/ceph directory exists (host libvirt) diff --git a/ansible/roles/nova/tasks/check-containers.yml b/ansible/roles/nova/tasks/check-containers.yml index f1b6e1817..b7e2f7c29 100644 --- a/ansible/roles/nova/tasks/check-containers.yml +++ b/ansible/roles/nova/tasks/check-containers.yml @@ -1,18 +1,3 @@ --- -- name: Check nova containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - environment: "{{ item.value.environment | default(omit) }}" - pid_mode: "{{ item.value.pid_mode | default('') }}" - ipc_mode: "{{ item.value.ipc_mode | default(omit) }}" - privileged: "{{ item.value.privileged | default(False) }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ nova_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/octavia/tasks/check-containers.yml b/ansible/roles/octavia/tasks/check-containers.yml index ac4244ed6..b7e2f7c29 100644 --- a/ansible/roles/octavia/tasks/check-containers.yml +++ b/ansible/roles/octavia/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check octavia containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ octavia_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/opensearch/tasks/check-containers.yml b/ansible/roles/opensearch/tasks/check-containers.yml index 44f7253c2..b7e2f7c29 100644 --- a/ansible/roles/opensearch/tasks/check-containers.yml +++ b/ansible/roles/opensearch/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check opensearch containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - dimensions: "{{ item.value.dimensions }}" - environment: "{{ item.value.environment | default(omit) }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes }}" - with_dict: "{{ opensearch_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/openvswitch/tasks/check-containers.yml b/ansible/roles/openvswitch/tasks/check-containers.yml index d030119b1..b7e2f7c29 100644 --- a/ansible/roles/openvswitch/tasks/check-containers.yml +++ b/ansible/roles/openvswitch/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check openvswitch containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - privileged: "{{ item.value.privileged | default(False) }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck }}" - with_dict: "{{ openvswitch_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/ovn-controller/tasks/check-containers.yml b/ansible/roles/ovn-controller/tasks/check-containers.yml index 1cd016795..b7e2f7c29 100644 --- a/ansible/roles/ovn-controller/tasks/check-containers.yml +++ b/ansible/roles/ovn-controller/tasks/check-containers.yml @@ -1,13 +1,3 @@ --- -- name: Check ovn-controller containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - with_dict: "{{ ovn_controller_services | select_services_enabled_and_mapped_to_host }}" - notify: - - Restart {{ item.key }} container +- import_role: + name: service-check-containers diff --git a/ansible/roles/ovn-db/tasks/check-containers.yml b/ansible/roles/ovn-db/tasks/check-containers.yml index 194328231..b7e2f7c29 100644 --- a/ansible/roles/ovn-db/tasks/check-containers.yml +++ b/ansible/roles/ovn-db/tasks/check-containers.yml @@ -1,13 +1,3 @@ --- -- name: Check ovn containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - with_dict: "{{ ovn_db_services | select_services_enabled_and_mapped_to_host }}" - notify: - - Restart {{ item.key }} container +- import_role: + name: service-check-containers diff --git a/ansible/roles/ovs-dpdk/tasks/check-containers.yml b/ansible/roles/ovs-dpdk/tasks/check-containers.yml index 4448bd5cb..b7e2f7c29 100644 --- a/ansible/roles/ovs-dpdk/tasks/check-containers.yml +++ b/ansible/roles/ovs-dpdk/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check ovs containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - privileged: "{{ item.value.privileged | default(False) }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - with_dict: "{{ ovsdpdk_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/placement/tasks/check-containers.yml b/ansible/roles/placement/tasks/check-containers.yml index c9f56cadd..b7e2f7c29 100644 --- a/ansible/roles/placement/tasks/check-containers.yml +++ b/ansible/roles/placement/tasks/check-containers.yml @@ -1,18 +1,3 @@ --- -- name: Check placement containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - environment: "{{ item.value.environment | default(omit) }}" - pid_mode: "{{ item.value.pid_mode | default('') }}" - ipc_mode: "{{ item.value.ipc_mode | default(omit) }}" - privileged: "{{ item.value.privileged | default(False) }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ placement_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/prometheus/tasks/check-containers.yml b/ansible/roles/prometheus/tasks/check-containers.yml index 373e12847..b7e2f7c29 100644 --- a/ansible/roles/prometheus/tasks/check-containers.yml +++ b/ansible/roles/prometheus/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check prometheus containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - pid_mode: "{{ item.value.pid_mode | default('') }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - environment: "{{ item.value.environment | default(omit) }}" - with_dict: "{{ prometheus_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/rabbitmq/tasks/check-containers.yml b/ansible/roles/rabbitmq/tasks/check-containers.yml index 5a6cc9e65..b7e2f7c29 100644 --- a/ansible/roles/rabbitmq/tasks/check-containers.yml +++ b/ansible/roles/rabbitmq/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check rabbitmq containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes }}" - environment: "{{ item.value.environment }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ rabbitmq_services | select_services_enabled_and_mapped_to_host }}" - notify: - - Restart rabbitmq container +- import_role: + name: service-check-containers diff --git a/ansible/roles/redis/tasks/check-containers.yml b/ansible/roles/redis/tasks/check-containers.yml index 63f7b40bd..b7e2f7c29 100644 --- a/ansible/roles/redis/tasks/check-containers.yml +++ b/ansible/roles/redis/tasks/check-containers.yml @@ -1,15 +1,3 @@ --- -- name: Check redis containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - environment: "{{ item.environment | default(omit) }}" - volumes: "{{ item.value.volumes }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ redis_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/service-check-containers/tasks/main.yml b/ansible/roles/service-check-containers/tasks/main.yml new file mode 100644 index 000000000..a936238c1 --- /dev/null +++ b/ansible/roles/service-check-containers/tasks/main.yml @@ -0,0 +1,30 @@ +--- +# NOTE(r-krcek): List of arguments should follow argument_spec in +# kolla_container module +- name: "{{ kolla_role_name | default(project_name) }} | Check containers" + become: true + vars: + service_name: "{{ item.key }}" + service: "{{ item.value }}" + kolla_container: + action: "compare_container" + common_options: "{{ docker_common_options }}" + name: "{{ service.container_name }}" + image: "{{ service.image | default(omit) }}" + volumes: "{{ service.volumes | default(omit) }}" + dimensions: "{{ service.dimensions | default(omit) }}" + tmpfs: "{{ service.tmpfs | default(omit) }}" + volumes_from: "{{ service.volumes_from | default(omit) }}" + privileged: "{{ service.privileged | default(omit) }}" + cap_add: "{{ service.cap_add | default(omit) }}" + environment: "{{ service.environment | default(omit) }}" + healthcheck: "{{ service.healthcheck | default(omit) }}" + ipc_mode: "{{ service.ipc_mode | default(omit) }}" + pid_mode: "{{ service.pid_mode | default(omit) }}" + security_opt: "{{ service.security_opt | default(omit) }}" + labels: "{{ service.labels | default(omit) }}" + command: "{{ service.command | default(omit) }}" + cgroupns_mode: "{{ service.cgroupns_mode | default(omit) }}" + with_dict: "{{ lookup('vars', (kolla_role_name | default(project_name)) + '_services') | select_services_enabled_and_mapped_to_host }}" + notify: + - "Restart {{ service_name }} container" diff --git a/ansible/roles/skyline/tasks/check-containers.yml b/ansible/roles/skyline/tasks/check-containers.yml index bc59238e1..b7e2f7c29 100644 --- a/ansible/roles/skyline/tasks/check-containers.yml +++ b/ansible/roles/skyline/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check skyline container - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ horizon.healthcheck | default(omit) }}" - with_dict: "{{ skyline_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/tacker/tasks/check-containers.yml b/ansible/roles/tacker/tasks/check-containers.yml index fb3ac5140..b7e2f7c29 100644 --- a/ansible/roles/tacker/tasks/check-containers.yml +++ b/ansible/roles/tacker/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check tacker container - become: true - kolla_container: - common_options: "{{ docker_common_options }}" - action: "compare_container" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ tacker_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/telegraf/tasks/check-containers.yml b/ansible/roles/telegraf/tasks/check-containers.yml index da1cfd849..b7e2f7c29 100644 --- a/ansible/roles/telegraf/tasks/check-containers.yml +++ b/ansible/roles/telegraf/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check telegraf containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes }}" - pid_mode: "{{ item.value.pid_mode }}" - dimensions: "{{ item.value.dimensions }}" - with_dict: "{{ telegraf_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/trove/tasks/check-containers.yml b/ansible/roles/trove/tasks/check-containers.yml index d5beeba07..b7e2f7c29 100644 --- a/ansible/roles/trove/tasks/check-containers.yml +++ b/ansible/roles/trove/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check trove containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ trove_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/venus/tasks/check-containers.yml b/ansible/roles/venus/tasks/check-containers.yml index a44b1b03f..b7e2f7c29 100644 --- a/ansible/roles/venus/tasks/check-containers.yml +++ b/ansible/roles/venus/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check venus containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ venus_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/watcher/tasks/check-containers.yml b/ansible/roles/watcher/tasks/check-containers.yml index a7beab967..b7e2f7c29 100644 --- a/ansible/roles/watcher/tasks/check-containers.yml +++ b/ansible/roles/watcher/tasks/check-containers.yml @@ -1,14 +1,3 @@ --- -- name: Check watcher containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ watcher_services | select_services_enabled_and_mapped_to_host }}" - notify: - - "Restart {{ item.key }} container" +- import_role: + name: service-check-containers diff --git a/ansible/roles/zun/handlers/main.yml b/ansible/roles/zun/handlers/main.yml index 0a78a2434..0d21f4575 100644 --- a/ansible/roles/zun/handlers/main.yml +++ b/ansible/roles/zun/handlers/main.yml @@ -13,8 +13,6 @@ volumes: "{{ service.volumes | reject('equalto', '') | list }}" dimensions: "{{ service.dimensions }}" healthcheck: "{{ service.healthcheck | default(omit) }}" - listen: - - zun-api container changed - name: Restart zun-wsproxy container vars: @@ -30,8 +28,6 @@ volumes: "{{ service.volumes | reject('equalto', '') | list }}" dimensions: "{{ service.dimensions }}" healthcheck: "{{ service.healthcheck | default(omit) }}" - listen: - - zun-wsproxy container changed - name: Restart zun-compute container vars: @@ -47,8 +43,6 @@ volumes: "{{ service.volumes | reject('equalto', '') | list }}" dimensions: "{{ service.dimensions }}" healthcheck: "{{ service.healthcheck | default(omit) }}" - listen: - - zun-compute container changed - name: Restart zun-cni-daemon container vars: @@ -64,8 +58,6 @@ volumes: "{{ service.volumes | reject('equalto', '') | list }}" dimensions: "{{ service.dimensions }}" healthcheck: "{{ service.healthcheck | default(omit) }}" - listen: - - zun-cni-daemon container changed - name: Copy loopback binary from zun-cni-daemon container to host vars: @@ -74,7 +66,6 @@ become: true command: "{{ kolla_container_engine }} cp {{ service.container_name }}:/opt/loopback /opt/cni/bin/" # NOTE(yoctozepto): it would be cleaner to listen only on image change - # but there is no such mechanism (yet) and container change should be - # good enough (better than including config change triggers) + # but there is no such mechanism (yet) listen: - - zun-cni-daemon container changed + - Restart zun-cni-daemon container diff --git a/ansible/roles/zun/tasks/check-containers.yml b/ansible/roles/zun/tasks/check-containers.yml index 2f680d12f..b7e2f7c29 100644 --- a/ansible/roles/zun/tasks/check-containers.yml +++ b/ansible/roles/zun/tasks/check-containers.yml @@ -1,18 +1,3 @@ --- -- name: Check zun containers - become: true - kolla_container: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - privileged: "{{ item.value.privileged | default(False) }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - healthcheck: "{{ item.value.healthcheck | default(omit) }}" - with_dict: "{{ zun_services | select_services_enabled_and_mapped_to_host }}" - notify: - # NOTE(yoctozepto): Zun differs from other projects because we want - # to differentiate between config change and container property - # change - - "{{ item.key }} container changed" +- import_role: + name: service-check-containers diff --git a/ansible/roles/zun/tasks/external_ceph.yml b/ansible/roles/zun/tasks/external_ceph.yml index 324f28bb4..e57410b6b 100644 --- a/ansible/roles/zun/tasks/external_ceph.yml +++ b/ansible/roles/zun/tasks/external_ceph.yml @@ -5,8 +5,6 @@ dest: "{{ node_config_directory }}/zun-compute/" mode: "0660" become: true - notify: - - Restart zun-compute container - name: Copy over Ceph keyring files for zun-compute copy: @@ -15,8 +13,6 @@ mode: "0660" become: true when: external_ceph_cephx_enabled | bool - notify: - - Restart zun-compute container - name: Ensuring config directory has correct owner and permission become: true diff --git a/releasenotes/notes/refactor-container-check-27624449c47f5e6e.yaml b/releasenotes/notes/refactor-container-check-27624449c47f5e6e.yaml new file mode 100644 index 000000000..14796d8f9 --- /dev/null +++ b/releasenotes/notes/refactor-container-check-27624449c47f5e6e.yaml @@ -0,0 +1,23 @@ +--- +features: + - | + Refactor services' check-containers and optimise + + This might fix some hidden bugs where the check tasks forgot to + include params important for the service. + + We also get a nice optimisation by using a filtered loop instead + of task skipping per service with 'when'. As proven in + https://review.opendev.org/c/openstack/kolla-ansible/+/914997 + + This refactoring allows for further optimisation and + fixing work to proceed with much less hassle. Including getting + rid of many notify statements as the restarts are now safely handled + by check-containers. Some notifies had to stay, because of special + edge cases eg. in rolling upgrades and loadbalancer config. + + One downside is we remove the little optimisation for Zun that + ignored config change for copying loopback but this is an + acceptable tradeoff considering the benefits above. + + `Blueprint performance-improvements <https://blueprints.launchpad.net/kolla-ansible/+spec/performance-improvements>`__ |
