From 345ecbf55e079c6f578302c3e2189fa56e4ff5fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw=20Piliszek?= Date: Fri, 31 Jul 2020 17:54:52 +0200 Subject: [PATCH] Refactor services' check-containers and optimise MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Change-Id: I855dfef33aa0f3fd1301295bb8ede3e587e7162a Partially-Implements: blueprint performance-improvements --- ansible/library/kolla_container.py | 2 ++ ansible/roles/aodh/tasks/check-containers.yml | 15 ++-------- .../roles/barbican/tasks/check-containers.yml | 15 ++-------- .../roles/blazar/tasks/check-containers.yml | 15 ++-------- .../ceilometer/tasks/check-containers.yml | 16 ++-------- .../roles/cinder/tasks/check-containers.yml | 18 ++--------- ansible/roles/cinder/tasks/external_ceph.yml | 6 ---- .../cloudkitty/tasks/check-containers.yml | 15 ++-------- .../roles/collectd/tasks/check-containers.yml | 15 ++-------- .../roles/common/tasks/check-containers.yml | 16 ++-------- .../roles/cyborg/tasks/check-containers.yml | 16 ++-------- .../designate/tasks/backend_external.yml | 4 --- .../designate/tasks/check-containers.yml | 15 ++-------- ansible/roles/etcd/tasks/check-containers.yml | 15 ++-------- .../roles/glance/tasks/check-containers.yml | 17 ++--------- ansible/roles/glance/tasks/external_ceph.yml | 4 --- .../roles/gnocchi/tasks/check-containers.yml | 15 ++-------- ansible/roles/gnocchi/tasks/external_ceph.yml | 4 --- .../roles/grafana/tasks/check-containers.yml | 14 ++------- .../hacluster/tasks/check-containers.yml | 26 ++-------------- ansible/roles/heat/tasks/check-containers.yml | 15 ++-------- .../roles/horizon/tasks/check-containers.yml | 16 ++-------- .../roles/influxdb/tasks/check-containers.yml | 14 ++------- .../roles/ironic/tasks/check-containers.yml | 18 ++--------- .../roles/iscsi/tasks/check-containers.yml | 16 ++-------- .../roles/keystone/tasks/check-containers.yml | 15 ++-------- .../roles/kuryr/tasks/check-containers.yml | 17 ++--------- .../letsencrypt/tasks/check-containers.yml | 16 ++-------- .../loadbalancer/tasks/check-containers.yml | 16 ++-------- .../roles/magnum/tasks/check-containers.yml | 16 ++-------- .../roles/manila/tasks/check-containers.yml | 16 ++-------- ansible/roles/manila/tasks/external_ceph.yml | 4 --- ansible/roles/mariadb/handlers/main.yml | 2 -- .../roles/mariadb/tasks/check-containers.yml | 16 ++-------- .../roles/masakari/tasks/check-containers.yml | 16 ++-------- .../memcached/tasks/check-containers.yml | 16 ++-------- .../roles/mistral/tasks/check-containers.yml | 15 ++-------- .../multipathd/tasks/check-containers.yml | 15 ++-------- .../roles/neutron/tasks/check-containers.yml | 17 ++--------- ansible/roles/nova-cell/defaults/main.yml | 2 ++ .../nova-cell/tasks/check-containers.yml | 20 ++----------- .../roles/nova-cell/tasks/external_ceph.yml | 6 ---- ansible/roles/nova/tasks/check-containers.yml | 19 ++---------- .../roles/octavia/tasks/check-containers.yml | 15 ++-------- .../opensearch/tasks/check-containers.yml | 16 ++-------- .../openvswitch/tasks/check-containers.yml | 16 ++-------- .../ovn-controller/tasks/check-containers.yml | 14 ++------- .../roles/ovn-db/tasks/check-containers.yml | 14 ++------- .../roles/ovs-dpdk/tasks/check-containers.yml | 15 ++-------- .../placement/tasks/check-containers.yml | 19 ++---------- .../prometheus/tasks/check-containers.yml | 16 ++-------- .../roles/rabbitmq/tasks/check-containers.yml | 16 ++-------- .../roles/redis/tasks/check-containers.yml | 16 ++-------- .../service-check-containers/tasks/main.yml | 30 +++++++++++++++++++ .../roles/skyline/tasks/check-containers.yml | 15 ++-------- .../roles/tacker/tasks/check-containers.yml | 15 ++-------- .../roles/telegraf/tasks/check-containers.yml | 15 ++-------- .../roles/trove/tasks/check-containers.yml | 15 ++-------- .../roles/venus/tasks/check-containers.yml | 15 ++-------- .../roles/watcher/tasks/check-containers.yml | 15 ++-------- ansible/roles/zun/handlers/main.yml | 13 ++------ ansible/roles/zun/tasks/check-containers.yml | 19 ++---------- ansible/roles/zun/tasks/external_ceph.yml | 4 --- ...ctor-container-check-27624449c47f5e6e.yaml | 23 ++++++++++++++ 64 files changed, 161 insertions(+), 761 deletions(-) create mode 100644 ansible/roles/service-check-containers/tasks/main.yml create mode 100644 releasenotes/notes/refactor-container-check-27624449c47f5e6e.yaml diff --git a/ansible/library/kolla_container.py b/ansible/library/kolla_container.py index a2cf44daa8..a4eaaaedd1 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 ae2a212427..b7e2f7c29f 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 13a763e7dd..b7e2f7c29f 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 b1a3b9cc88..b7e2f7c29f 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 dec2865e3a..b7e2f7c29f 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 50595bbc80..b7e2f7c29f 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 4b5b8dcd33..cf9c34fd13 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 73fdcf74bd..b7e2f7c29f 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 8205876670..b7e2f7c29f 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 1aa8b20739..b7e2f7c29f 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 a7bcb4b973..b7e2f7c29f 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 67a1990f87..75e3efe015 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 1dfe7ca1e6..b7e2f7c29f 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 11e9b54343..b7e2f7c29f 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 641ba907fd..b7e2f7c29f 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 8137f4541f..3daa656bda 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 4369977f29..b7e2f7c29f 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 d05629f9f2..c36fd98550 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 4c24c3b50e..b7e2f7c29f 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 0a0f8253e1..b7e2f7c29f 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 9ac2c53f4f..b7e2f7c29f 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 b7e38d8f5c..b7e2f7c29f 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 ac14089716..b7e2f7c29f 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 7ee5e77714..b7e2f7c29f 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 3eae52913a..b7e2f7c29f 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 226d979dc2..b7e2f7c29f 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 c1fdb0c5ed..b7e2f7c29f 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 0c20e05233..b7e2f7c29f 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 ee6f92fe4f..b7e2f7c29f 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 b233b5e603..b7e2f7c29f 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 ce52004723..b7e2f7c29f 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 8a66ed370f..3b70b0ad4f 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 156e16627e..78d99e4a11 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 f4f7a603bd..b7e2f7c29f 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 fa46c70bcc..b7e2f7c29f 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 49d1c29537..b7e2f7c29f 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 7ed520ca3d..b7e2f7c29f 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 5d41bdba5c..b7e2f7c29f 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 cc3ec4fa8e..b7e2f7c29f 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 a497a5fdcb..b3f445d0d8 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 93452874a6..b7e2f7c29f 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 30a6799767..4bf94c44d4 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 f1b6e1817c..b7e2f7c29f 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 ac4244ed69..b7e2f7c29f 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 44f7253c26..b7e2f7c29f 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 d030119b11..b7e2f7c29f 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 1cd016795a..b7e2f7c29f 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 1943282313..b7e2f7c29f 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 4448bd5cbf..b7e2f7c29f 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 c9f56caddf..b7e2f7c29f 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 373e12847e..b7e2f7c29f 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 5a6cc9e65f..b7e2f7c29f 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 63f7b40bd7..b7e2f7c29f 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 0000000000..a936238c10 --- /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 bc59238e12..b7e2f7c29f 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 fb3ac51407..b7e2f7c29f 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 da1cfd849b..b7e2f7c29f 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 d5beeba07c..b7e2f7c29f 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 a44b1b03f8..b7e2f7c29f 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 a7beab9674..b7e2f7c29f 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 0a78a2434b..0d21f45753 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 2f680d12f6..b7e2f7c29f 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 324f28bb4a..e57410b6bb 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 0000000000..14796d8f90 --- /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 `__