aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ansible/gather-facts.yml35
-rw-r--r--ansible/group_vars/all.yml13
-rw-r--r--ansible/library/kolla_container_facts.py142
-rw-r--r--ansible/rabbitmq-upgrade.yml21
-rw-r--r--ansible/roles/aodh/defaults/main.yml8
-rw-r--r--ansible/roles/aodh/tasks/check-containers.yml5
-rw-r--r--ansible/roles/aodh/tasks/config.yml23
-rw-r--r--ansible/roles/aodh/tasks/precheck.yml1
-rw-r--r--ansible/roles/barbican/defaults/main.yml6
-rw-r--r--ansible/roles/barbican/tasks/check-containers.yml5
-rw-r--r--ansible/roles/barbican/tasks/config.yml34
-rw-r--r--ansible/roles/barbican/tasks/precheck.yml1
-rw-r--r--ansible/roles/bifrost/defaults/main.yml2
-rw-r--r--ansible/roles/bifrost/tasks/stop.yml1
-rw-r--r--ansible/roles/blazar/defaults/main.yml4
-rw-r--r--ansible/roles/blazar/tasks/check-containers.yml5
-rw-r--r--ansible/roles/blazar/tasks/config.yml19
-rw-r--r--ansible/roles/blazar/tasks/precheck.yml1
-rw-r--r--ansible/roles/ceilometer/defaults/main.yml8
-rw-r--r--ansible/roles/ceilometer/tasks/check-containers.yml5
-rw-r--r--ansible/roles/ceilometer/tasks/config.yml56
-rw-r--r--ansible/roles/cinder/defaults/main.yml11
-rw-r--r--ansible/roles/cinder/tasks/check-containers.yml5
-rw-r--r--ansible/roles/cinder/tasks/config.yml31
-rw-r--r--ansible/roles/cinder/tasks/external_ceph.yml16
-rw-r--r--ansible/roles/cinder/tasks/precheck.yml2
-rw-r--r--ansible/roles/cinder/templates/cinder.conf.j29
-rw-r--r--ansible/roles/cloudkitty/defaults/main.yml4
-rw-r--r--ansible/roles/cloudkitty/tasks/check-containers.yml5
-rw-r--r--ansible/roles/cloudkitty/tasks/config.yml27
-rw-r--r--ansible/roles/cloudkitty/tasks/precheck.yml1
-rw-r--r--ansible/roles/collectd/defaults/main.yml2
-rw-r--r--ansible/roles/collectd/tasks/check-containers.yml5
-rw-r--r--ansible/roles/collectd/tasks/config.yml19
-rw-r--r--ansible/roles/common/defaults/main.yml9
-rw-r--r--ansible/roles/common/tasks/check-containers.yml4
-rw-r--r--ansible/roles/common/tasks/config.yml6
-rw-r--r--ansible/roles/common/templates/conf/input/00-global.conf.j22
-rw-r--r--ansible/roles/common/templates/conf/input/02-mariadb.conf.j24
-rw-r--r--ansible/roles/common/templates/conf/input/03-rabbitmq.conf.j22
-rw-r--r--ansible/roles/common/templates/conf/input/04-openstack-wsgi.conf.j22
-rw-r--r--ansible/roles/common/templates/conf/input/05-libvirt.conf.j22
-rw-r--r--ansible/roles/common/templates/conf/input/10-openvswitch.conf.j24
-rw-r--r--ansible/roles/cyborg/defaults/main.yml6
-rw-r--r--ansible/roles/cyborg/tasks/check-containers.yml5
-rw-r--r--ansible/roles/cyborg/tasks/config.yml23
-rw-r--r--ansible/roles/cyborg/tasks/precheck.yml1
-rw-r--r--ansible/roles/designate/defaults/main.yml14
-rw-r--r--ansible/roles/designate/tasks/backend_external.yml8
-rw-r--r--ansible/roles/designate/tasks/check-containers.yml5
-rw-r--r--ansible/roles/designate/tasks/config.yml34
-rw-r--r--ansible/roles/designate/tasks/precheck.yml1
-rw-r--r--ansible/roles/etcd/defaults/main.yml2
-rw-r--r--ansible/roles/etcd/tasks/check-containers.yml5
-rw-r--r--ansible/roles/etcd/tasks/config.yml10
-rw-r--r--ansible/roles/etcd/tasks/precheck.yml1
-rw-r--r--ansible/roles/glance/defaults/main.yml4
-rw-r--r--ansible/roles/glance/tasks/check-containers.yml5
-rw-r--r--ansible/roles/glance/tasks/config.yml53
-rw-r--r--ansible/roles/glance/tasks/external_ceph.yml4
-rw-r--r--ansible/roles/glance/tasks/precheck.yml6
-rw-r--r--ansible/roles/glance/tasks/stop_service.yml8
-rw-r--r--ansible/roles/gnocchi/defaults/main.yml6
-rw-r--r--ansible/roles/gnocchi/tasks/check-containers.yml5
-rw-r--r--ansible/roles/gnocchi/tasks/config.yml23
-rw-r--r--ansible/roles/gnocchi/tasks/external_ceph.yml20
-rw-r--r--ansible/roles/gnocchi/tasks/precheck.yml1
-rw-r--r--ansible/roles/grafana/defaults/main.yml2
-rw-r--r--ansible/roles/grafana/tasks/check-containers.yml5
-rw-r--r--ansible/roles/grafana/tasks/config.yml49
-rw-r--r--ansible/roles/grafana/tasks/post_config.yml2
-rw-r--r--ansible/roles/grafana/tasks/precheck.yml1
-rw-r--r--ansible/roles/grafana/templates/grafana.json.j223
-rw-r--r--ansible/roles/hacluster/defaults/main.yml6
-rw-r--r--ansible/roles/hacluster/tasks/bootstrap_service.yml6
-rw-r--r--ansible/roles/hacluster/tasks/config.yml26
-rw-r--r--ansible/roles/hacluster/tasks/precheck.yml1
-rw-r--r--ansible/roles/haproxy-config/tasks/main.yml7
-rw-r--r--ansible/roles/heat/defaults/main.yml6
-rw-r--r--ansible/roles/heat/tasks/check-containers.yml5
-rw-r--r--ansible/roles/heat/tasks/config.yml27
-rw-r--r--ansible/roles/heat/tasks/precheck.yml1
-rw-r--r--ansible/roles/horizon/defaults/main.yml2
-rw-r--r--ansible/roles/horizon/tasks/check-containers.yml19
-rw-r--r--ansible/roles/horizon/tasks/config.yml40
-rw-r--r--ansible/roles/horizon/tasks/precheck.yml1
-rw-r--r--ansible/roles/horizon/templates/_9998-kolla-settings.py.j23
-rw-r--r--ansible/roles/influxdb/defaults/main.yml2
-rw-r--r--ansible/roles/influxdb/tasks/check-containers.yml5
-rw-r--r--ansible/roles/influxdb/tasks/config.yml14
-rw-r--r--ansible/roles/influxdb/tasks/precheck.yml1
-rw-r--r--ansible/roles/ironic/defaults/main.yml12
-rw-r--r--ansible/roles/ironic/tasks/bootstrap_service.yml10
-rw-r--r--ansible/roles/ironic/tasks/check-containers.yml5
-rw-r--r--ansible/roles/ironic/tasks/config.yml56
-rw-r--r--ansible/roles/ironic/tasks/precheck.yml1
-rw-r--r--ansible/roles/iscsi/defaults/main.yml4
-rw-r--r--ansible/roles/iscsi/tasks/check-containers.yml5
-rw-r--r--ansible/roles/iscsi/tasks/config.yml10
-rw-r--r--ansible/roles/iscsi/tasks/precheck.yml1
-rw-r--r--ansible/roles/keystone/defaults/main.yml6
-rw-r--r--ansible/roles/keystone/tasks/bootstrap_service.yml1
-rw-r--r--ansible/roles/keystone/tasks/check-containers.yml5
-rw-r--r--ansible/roles/keystone/tasks/config.yml62
-rw-r--r--ansible/roles/keystone/tasks/precheck.yml1
-rw-r--r--ansible/roles/kuryr/defaults/main.yml2
-rw-r--r--ansible/roles/kuryr/tasks/check-containers.yml5
-rw-r--r--ansible/roles/kuryr/tasks/config.yml23
-rw-r--r--ansible/roles/kuryr/tasks/precheck.yml1
-rw-r--r--ansible/roles/letsencrypt/defaults/main.yml4
-rw-r--r--ansible/roles/letsencrypt/tasks/check-containers.yml5
-rw-r--r--ansible/roles/letsencrypt/tasks/config.yml18
-rw-r--r--ansible/roles/letsencrypt/tasks/precheck.yml4
-rw-r--r--ansible/roles/loadbalancer/defaults/main.yml8
-rw-r--r--ansible/roles/loadbalancer/handlers/main.yml6
-rw-r--r--ansible/roles/loadbalancer/tasks/check-containers.yml5
-rw-r--r--ansible/roles/loadbalancer/tasks/config.yml70
-rw-r--r--ansible/roles/loadbalancer/tasks/config_validate.yml26
-rw-r--r--ansible/roles/loadbalancer/tasks/precheck.yml1
-rw-r--r--ansible/roles/magnum/defaults/main.yml4
-rw-r--r--ansible/roles/magnum/tasks/check-containers.yml5
-rw-r--r--ansible/roles/magnum/tasks/config.yml23
-rw-r--r--ansible/roles/magnum/tasks/precheck.yml1
-rw-r--r--ansible/roles/manila/defaults/main.yml8
-rw-r--r--ansible/roles/manila/tasks/check-containers.yml5
-rw-r--r--ansible/roles/manila/tasks/config.yml22
-rw-r--r--ansible/roles/manila/tasks/external_ceph.yml4
-rw-r--r--ansible/roles/manila/tasks/precheck.yml1
-rw-r--r--ansible/roles/mariadb/defaults/main.yml4
-rw-r--r--ansible/roles/mariadb/tasks/check-containers.yml5
-rw-r--r--ansible/roles/mariadb/tasks/config.yml14
-rw-r--r--ansible/roles/mariadb/tasks/precheck.yml1
-rw-r--r--ansible/roles/masakari/defaults/main.yml6
-rw-r--r--ansible/roles/masakari/tasks/check-containers.yml5
-rw-r--r--ansible/roles/masakari/tasks/config.yml33
-rw-r--r--ansible/roles/masakari/tasks/precheck.yml1
-rw-r--r--ansible/roles/memcached/defaults/main.yml2
-rw-r--r--ansible/roles/memcached/tasks/check-containers.yml4
-rw-r--r--ansible/roles/memcached/tasks/config.yml4
-rw-r--r--ansible/roles/memcached/tasks/precheck.yml1
-rw-r--r--ansible/roles/mistral/defaults/main.yml8
-rw-r--r--ansible/roles/mistral/tasks/check-containers.yml5
-rw-r--r--ansible/roles/mistral/tasks/config.yml23
-rw-r--r--ansible/roles/mistral/tasks/precheck.yml1
-rw-r--r--ansible/roles/multipathd/defaults/main.yml2
-rw-r--r--ansible/roles/multipathd/tasks/check-containers.yml5
-rw-r--r--ansible/roles/multipathd/tasks/config.yml14
-rw-r--r--ansible/roles/neutron/defaults/main.yml32
-rw-r--r--ansible/roles/neutron/handlers/main.yml1
-rw-r--r--ansible/roles/neutron/tasks/check-containers.yml5
-rw-r--r--ansible/roles/neutron/tasks/config-host.yml4
-rw-r--r--ansible/roles/neutron/tasks/config.yml141
-rw-r--r--ansible/roles/neutron/tasks/neutron_plugin_agent_check.yml1
-rw-r--r--ansible/roles/neutron/tasks/precheck.yml1
-rw-r--r--ansible/roles/neutron/tasks/rolling_upgrade.yml8
-rw-r--r--ansible/roles/neutron/templates/linuxbridge_agent.ini.j23
-rw-r--r--ansible/roles/neutron/templates/ml2_conf.ini.j24
-rw-r--r--ansible/roles/neutron/templates/openvswitch_agent.ini.j23
-rw-r--r--ansible/roles/nova-cell/defaults/main.yml17
-rw-r--r--ansible/roles/nova-cell/tasks/check-containers.yml5
-rw-r--r--ansible/roles/nova-cell/tasks/config-libvirt-tls.yml57
-rw-r--r--ansible/roles/nova-cell/tasks/config.yml46
-rw-r--r--ansible/roles/nova-cell/tasks/deploy.yml2
-rw-r--r--ansible/roles/nova-cell/tasks/external_ceph.yml12
-rw-r--r--ansible/roles/nova-cell/tasks/libvirt-cleanup.yml1
-rw-r--r--ansible/roles/nova-cell/tasks/post-config.yml8
-rw-r--r--ansible/roles/nova-cell/tasks/precheck.yml36
-rw-r--r--ansible/roles/nova-cell/tasks/reload.yml3
-rw-r--r--ansible/roles/nova-cell/tasks/rolling_upgrade.yml2
-rw-r--r--ansible/roles/nova-cell/tasks/upgrade.yml4
-rw-r--r--ansible/roles/nova/defaults/main.yml6
-rw-r--r--ansible/roles/nova/tasks/check-containers.yml5
-rw-r--r--ansible/roles/nova/tasks/config.yml28
-rw-r--r--ansible/roles/nova/tasks/precheck.yml11
-rw-r--r--ansible/roles/nova/tasks/reload_api.yml3
-rw-r--r--ansible/roles/nova/tasks/reload_super_conductor.yml3
-rw-r--r--ansible/roles/nova/tasks/upgrade.yml4
-rw-r--r--ansible/roles/octavia/defaults/main.yml10
-rw-r--r--ansible/roles/octavia/tasks/check-containers.yml5
-rw-r--r--ansible/roles/octavia/tasks/config.yml35
-rw-r--r--ansible/roles/octavia/tasks/precheck.yml1
-rw-r--r--ansible/roles/opensearch/defaults/main.yml4
-rw-r--r--ansible/roles/opensearch/tasks/check-containers.yml5
-rw-r--r--ansible/roles/opensearch/tasks/config.yml22
-rw-r--r--ansible/roles/opensearch/tasks/precheck.yml1
-rw-r--r--ansible/roles/openvswitch/defaults/main.yml4
-rw-r--r--ansible/roles/openvswitch/tasks/check-containers.yml5
-rw-r--r--ansible/roles/openvswitch/tasks/config.yml13
-rw-r--r--ansible/roles/openvswitch/tasks/post-config.yml6
-rw-r--r--ansible/roles/openvswitch/tasks/precheck.yml6
-rw-r--r--ansible/roles/ovn-controller/defaults/main.yml2
-rw-r--r--ansible/roles/ovn-controller/tasks/check-containers.yml5
-rw-r--r--ansible/roles/ovn-controller/tasks/config.yml10
-rw-r--r--ansible/roles/ovn-controller/tasks/setup-ovs.yml6
-rw-r--r--ansible/roles/ovn-db/defaults/main.yml8
-rw-r--r--ansible/roles/ovn-db/tasks/bootstrap-db.yml10
-rw-r--r--ansible/roles/ovn-db/tasks/check-containers.yml5
-rw-r--r--ansible/roles/ovn-db/tasks/config.yml10
-rw-r--r--ansible/roles/ovn-db/tasks/precheck.yml1
-rw-r--r--ansible/roles/ovs-dpdk/defaults/main.yml10
-rw-r--r--ansible/roles/ovs-dpdk/tasks/check-containers.yml5
-rw-r--r--ansible/roles/ovs-dpdk/tasks/config.yml10
-rw-r--r--ansible/roles/placement/defaults/main.yml2
-rw-r--r--ansible/roles/placement/tasks/check-containers.yml5
-rw-r--r--ansible/roles/placement/tasks/config.yml27
-rw-r--r--ansible/roles/placement/tasks/precheck.yml6
-rw-r--r--ansible/roles/prechecks/vars/main.yml4
-rw-r--r--ansible/roles/prometheus/defaults/main.yml22
-rw-r--r--ansible/roles/prometheus/tasks/check-containers.yml5
-rw-r--r--ansible/roles/prometheus/tasks/config.yml53
-rw-r--r--ansible/roles/prometheus/tasks/precheck.yml1
-rw-r--r--ansible/roles/prometheus/templates/prometheus.yml.j24
-rw-r--r--ansible/roles/rabbitmq/defaults/main.yml4
-rw-r--r--ansible/roles/rabbitmq/tasks/check-containers.yml5
-rw-r--r--ansible/roles/rabbitmq/tasks/config.yml34
-rw-r--r--ansible/roles/rabbitmq/tasks/precheck.yml1
-rw-r--r--ansible/roles/rabbitmq/tasks/remove-ha-all-policy.yml1
-rw-r--r--ansible/roles/rabbitmq/tasks/restart_services.yml1
-rw-r--r--ansible/roles/redis/defaults/main.yml4
-rw-r--r--ansible/roles/redis/tasks/check-containers.yml5
-rw-r--r--ansible/roles/redis/tasks/config.yml15
-rw-r--r--ansible/roles/redis/tasks/precheck.yml6
-rw-r--r--ansible/roles/service-config-validate/tasks/validate.yml1
-rw-r--r--ansible/roles/skyline/defaults/main.yml4
-rw-r--r--ansible/roles/skyline/tasks/check-containers.yml5
-rw-r--r--ansible/roles/skyline/tasks/config.yml32
-rw-r--r--ansible/roles/skyline/tasks/precheck.yml1
-rw-r--r--ansible/roles/swift/defaults/main.yml12
-rw-r--r--ansible/roles/swift/tasks/precheck.yml1
-rw-r--r--ansible/roles/swift/tasks/start.yml2
-rw-r--r--ansible/roles/tacker/defaults/main.yml4
-rw-r--r--ansible/roles/tacker/tasks/check-containers.yml5
-rw-r--r--ansible/roles/tacker/tasks/config.yml19
-rw-r--r--ansible/roles/tacker/tasks/precheck.yml1
-rw-r--r--ansible/roles/telegraf/defaults/main.yml2
-rw-r--r--ansible/roles/telegraf/tasks/check-containers.yml5
-rw-r--r--ansible/roles/telegraf/tasks/config.yml18
-rw-r--r--ansible/roles/trove/defaults/main.yml6
-rw-r--r--ansible/roles/trove/tasks/check-containers.yml5
-rw-r--r--ansible/roles/trove/tasks/config.yml26
-rw-r--r--ansible/roles/trove/tasks/precheck.yml1
-rw-r--r--ansible/roles/venus/defaults/main.yml17
-rw-r--r--ansible/roles/venus/tasks/bootstrap.yml4
-rw-r--r--ansible/roles/venus/tasks/check-containers.yml5
-rw-r--r--ansible/roles/venus/tasks/config.yml18
-rw-r--r--ansible/roles/venus/tasks/precheck.yml1
-rw-r--r--ansible/roles/watcher/defaults/main.yml6
-rw-r--r--ansible/roles/watcher/tasks/check-containers.yml5
-rw-r--r--ansible/roles/watcher/tasks/config.yml19
-rw-r--r--ansible/roles/watcher/tasks/precheck.yml1
-rw-r--r--ansible/roles/zun/defaults/main.yml8
-rw-r--r--ansible/roles/zun/tasks/check-containers.yml5
-rw-r--r--ansible/roles/zun/tasks/config.yml22
-rw-r--r--ansible/roles/zun/tasks/precheck.yml1
-rw-r--r--doc/source/conf.py8
-rw-r--r--doc/source/reference/message-queues/rabbitmq.rst44
-rw-r--r--doc/source/reference/networking/neutron.rst41
-rw-r--r--doc/source/reference/storage/cinder-guide-pure.rst14
-rw-r--r--doc/source/reference/storage/cinder-guide.rst3
-rw-r--r--etc/kolla/globals.yml9
-rw-r--r--lint-requirements.txt3
-rw-r--r--releasenotes/notes/add-docker-image-name-prefix-1503a64978740808.yaml9
-rw-r--r--releasenotes/notes/add-parameter-fluentd-enable-watch-timer-08fbe65ba2b549e8.yaml11
-rw-r--r--releasenotes/notes/bug-1993285-127fe764e461465a.yaml5
-rw-r--r--releasenotes/notes/bug-2067999-5d009f15e1cc3185.yaml5
-rw-r--r--releasenotes/notes/bug-2073159-c54c773c72c8fb11.yaml6
-rw-r--r--releasenotes/notes/bug-2073678-45f31547395ef3c7.yaml5
-rw-r--r--releasenotes/notes/fact-gathering-double-failure-4662ef2f54d58291.yaml6
-rw-r--r--releasenotes/notes/firewalld-immediate-c2abf09977c455a9.yaml7
-rw-r--r--releasenotes/notes/neutron-physical-networks-5b908bed9809c3b4.yaml6
-rw-r--r--releasenotes/notes/performance-improvements-42c34ebf4243312a.yaml13
-rw-r--r--releasenotes/notes/prometheus-template-fix-b971aad477a8fdc9.yaml5
-rw-r--r--releasenotes/notes/pure-nvme-tcp-driver-added.yaml-db8e3496376e843c.yaml5
-rw-r--r--releasenotes/notes/rabbitmq-target-upgrade-command-d5f9d9fc27fa28f8.yaml6
-rw-r--r--releasenotes/notes/remove-any-errors-fatal-664fc2207074f0ef.yaml14
-rw-r--r--releasenotes/notes/use_proper_ip_comparison-1ed77a21eb560079.yaml7
-rw-r--r--releasenotes/notes/workaround-ovn-leader-election-f7f75e93e9300d96.yaml6
-rw-r--r--requirements.txt26
-rw-r--r--roles/cephadm/templates/cephadm.yml.j24
-rw-r--r--roles/openstack-clients/defaults/main.yml5
-rw-r--r--roles/openstack-clients/tasks/main.yml1
-rw-r--r--tests/get_logs.sh29
-rw-r--r--tests/run-hashi-vault.yml41
-rw-r--r--tests/run.yml11
-rw-r--r--tests/templates/globals-default.j24
-rw-r--r--tests/templates/neutron-server-overrides.j22
-rwxr-xr-xtests/test-core-openstack.sh11
-rwxr-xr-xtests/test-hashicorp-vault-passwords.sh1
-rwxr-xr-xtests/test-magnum.sh11
-rw-r--r--tests/test-octavia.sh22
-rwxr-xr-xtests/test-ovn.sh11
-rwxr-xr-xtests/upgrade.sh32
-rwxr-xr-xtools/kolla-ansible12
-rw-r--r--zuul.d/base.yaml19
294 files changed, 1367 insertions, 1874 deletions
diff --git a/ansible/gather-facts.yml b/ansible/gather-facts.yml
index 59c9903f5..a30c7f4ed 100644
--- a/ansible/gather-facts.yml
+++ b/ansible/gather-facts.yml
@@ -4,7 +4,6 @@
# building their configurations.
- name: Gather facts for all hosts
hosts: all
- any_errors_fatal: "{{ kolla_ansible_setup_any_errors_fatal | bool }}"
max_fail_percentage: >-
{{ gather_facts_max_fail_percentage |
default(kolla_max_fail_percentage) |
@@ -12,24 +11,18 @@
serial: '{{ kolla_serial|default("0") }}'
gather_facts: false
tasks:
+ - name: Group hosts to determine when using --limit
+ group_by:
+ key: "all_using_limit_{{ (ansible_play_batch | length) != (groups['all'] | length) }}"
+ changed_when: false
+
- name: Gather facts
setup:
filter: "{{ kolla_ansible_setup_filter }}"
gather_subset: "{{ kolla_ansible_setup_gather_subset }}"
when:
+ # Don't gather if fact caching is in use
- not ansible_facts
-
- - name: Gather package facts
- package_facts:
- when:
- - "'packages' not in ansible_facts"
- - kolla_action is defined
- - kolla_action == "precheck"
-
- - name: Group hosts to determine when using --limit
- group_by:
- key: "all_using_limit_{{ (ansible_play_batch | length) != (groups['all'] | length) }}"
- changed_when: false
tags: always
# NOTE(pbourke): This case covers deploying subsets of hosts using --limit. The
@@ -40,7 +33,6 @@
# the limit.
- name: Gather facts for all hosts (if using --limit)
hosts: all_using_limit_True
- any_errors_fatal: "{{ kolla_ansible_setup_any_errors_fatal | bool }}"
max_fail_percentage: >-
{{ gather_facts_max_fail_percentage |
default(kolla_max_fail_percentage) |
@@ -61,17 +53,10 @@
delegate_facts: True
delegate_to: "{{ item }}"
with_items: "{{ delegate_hosts }}"
- # We gathered facts for all hosts in the batch during the first play.
when:
+ # We gathered facts for all hosts in the batch during the first play.
+ # Ensure that we don't try again if they failed.
+ - item not in groups["all_using_limit_True"]
+ # Don't gather if fact caching is in use
- not hostvars[item].ansible_facts
-
- - name: Gather package facts
- package_facts:
- delegate_facts: True
- delegate_to: "{{ item }}"
- with_items: "{{ delegate_hosts }}"
- when:
- - "'packages' not in hostvars[item].ansible_facts"
- - kolla_action is defined
- - "kolla_action == 'precheck'"
tags: always
diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index 20ae57aa2..39360757a 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -36,14 +36,6 @@ kolla_ansible_setup_filter: "{{ omit }}"
# By default, we do not provide a gather subset.
kolla_ansible_setup_gather_subset: "{{ omit }}"
-# This variable is used as "any_errors_fatal" setting for the setup (gather
-# facts) plays.
-# This is useful for weeding out failing hosts early to avoid late failures
-# due to missing facts (especially cross-host).
-# Do note this still supports host fact caching and it will not affect
-# scenarios with all facts cached (as there is no task to fail).
-kolla_ansible_setup_any_errors_fatal: false
-
###################
# Kolla options
###################
@@ -56,7 +48,7 @@ kolla_base_distro: "rocky"
kolla_internal_vip_address: "{{ kolla_internal_address | default('') }}"
kolla_internal_fqdn: "{{ kolla_internal_vip_address }}"
kolla_external_vip_address: "{{ kolla_internal_vip_address }}"
-kolla_same_external_internal_vip: "{{ kolla_external_vip_address == kolla_internal_vip_address }}"
+kolla_same_external_internal_vip: "{{ kolla_external_vip_address | ansible.utils.ipaddr('address') == kolla_internal_vip_address | ansible.utils.ipaddr('address') }}"
kolla_external_fqdn: "{{ kolla_internal_fqdn if kolla_same_external_internal_vip | bool else kolla_external_vip_address }}"
kolla_dev_repos_directory: "/opt/stack/"
@@ -105,6 +97,7 @@ kolla_container_engine: "docker"
docker_registry_email:
docker_registry: "quay.io"
docker_namespace: "openstack.kolla"
+docker_image_name_prefix: ""
docker_registry_username:
# Please read the docs carefully before applying docker_registry_insecure.
docker_registry_insecure: "no"
@@ -753,6 +746,7 @@ enable_cinder_backend_quobyte: "no"
enable_cinder_backend_pure_iscsi: "no"
enable_cinder_backend_pure_fc: "no"
enable_cinder_backend_pure_roce: "no"
+enable_cinder_backend_pure_nvme_tcp: "no"
enable_cloudkitty: "no"
enable_collectd: "no"
enable_cyborg: "no"
@@ -1080,6 +1074,7 @@ designate_notifications_topic_name: "notifications_designate"
#######################
neutron_bgp_router_id: "1.1.1.1"
neutron_bridge_name: "{{ 'br-dvs' if neutron_plugin_agent == 'vmware_dvs' else 'br_dpdk' if enable_ovs_dpdk | bool else 'br-ex' }}"
+neutron_physical_networks: "{% for bridge in neutron_bridge_name.split(',') %}physnet{{ loop.index }}{% if not loop.last %},{% endif %}{% endfor %}"
# Comma-separated type of enabled ml2 type drivers
neutron_type_drivers: "flat,vlan,vxlan{% if neutron_plugin_agent == 'ovn' %},geneve{% endif %}"
# Comma-separated types of tenant networks (should be listed in 'neutron_type_drivers')
diff --git a/ansible/library/kolla_container_facts.py b/ansible/library/kolla_container_facts.py
index ef3617db2..7e2254e51 100644
--- a/ansible/library/kolla_container_facts.py
+++ b/ansible/library/kolla_container_facts.py
@@ -12,8 +12,10 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-
+from abc import ABC
+from abc import abstractmethod
from ansible.module_utils.basic import AnsibleModule
+from traceback import format_exc
DOCUMENTATION = '''
@@ -40,9 +42,9 @@ options:
- Name or names of the containers
required: False
type: str or list
- container_engine:
+ action:
description:
- - Name of container engine to use
+ - The action to perform
required: True
type: str
author: Jeffrey Zhang
@@ -54,6 +56,7 @@ EXAMPLES = '''
- name: Gather docker facts
kolla_container_facts:
container_engine: docker
+ action: get_containers
- name: Gather glance container facts
kolla_container_facts:
@@ -62,70 +65,103 @@ EXAMPLES = '''
- glance_api
- glance_registry
container_engine: podman
+ action: get_containers
'''
-def get_docker_client():
- import docker
- return docker.APIClient
-
-
-def use_docker(module, results):
- client = get_docker_client()(version=module.params.get('api_version'))
-
- containers = client.containers()
- names = module.params.get('name')
- if names and not isinstance(names, list):
- names = [names]
- for container in containers:
- for container_name in container['Names']:
- # remove '/' prefix character
- container_name = container_name[1:]
- if names and container_name not in names:
+class ContainerFactsWorker(ABC):
+ def __init__(self, module):
+ self.module = module
+ self.results = dict(changed=False, _containers=[])
+ self.params = module.params
+
+ @abstractmethod
+ def get_containers(self):
+ pass
+
+
+class DockerFactsWorker(ContainerFactsWorker):
+ def __init__(self, module):
+ super().__init__(module)
+ try:
+ import docker
+ except ImportError:
+ self.module.fail_json(
+ msg="The docker library could not be imported")
+ self.client = docker.APIClient(version=module.params.get(
+ 'api_version'))
+
+ def get_containers(self):
+ containers = self.client.containers()
+ names = self.params.get('name')
+ if names and not isinstance(names, list):
+ names = [names]
+ for container in containers:
+ for container_name in container['Names']:
+ # remove '/' prefix character
+ container_name = container_name[1:]
+ if names and container_name not in names:
+ continue
+ self.results['_containers'].append(container)
+ self.results[container_name] = container
+
+
+class PodmanFactsWorker(ContainerFactsWorker):
+ def __init__(self, module):
+ try:
+ import podman.errors as podmanError
+ from podman import PodmanClient
+ except ImportError:
+ self.module.fail_json(
+ msg="The podman library could not be imported")
+ self.podmanError = podmanError
+ super().__init__(module)
+ self.client = PodmanClient(
+ base_url="http+unix:/run/podman/podman.sock")
+
+ def get_containers(self):
+ try:
+ containers = self.client.containers.list(
+ all=True, ignore_removed=True)
+ except self.podmanError.APIError as e:
+ self.module.fail_json(failed=True,
+ msg=f"Internal error: {e.explanation}")
+ names = self.params.get('name')
+ if names and not isinstance(names, list):
+ names = [names]
+
+ for container in containers:
+ container.reload()
+ container_name = container.attrs['Name']
+ if container_name not in names:
continue
- results['_containers'].append(container)
- results[container_name] = container
-
-
-def use_podman(module, results):
- import podman.errors as pe
- from podman import PodmanClient
-
- client = PodmanClient(base_url="http+unix:/run/podman/podman.sock")
-
- try:
- containers = client.containers.list(all=True, ignore_removed=True)
- except pe.APIError as e:
- module.fail_json(failed=True, msg=f"Internal error: {e.explanation}")
- names = module.params.get('name')
- if names and not isinstance(names, list):
- names = [names]
-
- for container in containers:
- container.reload()
- container_name = container.attrs['Name']
- if names and container_name not in names:
- continue
- results['_containers'].append(container.attrs)
- results[container_name] = container.attrs
+ self.results['_containers'].append(container.attrs)
+ self.results[container_name] = container.attrs
def main():
argument_spec = dict(
name=dict(required=False, type='list', default=[]),
api_version=dict(required=False, type='str', default='auto'),
- container_engine=dict(required=True, type='str')
+ container_engine=dict(required=True, type='str'),
+ action=dict(required=True, type='str',
+ choices=['get_containers']),
)
module = AnsibleModule(argument_spec=argument_spec)
- results = dict(changed=False, _containers=[])
- if module.params['container_engine'] == 'podman':
- use_podman(module, results)
- else:
- use_docker(module, results)
-
- module.exit_json(**results)
+ cw: ContainerFactsWorker = None
+ try:
+ if module.params.get('container_engine') == 'docker':
+ cw = DockerFactsWorker(module)
+ else:
+ cw = PodmanFactsWorker(module)
+
+ result = bool(getattr(cw, module.params.get('action'))())
+ module.exit_json(result=result, **cw.results)
+ except Exception:
+ module.fail_json(changed=True, msg=repr(format_exc()),
+ **getattr(cw, 'result', {}))
if __name__ == "__main__":
diff --git a/ansible/rabbitmq-upgrade.yml b/ansible/rabbitmq-upgrade.yml
new file mode 100644
index 000000000..367767650
--- /dev/null
+++ b/ansible/rabbitmq-upgrade.yml
@@ -0,0 +1,21 @@
+---
+- import_playbook: gather-facts.yml
+
+- name: Group hosts based on configuration (RabbitMQ Only)
+ hosts: all
+ gather_facts: false
+ max_fail_percentage: >-
+ {{ group_hosts_max_fail_percentage |
+ default(kolla_max_fail_percentage) |
+ default(100) }}
+ tasks:
+ - name: Group hosts based on enabled services (RabbitMQ Only)
+ group_by:
+ key: "enable_rabbitmq_{{ enable_rabbitmq | bool }}"
+ changed_when: false
+ tags: always
+
+- import_playbook: rabbitmq.yml
+ vars:
+ kolla_action: upgrade
+ rabbitmq_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/rabbitmq-{{ rabbitmq_version_suffix | regex_replace('\\.', '-') }}"
diff --git a/ansible/roles/aodh/defaults/main.yml b/ansible/roles/aodh/defaults/main.yml
index 5f54eb549..12a241dba 100644
--- a/ansible/roles/aodh/defaults/main.yml
+++ b/ansible/roles/aodh/defaults/main.yml
@@ -98,19 +98,19 @@ aodh_enabled_notification_topics: "{{ aodh_notification_topics | selectattr('ena
####################
aodh_tag: "{{ openstack_tag }}"
-aodh_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/aodh-api"
+aodh_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}aodh-api"
aodh_api_tag: "{{ aodh_tag }}"
aodh_api_image_full: "{{ aodh_api_image }}:{{ aodh_api_tag }}"
-aodh_evaluator_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/aodh-evaluator"
+aodh_evaluator_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}aodh-evaluator"
aodh_evaluator_tag: "{{ aodh_tag }}"
aodh_evaluator_image_full: "{{ aodh_evaluator_image }}:{{ aodh_evaluator_tag }}"
-aodh_listener_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/aodh-listener"
+aodh_listener_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}aodh-listener"
aodh_listener_tag: "{{ aodh_tag }}"
aodh_listener_image_full: "{{ aodh_listener_image }}:{{ aodh_listener_tag }}"
-aodh_notifier_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/aodh-notifier"
+aodh_notifier_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}aodh-notifier"
aodh_notifier_tag: "{{ aodh_tag }}"
aodh_notifier_image_full: "{{ aodh_notifier_image }}:{{ aodh_notifier_tag }}"
diff --git a/ansible/roles/aodh/tasks/check-containers.yml b/ansible/roles/aodh/tasks/check-containers.yml
index 2f263c4f7..ae2a21242 100644
--- a/ansible/roles/aodh/tasks/check-containers.yml
+++ b/ansible/roles/aodh/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ aodh_services }}"
+ with_dict: "{{ aodh_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/aodh/tasks/config.yml b/ansible/roles/aodh/tasks/config.yml
index 0f5d0c1e7..cb5ae253e 100644
--- a/ansible/roles/aodh/tasks/config.yml
+++ b/ansible/roles/aodh/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ aodh_services }}"
+ with_dict: "{{ aodh_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -39,9 +36,7 @@
become: true
when:
- aodh_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ aodh_services }}"
+ with_dict: "{{ aodh_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -55,10 +50,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ aodh_services }}"
+ with_dict: "{{ aodh_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -75,10 +67,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/aodh.conf"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ aodh_services }}"
+ with_dict: "{{ aodh_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -90,8 +79,6 @@
dest: "{{ node_config_directory }}/aodh-api/wsgi-aodh.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart aodh-api container"
diff --git a/ansible/roles/aodh/tasks/precheck.yml b/ansible/roles/aodh/tasks/precheck.yml
index 075ffa4d4..8351e4359 100644
--- a/ansible/roles/aodh/tasks/precheck.yml
+++ b/ansible/roles/aodh/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- aodh_api
diff --git a/ansible/roles/barbican/defaults/main.yml b/ansible/roles/barbican/defaults/main.yml
index 293088980..83e44b740 100644
--- a/ansible/roles/barbican/defaults/main.yml
+++ b/ansible/roles/barbican/defaults/main.yml
@@ -74,15 +74,15 @@ barbican_database_shard:
####################
barbican_tag: "{{ openstack_tag }}"
-barbican_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/barbican-api"
+barbican_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}barbican-api"
barbican_api_tag: "{{ barbican_tag }}"
barbican_api_image_full: "{{ barbican_api_image }}:{{ barbican_api_tag }}"
-barbican_keystone_listener_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/barbican-keystone-listener"
+barbican_keystone_listener_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}barbican-keystone-listener"
barbican_keystone_listener_tag: "{{ barbican_tag }}"
barbican_keystone_listener_image_full: "{{ barbican_keystone_listener_image }}:{{ barbican_keystone_listener_tag }}"
-barbican_worker_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/barbican-worker"
+barbican_worker_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}barbican-worker"
barbican_worker_tag: "{{ barbican_tag }}"
barbican_worker_image_full: "{{ barbican_worker_image }}:{{ barbican_worker_tag }}"
diff --git a/ansible/roles/barbican/tasks/check-containers.yml b/ansible/roles/barbican/tasks/check-containers.yml
index d9dd4be71..13a763e7d 100644
--- a/ansible/roles/barbican/tasks/check-containers.yml
+++ b/ansible/roles/barbican/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ barbican_services }}"
+ with_dict: "{{ barbican_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/barbican/tasks/config.yml b/ansible/roles/barbican/tasks/config.yml
index 4d48f4bd0..cec2d566c 100644
--- a/ansible/roles/barbican/tasks/config.yml
+++ b/ansible/roles/barbican/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ barbican_services }}"
+ with_dict: "{{ barbican_services | select_services_enabled_and_mapped_to_host }}"
- name: Ensuring vassals config directories exist
vars:
@@ -22,9 +19,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_items:
- "barbican-api/vassals"
@@ -57,10 +52,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ barbican_services }}"
+ with_dict: "{{ barbican_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -75,9 +67,7 @@
dest: "{{ node_config_directory }}/barbican-api/vassals/barbican-api.ini"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart barbican-api container
@@ -89,9 +79,7 @@
run_once: True
delegate_to: localhost
register: check_barbican_api_paste_ini
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
- name: Copying over barbican-api-paste.ini
vars:
@@ -102,8 +90,7 @@
mode: "0660"
become: true
when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- check_barbican_api_paste_ini.stat.exists
notify:
- Restart barbican-api container
@@ -121,10 +108,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/barbican.conf"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ barbican_services }}"
+ with_dict: "{{ barbican_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -136,8 +120,6 @@
become: true
when:
- barbican_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ barbican_services }}"
+ with_dict: "{{ barbican_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/barbican/tasks/precheck.yml b/ansible/roles/barbican/tasks/precheck.yml
index 909b7b383..b33d06987 100644
--- a/ansible/roles/barbican/tasks/precheck.yml
+++ b/ansible/roles/barbican/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- barbican_api
diff --git a/ansible/roles/bifrost/defaults/main.yml b/ansible/roles/bifrost/defaults/main.yml
index 8143d36b6..60b74d330 100644
--- a/ansible/roles/bifrost/defaults/main.yml
+++ b/ansible/roles/bifrost/defaults/main.yml
@@ -4,7 +4,7 @@
####################
bifrost_tag: "{{ openstack_tag }}"
-bifrost_deploy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/bifrost-deploy"
+bifrost_deploy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}bifrost-deploy"
bifrost_deploy_tag: "{{ bifrost_tag }}"
bifrost_deploy_image_full: "{{ bifrost_deploy_image }}:{{ bifrost_deploy_tag }}"
diff --git a/ansible/roles/bifrost/tasks/stop.yml b/ansible/roles/bifrost/tasks/stop.yml
index 7609ad123..1c961d243 100644
--- a/ansible/roles/bifrost/tasks/stop.yml
+++ b/ansible/roles/bifrost/tasks/stop.yml
@@ -3,6 +3,7 @@
- name: Check if bifrost_deploy container is running
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- bifrost_deploy
diff --git a/ansible/roles/blazar/defaults/main.yml b/ansible/roles/blazar/defaults/main.yml
index aef39c115..3ca27b7a2 100644
--- a/ansible/roles/blazar/defaults/main.yml
+++ b/ansible/roles/blazar/defaults/main.yml
@@ -70,11 +70,11 @@ blazar_database_shard:
####################
blazar_tag: "{{ openstack_tag }}"
-blazar_manager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/blazar-manager"
+blazar_manager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}blazar-manager"
blazar_manager_tag: "{{ blazar_tag }}"
blazar_manager_image_full: "{{ blazar_manager_image }}:{{ blazar_manager_tag }}"
-blazar_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/blazar-api"
+blazar_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}blazar-api"
blazar_api_tag: "{{ blazar_tag }}"
blazar_api_image_full: "{{ blazar_api_image }}:{{ blazar_api_tag }}"
diff --git a/ansible/roles/blazar/tasks/check-containers.yml b/ansible/roles/blazar/tasks/check-containers.yml
index 8cf271890..b1a3b9cc8 100644
--- a/ansible/roles/blazar/tasks/check-containers.yml
+++ b/ansible/roles/blazar/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ blazar_services }}"
+ with_dict: "{{ blazar_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/blazar/tasks/config.yml b/ansible/roles/blazar/tasks/config.yml
index 24c9e0c53..f717ea34c 100644
--- a/ansible/roles/blazar/tasks/config.yml
+++ b/ansible/roles/blazar/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ blazar_services }}"
+ with_dict: "{{ blazar_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -41,10 +38,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ blazar_services }}"
+ with_dict: "{{ blazar_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -61,10 +55,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/blazar.conf"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ blazar_services }}"
+ with_dict: "{{ blazar_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -76,8 +67,6 @@
become: true
when:
- blazar_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ blazar_services }}"
+ with_dict: "{{ blazar_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/blazar/tasks/precheck.yml b/ansible/roles/blazar/tasks/precheck.yml
index 02408a2f7..c77486e81 100644
--- a/ansible/roles/blazar/tasks/precheck.yml
+++ b/ansible/roles/blazar/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- blazar_api
diff --git a/ansible/roles/ceilometer/defaults/main.yml b/ansible/roles/ceilometer/defaults/main.yml
index febb5070e..b49a14877 100644
--- a/ansible/roles/ceilometer/defaults/main.yml
+++ b/ansible/roles/ceilometer/defaults/main.yml
@@ -46,19 +46,19 @@ ceilometer_config_validation:
####################
ceilometer_tag: "{{ openstack_tag }}"
-ceilometer_notification_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ceilometer-notification"
+ceilometer_notification_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ceilometer-notification"
ceilometer_notification_tag: "{{ ceilometer_tag }}"
ceilometer_notification_image_full: "{{ ceilometer_notification_image }}:{{ ceilometer_notification_tag }}"
-ceilometer_central_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ceilometer-central"
+ceilometer_central_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ceilometer-central"
ceilometer_central_tag: "{{ ceilometer_tag }}"
ceilometer_central_image_full: "{{ ceilometer_central_image }}:{{ ceilometer_central_tag }}"
-ceilometer_compute_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ceilometer-compute"
+ceilometer_compute_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ceilometer-compute"
ceilometer_compute_tag: "{{ ceilometer_tag }}"
ceilometer_compute_image_full: "{{ ceilometer_compute_image }}:{{ ceilometer_compute_tag }}"
-ceilometer_ipmi_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ceilometer-ipmi"
+ceilometer_ipmi_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ceilometer-ipmi"
ceilometer_ipmi_tag: "{{ ceilometer_tag }}"
ceilometer_ipmi_image_full: "{{ ceilometer_ipmi_image }}:{{ ceilometer_ipmi_tag }}"
diff --git a/ansible/roles/ceilometer/tasks/check-containers.yml b/ansible/roles/ceilometer/tasks/check-containers.yml
index 8bedd1b50..dec2865e3 100644
--- a/ansible/roles/ceilometer/tasks/check-containers.yml
+++ b/ansible/roles/ceilometer/tasks/check-containers.yml
@@ -10,9 +10,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ceilometer_services }}"
+ with_dict: "{{ ceilometer_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/ceilometer/tasks/config.yml b/ansible/roles/ceilometer/tasks/config.yml
index 02b575fd5..79a5ed25f 100644
--- a/ansible/roles/ceilometer/tasks/config.yml
+++ b/ansible/roles/ceilometer/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ceilometer_services }}"
+ with_dict: "{{ ceilometer_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if the folder for custom meter definitions exist
stat:
@@ -42,11 +39,9 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- with_dict: "{{ ceilometer_services }}"
+ with_dict: "{{ ceilometer_services | select_services_enabled_and_mapped_to_host }}"
when:
- should_copy_custom_meter_definitions
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- name: Copying custom meter definitions to Ceilometer
copy:
@@ -57,9 +52,7 @@
become: true
when:
- should_copy_custom_meter_definitions
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ceilometer_services }}"
+ with_dict: "{{ ceilometer_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -118,9 +111,7 @@
become: true
when:
- ceilometer_polling_file.stat.exists
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ceilometer_services }}"
+ with_dict: "{{ ceilometer_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -145,9 +136,7 @@
become: true
when:
- ceilometer_gnocchi_resources_file.stat.exists
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ceilometer_services }}"
+ with_dict: "{{ ceilometer_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -186,10 +175,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ceilometer_services }}"
+ with_dict: "{{ ceilometer_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -206,10 +192,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/ceilometer.conf"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ ceilometer_services }}"
+ with_dict: "{{ ceilometer_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -231,8 +214,7 @@
register: ceilometer_event_definitions_overwriting
when:
- ceilometer_event_definitions_file.stat.exists
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
notify:
- Restart ceilometer-notification container
@@ -246,8 +228,7 @@
become: true
register: ceilometer_event_definitions
when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- not ceilometer_event_definitions_file.stat.exists
notify:
- Restart ceilometer-notification container
@@ -263,9 +244,7 @@
dest: "{{ node_config_directory }}/ceilometer-notification/event_pipeline.yaml"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart ceilometer-notification container
@@ -290,10 +269,8 @@
register: ceilometer_pipeline_overwriting
when:
- ceilometer_pipeline_file.stat.exists
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- item.key in services_require_pipeline
- with_dict: "{{ ceilometer_services }}"
+ with_dict: "{{ ceilometer_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -309,11 +286,9 @@
mode: "0660"
become: true
when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- item.key in services_require_pipeline
- not ceilometer_pipeline_file.stat.exists
- with_dict: "{{ ceilometer_services }}"
+ with_dict: "{{ ceilometer_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -328,8 +303,7 @@
when:
- nova_compute_virt_type == "vmware"
- not vmware_vcenter_insecure | bool
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
notify:
- Restart ceilometer-compute container
@@ -341,8 +315,6 @@
become: true
when:
- ceilometer_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ceilometer_services }}"
+ with_dict: "{{ ceilometer_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/cinder/defaults/main.yml b/ansible/roles/cinder/defaults/main.yml
index db000ae03..dca871642 100644
--- a/ansible/roles/cinder/defaults/main.yml
+++ b/ansible/roles/cinder/defaults/main.yml
@@ -86,19 +86,19 @@ cinder_database_shard:
####################
cinder_tag: "{{ openstack_tag }}"
-cinder_volume_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/cinder-volume"
+cinder_volume_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cinder-volume"
cinder_volume_tag: "{{ cinder_tag }}"
cinder_volume_image_full: "{{ cinder_volume_image }}:{{ cinder_volume_tag }}"
-cinder_scheduler_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/cinder-scheduler"
+cinder_scheduler_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cinder-scheduler"
cinder_scheduler_tag: "{{ cinder_tag }}"
cinder_scheduler_image_full: "{{ cinder_scheduler_image }}:{{ cinder_scheduler_tag }}"
-cinder_backup_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/cinder-backup"
+cinder_backup_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cinder-backup"
cinder_backup_tag: "{{ cinder_tag }}"
cinder_backup_image_full: "{{ cinder_backup_image }}:{{ cinder_backup_tag }}"
-cinder_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/cinder-api"
+cinder_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cinder-api"
cinder_api_tag: "{{ cinder_tag }}"
cinder_api_image_full: "{{ cinder_api_image }}:{{ cinder_api_tag }}"
@@ -253,6 +253,8 @@ cinder_backends:
enabled: "{{ enable_cinder_backend_pure_fc | bool }}"
- name: "{{ cinder_backend_pure_roce_name }}"
enabled: "{{ enable_cinder_backend_pure_roce | bool }}"
+ - name: "{{ cinder_backend_pure_nvme_tcp_name }}"
+ enabled: "{{ enable_cinder_backend_pure_nvme_tcp | bool }}"
cinder_backend_ceph_name: "rbd-1"
cinder_backend_lvm_name: "lvm-1"
@@ -264,6 +266,7 @@ cinder_backend_quobyte_name: "QuobyteHD"
cinder_backend_pure_iscsi_name: "Pure-FlashArray-iscsi"
cinder_backend_pure_fc_name: "Pure-FlashArray-fc"
cinder_backend_pure_roce_name: "Pure-FlashArray-roce"
+cinder_backend_pure_nvme_tcp_name: "Pure-FlashArray-nvme-tcp"
cinder_ceph_backends:
- name: "{{ cinder_backend_ceph_name }}"
diff --git a/ansible/roles/cinder/tasks/check-containers.yml b/ansible/roles/cinder/tasks/check-containers.yml
index c3f5ac2a2..50595bbc8 100644
--- a/ansible/roles/cinder/tasks/check-containers.yml
+++ b/ansible/roles/cinder/tasks/check-containers.yml
@@ -12,9 +12,6 @@
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
privileged: "{{ item.value.privileged | default(False) }}"
ipc_mode: "{{ item.value.ipc_mode | default('') }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ cinder_services }}"
+ with_dict: "{{ cinder_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/cinder/tasks/config.yml b/ansible/roles/cinder/tasks/config.yml
index 493ebb6a5..754adc945 100644
--- a/ansible/roles/cinder/tasks/config.yml
+++ b/ansible/roles/cinder/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ cinder_services }}"
+ with_dict: "{{ cinder_services | select_services_enabled_and_mapped_to_host }}"
- include_tasks: external_ceph.yml
when:
@@ -47,10 +44,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ cinder_services }}"
+ with_dict: "{{ cinder_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -66,9 +60,7 @@
- "{{ node_custom_config }}/cinder/{{ inventory_hostname }}/cinder-wsgi.conf"
- "{{ node_custom_config }}/cinder/cinder-wsgi.conf"
- "cinder-wsgi.conf.j2"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart cinder-api container
@@ -85,10 +77,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/cinder.conf"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ cinder_services }}"
+ with_dict: "{{ cinder_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -101,9 +90,7 @@
dest: "{{ node_config_directory }}/cinder-volume/hostnqn"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart cinder-volume container
@@ -114,14 +101,14 @@
dest: "{{ node_config_directory }}/{{ item.key }}/{{ cinder_policy_file }}"
mode: "0660"
when:
- - item.value.enabled | bool
- cinder_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ cinder_services }}"
+ with_dict: "{{ cinder_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
- name: Copying over nfs_shares files for cinder_volume
+ vars:
+ service: "{{ cinder_services['cinder-volume'] }}"
become: true
template:
src: "{{ item }}"
@@ -138,6 +125,6 @@
- "{{ node_custom_config }}/cinder/cinder-volume/nfs_shares"
- "{{ node_custom_config }}/cinder/{{ inventory_hostname }}/nfs_shares"
skip: "{{ not enable_cinder_backend_nfs | bool and not enable_cinder_backend_hnas_nfs | bool }}"
- when: inventory_hostname in groups['cinder-volume']
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart cinder-volume container
diff --git a/ansible/roles/cinder/tasks/external_ceph.yml b/ansible/roles/cinder/tasks/external_ceph.yml
index 8086092bc..96bc8cc8c 100644
--- a/ansible/roles/cinder/tasks/external_ceph.yml
+++ b/ansible/roles/cinder/tasks/external_ceph.yml
@@ -9,9 +9,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_items:
- "cinder-volume"
- "cinder-backup"
@@ -32,8 +30,7 @@
mode: "0660"
become: true
when:
- - service.enabled | bool
- - inventory_hostname in groups[service.group]
+ - service | service_enabled_and_mapped_to_host
- service_name in services_need_config
with_nested:
- "{{ cinder_services | dict2items }}"
@@ -44,6 +41,7 @@
- name: Copy over Ceph keyring files for cinder-volume
vars:
keyring: "{{ item.cluster }}.{{ ceph_cinder_keyring }}"
+ service: "{{ cinder_services['cinder-volume'] }}"
template:
src: "{{ node_custom_config }}/cinder/cinder-volume/{{ keyring }}"
dest: "{{ node_config_directory }}/cinder-volume/ceph/{{ keyring }}"
@@ -52,12 +50,13 @@
with_items: "{{ cinder_ceph_backends }}"
when:
- external_ceph_cephx_enabled | bool
- - inventory_hostname in groups['cinder-volume']
- - cinder_services['cinder-volume'].enabled | bool
+ - service | service_enabled_and_mapped_to_host
notify:
- Restart cinder-volume container
- name: Copy over Ceph keyring files for cinder-backup
+ vars:
+ service: "{{ cinder_services['cinder-backup'] }}"
template:
src: "{{ node_custom_config }}/cinder/cinder-backup/{{ item }}"
dest: "{{ node_config_directory }}/cinder-backup/ceph/{{ item }}"
@@ -69,8 +68,7 @@
- "{{ cinder_backup_ceph_backend.cluster }}.{{ ceph_cinder_backup_keyring }}"
when:
- external_ceph_cephx_enabled | bool
- - inventory_hostname in groups['cinder-backup']
- - cinder_services['cinder-backup'].enabled | bool
+ - service | service_enabled_and_mapped_to_host
notify:
- Restart cinder-backup container
diff --git a/ansible/roles/cinder/tasks/precheck.yml b/ansible/roles/cinder/tasks/precheck.yml
index 41c55673a..c29ab8f88 100644
--- a/ansible/roles/cinder/tasks/precheck.yml
+++ b/ansible/roles/cinder/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- cinder_api
@@ -42,6 +43,7 @@
- not enable_cinder_backend_pure_iscsi | bool
- not enable_cinder_backend_pure_fc | bool
- not enable_cinder_backend_pure_roce | bool
+ - not enable_cinder_backend_pure_nvme_tcp | bool
- name: Checking LVM volume group exists for Cinder
become: true
diff --git a/ansible/roles/cinder/templates/cinder.conf.j2 b/ansible/roles/cinder/templates/cinder.conf.j2
index 7523b50f5..6cde7a94e 100644
--- a/ansible/roles/cinder/templates/cinder.conf.j2
+++ b/ansible/roles/cinder/templates/cinder.conf.j2
@@ -229,6 +229,15 @@ san_ip = {{ pure_san_ip }}
pure_api_token = {{ pure_api_token }}
{% endif %}
+{% if enable_cinder_backend_pure_nvme_tcp | bool %}
+[{{ cinder_backend_pure_nvme_tcp_name }}]
+volume_backend_name = {{ pure_nvme_tcp_backend }}
+volume_driver = cinder.volume.drivers.pure.PureNVMEDriver
+pure_nmve_transport = tcp
+san_ip = {{ pure_san_ip }}
+pure_api_token = {{ pure_api_token }}
+{% endif %}
+
{% if enable_cinder_backend_pure_roce | bool %}
[{{ cinder_backend_pure_roce_name }}]
volume_backend_name = {{ pure_roce_backend }}
diff --git a/ansible/roles/cloudkitty/defaults/main.yml b/ansible/roles/cloudkitty/defaults/main.yml
index be387f794..d6004f066 100644
--- a/ansible/roles/cloudkitty/defaults/main.yml
+++ b/ansible/roles/cloudkitty/defaults/main.yml
@@ -64,11 +64,11 @@ cloudkitty_database_shard:
####################
cloudkitty_tag: "{{ openstack_tag }}"
-cloudkitty_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/cloudkitty-api"
+cloudkitty_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cloudkitty-api"
cloudkitty_api_tag: "{{ cloudkitty_tag }}"
cloudkitty_api_image_full: "{{ cloudkitty_api_image }}:{{ cloudkitty_api_tag }}"
-cloudkitty_processor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/cloudkitty-processor"
+cloudkitty_processor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cloudkitty-processor"
cloudkitty_processor_tag: "{{ cloudkitty_tag }}"
cloudkitty_processor_image_full: "{{ cloudkitty_processor_image }}:{{ cloudkitty_processor_tag }}"
diff --git a/ansible/roles/cloudkitty/tasks/check-containers.yml b/ansible/roles/cloudkitty/tasks/check-containers.yml
index 435ee43de..73fdcf74b 100644
--- a/ansible/roles/cloudkitty/tasks/check-containers.yml
+++ b/ansible/roles/cloudkitty/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ cloudkitty_services }}"
+ with_dict: "{{ cloudkitty_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/cloudkitty/tasks/config.yml b/ansible/roles/cloudkitty/tasks/config.yml
index 967b8cab3..ce1c27f8c 100644
--- a/ansible/roles/cloudkitty/tasks/config.yml
+++ b/ansible/roles/cloudkitty/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ cloudkitty_services }}"
+ with_dict: "{{ cloudkitty_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -45,9 +42,7 @@
become: true
when:
- cloudkitty_custom_metrics_file.stat.exists
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ cloudkitty_services }}"
+ with_dict: "{{ cloudkitty_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -65,10 +60,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ cloudkitty_services }}"
+ with_dict: "{{ cloudkitty_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -85,10 +77,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/cloudkitty.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ cloudkitty_services }}"
+ with_dict: "{{ cloudkitty_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -100,9 +89,7 @@
dest: "{{ node_config_directory }}/cloudkitty-api/wsgi-cloudkitty.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart cloudkitty-api container
@@ -114,8 +101,6 @@
become: true
when:
- cloudkitty_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ cloudkitty_services }}"
+ with_dict: "{{ cloudkitty_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/cloudkitty/tasks/precheck.yml b/ansible/roles/cloudkitty/tasks/precheck.yml
index f5e2a56f8..0892ba8e6 100644
--- a/ansible/roles/cloudkitty/tasks/precheck.yml
+++ b/ansible/roles/cloudkitty/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- cloudkitty_api
diff --git a/ansible/roles/collectd/defaults/main.yml b/ansible/roles/collectd/defaults/main.yml
index a0470b7f9..a8c98fe57 100644
--- a/ansible/roles/collectd/defaults/main.yml
+++ b/ansible/roles/collectd/defaults/main.yml
@@ -12,7 +12,7 @@ collectd_services:
####################
# Docker
####################
-collectd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/collectd"
+collectd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}collectd"
collectd_tag: "{{ openstack_tag }}"
collectd_image_full: "{{ collectd_image }}:{{ collectd_tag }}"
diff --git a/ansible/roles/collectd/tasks/check-containers.yml b/ansible/roles/collectd/tasks/check-containers.yml
index 18562710b..820587667 100644
--- a/ansible/roles/collectd/tasks/check-containers.yml
+++ b/ansible/roles/collectd/tasks/check-containers.yml
@@ -9,9 +9,6 @@
privileged: "{{ item.value.privileged | default(False) }}"
volumes: "{{ item.value.volumes }}"
dimensions: "{{ item.value.dimensions }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ collectd_services }}"
+ with_dict: "{{ collectd_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/collectd/tasks/config.yml b/ansible/roles/collectd/tasks/config.yml
index 6b82fca9f..44ea5adc1 100644
--- a/ansible/roles/collectd/tasks/config.yml
+++ b/ansible/roles/collectd/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ collectd_services }}"
+ with_dict: "{{ collectd_services | select_services_enabled_and_mapped_to_host }}"
- name: Ensuring Plugin directory exist
file:
@@ -20,10 +17,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ collectd_services }}"
+ with_dict: "{{ collectd_services | select_services_enabled_and_mapped_to_host }}"
- name: Copying over config.json files for services
template:
@@ -31,10 +25,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ collectd_services }}"
+ with_dict: "{{ collectd_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart collectd container
@@ -51,8 +42,6 @@
- "{{ node_custom_config }}/collectd/collectd.conf"
- "{{ node_custom_config }}/collectd.conf"
- "collectd.conf.j2"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart collectd container
diff --git a/ansible/roles/common/defaults/main.yml b/ansible/roles/common/defaults/main.yml
index 3f0c7dd91..cd16fbc33 100644
--- a/ansible/roles/common/defaults/main.yml
+++ b/ansible/roles/common/defaults/main.yml
@@ -61,15 +61,15 @@ cron_dimensions: "{{ default_container_dimensions }}"
kolla_toolbox_dimensions: "{{ default_container_dimensions }}"
fluentd_dimensions: "{{ default_container_dimensions }}"
-kolla_toolbox_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/kolla-toolbox"
+kolla_toolbox_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}kolla-toolbox"
kolla_toolbox_tag: "{{ common_tag }}"
kolla_toolbox_image_full: "{{ kolla_toolbox_image }}:{{ kolla_toolbox_tag }}"
-cron_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/cron"
+cron_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cron"
cron_tag: "{{ common_tag }}"
cron_image_full: "{{ cron_image }}:{{ cron_tag }}"
-fluentd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/fluentd"
+fluentd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}fluentd"
fluentd_tag: "{{ common_tag }}"
fluentd_image_full: "{{ fluentd_image }}:{{ fluentd_tag }}"
@@ -135,6 +135,9 @@ cron_logrotate_schedule: "daily"
# Fluentd
####################
+# Enable the additional watch timer
+fluentd_enable_watch_timer: "false"
+
fluentd_input_openstack_services:
- name: aodh
enabled: "{{ enable_aodh | bool }}"
diff --git a/ansible/roles/common/tasks/check-containers.yml b/ansible/roles/common/tasks/check-containers.yml
index 8550d8af5..1aa8b2073 100644
--- a/ansible/roles/common/tasks/check-containers.yml
+++ b/ansible/roles/common/tasks/check-containers.yml
@@ -10,8 +10,6 @@
dimensions: "{{ item.value.dimensions }}"
privileged: "{{ item.value.privileged | default(False) }}"
environment: "{{ item.value.environment }}"
- when:
- - item.value | service_enabled_and_mapped_to_host
- with_dict: "{{ common_services }}"
+ with_dict: "{{ common_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/common/tasks/config.yml b/ansible/roles/common/tasks/config.yml
index f5839b998..36f66773f 100644
--- a/ansible/roles/common/tasks/config.yml
+++ b/ansible/roles/common/tasks/config.yml
@@ -45,8 +45,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when: item.value | service_enabled_and_mapped_to_host
- with_dict: "{{ common_services }}"
+ with_dict: "{{ common_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -238,9 +237,8 @@
mode: "0770"
ignore_errors: "{{ ansible_check_mode }}"
when:
- - item.value | service_enabled_and_mapped_to_host
- item.key != "kolla-toolbox"
- with_dict: "{{ common_services }}"
+ with_dict: "{{ common_services | select_services_enabled_and_mapped_to_host }}"
- name: Copy rabbitmq-env.conf to kolla toolbox
template:
diff --git a/ansible/roles/common/templates/conf/input/00-global.conf.j2 b/ansible/roles/common/templates/conf/input/00-global.conf.j2
index eb69cff7d..fbd84b7f0 100644
--- a/ansible/roles/common/templates/conf/input/00-global.conf.j2
+++ b/ansible/roles/common/templates/conf/input/00-global.conf.j2
@@ -12,7 +12,7 @@
pos_file /var/run/fluentd/kolla-openstack.pos
tag kolla.*
ignore_repeated_permission_error true
- enable_watch_timer false
+ enable_watch_timer {{ fluentd_enable_watch_timer }}
<parse>
@type multiline
format_firstline /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3} \d+ \S+ \S+ \[.*\]/
diff --git a/ansible/roles/common/templates/conf/input/02-mariadb.conf.j2 b/ansible/roles/common/templates/conf/input/02-mariadb.conf.j2
index 3a8fe12d2..f5df2b455 100644
--- a/ansible/roles/common/templates/conf/input/02-mariadb.conf.j2
+++ b/ansible/roles/common/templates/conf/input/02-mariadb.conf.j2
@@ -5,7 +5,7 @@
path /var/log/kolla/mariadb/mariadb.log
pos_file /var/run/fluentd/mariadb.pos
tag infra.mariadb
- enable_watch_timer false
+ enable_watch_timer {{ fluentd_enable_watch_timer }}
<parse>
@type multiline
format_firstline /^(\d{4}-\d{2}-\d{2}|\d{6}) /
@@ -18,7 +18,7 @@
pos_file /var/run/fluentd/mariadb-xinetd.pos
tag infra.mariadb-xinetd
ignore_repeated_permission_error true
- enable_watch_timer false
+ enable_watch_timer {{ fluentd_enable_watch_timer }}
<parse>
@type multiline
format_firstline /^\d{2}/\d{1,2}/\d{1,2}@\d{1,2}:\d{1,2}:\d{1,2}\: (START|EXIT)\: /
diff --git a/ansible/roles/common/templates/conf/input/03-rabbitmq.conf.j2 b/ansible/roles/common/templates/conf/input/03-rabbitmq.conf.j2
index d6062d5b7..8cffc003d 100644
--- a/ansible/roles/common/templates/conf/input/03-rabbitmq.conf.j2
+++ b/ansible/roles/common/templates/conf/input/03-rabbitmq.conf.j2
@@ -3,7 +3,7 @@
path /var/log/kolla/rabbitmq/rabbit@{{ ansible_facts.hostname }}.log
pos_file /var/run/fluentd/rabbit.pos
tag infra.rabbit
- enable_watch_timer false
+ enable_watch_timer {{ fluentd_enable_watch_timer }}
<parse>
@type multiline
format_firstline /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}(\d+\+\d{2}:\d{2})?/
diff --git a/ansible/roles/common/templates/conf/input/04-openstack-wsgi.conf.j2 b/ansible/roles/common/templates/conf/input/04-openstack-wsgi.conf.j2
index 222b6ab07..20d408f12 100644
--- a/ansible/roles/common/templates/conf/input/04-openstack-wsgi.conf.j2
+++ b/ansible/roles/common/templates/conf/input/04-openstack-wsgi.conf.j2
@@ -4,7 +4,7 @@
path /var/log/kolla/*/*-access.log,/var/log/kolla/*/*-error.log,/var/log/kolla/*/*_access.log,/var/log/kolla/*/*_error.log
pos_file /var/run/fluentd/kolla-openstack-wsgi.pos
tag kolla.*
- enable_watch_timer false
+ enable_watch_timer {{ fluentd_enable_watch_timer }}
<parse>
@type regexp
expression /^(?<Payload>.*)$/
diff --git a/ansible/roles/common/templates/conf/input/05-libvirt.conf.j2 b/ansible/roles/common/templates/conf/input/05-libvirt.conf.j2
index 0633048ef..4765c9608 100644
--- a/ansible/roles/common/templates/conf/input/05-libvirt.conf.j2
+++ b/ansible/roles/common/templates/conf/input/05-libvirt.conf.j2
@@ -3,7 +3,7 @@
path /var/log/kolla/libvirt/libvirtd.log
pos_file /var/run/fluentd/libvirt.pos
tag infra.libvirt
- enable_watch_timer false
+ enable_watch_timer {{ fluentd_enable_watch_timer }}
<parse>
@type regexp
expression /^(?<Timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}\+\d{4}): (?<Pid>\d+): (?<log_level>\S+) : (?<Payload>.*)?$/
diff --git a/ansible/roles/common/templates/conf/input/10-openvswitch.conf.j2 b/ansible/roles/common/templates/conf/input/10-openvswitch.conf.j2
index e48721504..ffad69348 100644
--- a/ansible/roles/common/templates/conf/input/10-openvswitch.conf.j2
+++ b/ansible/roles/common/templates/conf/input/10-openvswitch.conf.j2
@@ -3,7 +3,7 @@
path /var/log/kolla/openvswitch/ovs-vswitchd.log
pos_file /var/run/fluentd/openvswitch.pos
tag infra.openvswitch
- enable_watch_timer false
+ enable_watch_timer {{ fluentd_enable_watch_timer }}
<parse>
@type multiline
format_firstline /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}/
@@ -18,7 +18,7 @@
path /var/log/kolla/openvswitch/ovsdb-server.log
pos_file /var/run/fluentd/openvswitchdb.pos
tag infra.openvswitchdb
- enable_watch_timer false
+ enable_watch_timer {{ fluentd_enable_watch_timer }}
<parse>
@type multiline
format_firstline /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}/
diff --git a/ansible/roles/cyborg/defaults/main.yml b/ansible/roles/cyborg/defaults/main.yml
index 5d9fb3853..c86b1249c 100644
--- a/ansible/roles/cyborg/defaults/main.yml
+++ b/ansible/roles/cyborg/defaults/main.yml
@@ -59,15 +59,15 @@ cyborg_database_shard:
####################
cyborg_tag: "{{ openstack_tag }}"
-cyborg_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/cyborg-api"
+cyborg_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cyborg-api"
cyborg_api_tag: "{{ cyborg_tag }}"
cyborg_api_image_full: "{{ cyborg_api_image }}:{{ cyborg_api_tag }}"
-cyborg_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/cyborg-agent"
+cyborg_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cyborg-agent"
cyborg_agent_tag: "{{ cyborg_tag }}"
cyborg_agent_image_full: "{{ cyborg_agent_image }}:{{ cyborg_agent_tag }}"
-cyborg_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/cyborg-conductor"
+cyborg_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cyborg-conductor"
cyborg_conductor_tag: "{{ cyborg_tag }}"
cyborg_conductor_image_full: "{{ cyborg_conductor_image }}:{{ cyborg_conductor_tag }}"
diff --git a/ansible/roles/cyborg/tasks/check-containers.yml b/ansible/roles/cyborg/tasks/check-containers.yml
index 9953f7b82..a7bcb4b97 100644
--- a/ansible/roles/cyborg/tasks/check-containers.yml
+++ b/ansible/roles/cyborg/tasks/check-containers.yml
@@ -10,9 +10,6 @@
volumes: "{{ item.value.volumes }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ cyborg_services }}"
+ with_dict: "{{ cyborg_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/cyborg/tasks/config.yml b/ansible/roles/cyborg/tasks/config.yml
index 61dcb68ec..863e12376 100644
--- a/ansible/roles/cyborg/tasks/config.yml
+++ b/ansible/roles/cyborg/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ cyborg_services }}"
+ with_dict: "{{ cyborg_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -39,9 +36,7 @@
become: true
when:
- cyborg_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ cyborg_services }}"
+ with_dict: "{{ cyborg_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -55,10 +50,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ cyborg_services }}"
+ with_dict: "{{ cyborg_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -75,10 +67,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/cyborg.conf"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ cyborg_services }}"
+ with_dict: "{{ cyborg_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -92,8 +81,6 @@
dest: "{{ node_config_directory }}/cyborg-api/api-paste.ini"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups['cyborg-api']
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart cyborg-api container
diff --git a/ansible/roles/cyborg/tasks/precheck.yml b/ansible/roles/cyborg/tasks/precheck.yml
index 819913a21..6211c5e24 100644
--- a/ansible/roles/cyborg/tasks/precheck.yml
+++ b/ansible/roles/cyborg/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- cyborg_api
diff --git a/ansible/roles/designate/defaults/main.yml b/ansible/roles/designate/defaults/main.yml
index ed66c8bab..a3a4661d3 100644
--- a/ansible/roles/designate/defaults/main.yml
+++ b/ansible/roles/designate/defaults/main.yml
@@ -104,31 +104,31 @@ designate_database_shard:
####################
designate_tag: "{{ openstack_tag }}"
-designate_central_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/designate-central"
+designate_central_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}designate-central"
designate_central_tag: "{{ designate_tag }}"
designate_central_image_full: "{{ designate_central_image }}:{{ designate_central_tag }}"
-designate_producer_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/designate-producer"
+designate_producer_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}designate-producer"
designate_producer_tag: "{{ designate_tag }}"
designate_producer_image_full: "{{ designate_producer_image }}:{{ designate_producer_tag }}"
-designate_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/designate-api"
+designate_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}designate-api"
designate_api_tag: "{{ designate_tag }}"
designate_api_image_full: "{{ designate_api_image }}:{{ designate_api_tag }}"
-designate_backend_bind9_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/designate-backend-bind9"
+designate_backend_bind9_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}designate-backend-bind9"
designate_backend_bind9_tag: "{{ designate_tag }}"
designate_backend_bind9_image_full: "{{ designate_backend_bind9_image }}:{{ designate_backend_bind9_tag }}"
-designate_mdns_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/designate-mdns"
+designate_mdns_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}designate-mdns"
designate_mdns_tag: "{{ designate_tag }}"
designate_mdns_image_full: "{{ designate_mdns_image }}:{{ designate_mdns_tag }}"
-designate_sink_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/designate-sink"
+designate_sink_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}designate-sink"
designate_sink_tag: "{{ designate_tag }}"
designate_sink_image_full: "{{ designate_sink_image }}:{{ designate_sink_tag }}"
-designate_worker_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/designate-worker"
+designate_worker_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}designate-worker"
designate_worker_tag: "{{ designate_tag }}"
designate_worker_image_full: "{{ designate_worker_image }}:{{ designate_worker_tag }}"
diff --git a/ansible/roles/designate/tasks/backend_external.yml b/ansible/roles/designate/tasks/backend_external.yml
index 06cf3af95..67a1990f8 100644
--- a/ansible/roles/designate/tasks/backend_external.yml
+++ b/ansible/roles/designate/tasks/backend_external.yml
@@ -8,9 +8,7 @@
when:
- designate_backend_external == 'bind9'
- item.key in [ "designate-worker" ]
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ designate_services }}"
+ with_dict: "{{ designate_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -23,8 +21,6 @@
when:
- designate_backend_external == 'bind9'
- item.key in [ "designate-worker" ]
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ designate_services }}"
+ 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 9edee6458..1dfe7ca1e 100644
--- a/ansible/roles/designate/tasks/check-containers.yml
+++ b/ansible/roles/designate/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ designate_services }}"
+ with_dict: "{{ designate_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/designate/tasks/config.yml b/ansible/roles/designate/tasks/config.yml
index 92a2d47fc..74ef7b55a 100644
--- a/ansible/roles/designate/tasks/config.yml
+++ b/ansible/roles/designate/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ designate_services }}"
+ with_dict: "{{ designate_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -41,10 +38,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ designate_services }}"
+ with_dict: "{{ designate_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -61,10 +55,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/designate.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ designate_services }}"
+ with_dict: "{{ designate_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -76,9 +67,7 @@
dest: "{{ node_config_directory }}/designate-worker/pools.yaml"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/designate/pools.yaml"
- "{{ role_path }}/templates/pools.yaml.j2"
@@ -95,8 +84,7 @@
become: true
when:
- designate_backend == 'bind9'
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/designate/designate-backend-bind9/{{ inventory_hostname }}/named.conf"
- "{{ node_custom_config }}/designate/designate-backend-bind9/named.conf"
@@ -114,9 +102,7 @@
when:
- designate_backend == 'bind9' and designate_backend_external == 'no'
- item.key in [ "designate-backend-bind9", "designate-worker" ]
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ designate_services }}"
+ with_dict: "{{ designate_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -129,9 +115,7 @@
when:
- designate_backend == 'bind9' and designate_backend_external == 'no'
- item.key in [ "designate-backend-bind9", "designate-worker" ]
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ designate_services }}"
+ with_dict: "{{ designate_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -146,8 +130,6 @@
become: true
when:
- designate_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ designate_services }}"
+ with_dict: "{{ designate_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/designate/tasks/precheck.yml b/ansible/roles/designate/tasks/precheck.yml
index d1b023c20..80337a3a1 100644
--- a/ansible/roles/designate/tasks/precheck.yml
+++ b/ansible/roles/designate/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- designate_api
diff --git a/ansible/roles/etcd/defaults/main.yml b/ansible/roles/etcd/defaults/main.yml
index 02b3d80d9..94a699f0e 100644
--- a/ansible/roles/etcd/defaults/main.yml
+++ b/ansible/roles/etcd/defaults/main.yml
@@ -57,7 +57,7 @@ etcd_bootstrap_cluster_environment:
####################
# Docker
####################
-etcd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/etcd"
+etcd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}etcd"
etcd_tag: "{{ openstack_tag }}"
etcd_image_full: "{{ etcd_image }}:{{ etcd_tag }}"
etcd_dimensions: "{{ default_container_dimensions }}"
diff --git a/ansible/roles/etcd/tasks/check-containers.yml b/ansible/roles/etcd/tasks/check-containers.yml
index 3a19a4a87..11e9b5434 100644
--- a/ansible/roles/etcd/tasks/check-containers.yml
+++ b/ansible/roles/etcd/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes }}"
dimensions: "{{ item.value.dimensions }}"
environment: "{{ item.value.environment }}"
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ etcd_services }}"
+ with_dict: "{{ etcd_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/etcd/tasks/config.yml b/ansible/roles/etcd/tasks/config.yml
index e3fc55540..cd780bad7 100644
--- a/ansible/roles/etcd/tasks/config.yml
+++ b/ansible/roles/etcd/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ etcd_services }}"
+ with_dict: "{{ etcd_services | select_services_enabled_and_mapped_to_host }}"
- name: Copying over config.json files for services
template:
@@ -18,10 +15,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ etcd_services }}"
+ with_dict: "{{ etcd_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/etcd/tasks/precheck.yml b/ansible/roles/etcd/tasks/precheck.yml
index 0a1cc78f4..131f4132b 100644
--- a/ansible/roles/etcd/tasks/precheck.yml
+++ b/ansible/roles/etcd/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- etcd
diff --git a/ansible/roles/glance/defaults/main.yml b/ansible/roles/glance/defaults/main.yml
index 3624772dd..87dceef0e 100644
--- a/ansible/roles/glance/defaults/main.yml
+++ b/ansible/roles/glance/defaults/main.yml
@@ -153,11 +153,11 @@ glance_backend_s3_secret_key: "{{ s3_secret_key }}"
haproxy_tag: "{{ openstack_tag }}"
glance_tag: "{{ openstack_tag }}"
-glance_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/glance-api"
+glance_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}glance-api"
glance_api_tag: "{{ glance_tag }}"
glance_api_image_full: "{{ glance_api_image }}:{{ glance_api_tag }}"
-glance_tls_proxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/haproxy"
+glance_tls_proxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}haproxy"
glance_tls_proxy_tag: "{{ haproxy_tag }}"
glance_tls_proxy_image_full: "{{ glance_tls_proxy_image }}:{{ glance_tls_proxy_tag }}"
diff --git a/ansible/roles/glance/tasks/check-containers.yml b/ansible/roles/glance/tasks/check-containers.yml
index 763ded863..641ba907f 100644
--- a/ansible/roles/glance/tasks/check-containers.yml
+++ b/ansible/roles/glance/tasks/check-containers.yml
@@ -11,9 +11,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - item.value.host_in_groups | bool
- - item.value.enabled | bool
- with_dict: "{{ glance_services }}"
+ with_dict: "{{ glance_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/glance/tasks/config.yml b/ansible/roles/glance/tasks/config.yml
index 702501d7a..f98aefc29 100644
--- a/ansible/roles/glance/tasks/config.yml
+++ b/ansible/roles/glance/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - item.value.host_in_groups | bool
- - item.value.enabled | bool
- with_dict: "{{ glance_services }}"
+ with_dict: "{{ glance_services | select_services_enabled_and_mapped_to_host }}"
- include_tasks: external_ceph.yml
when:
@@ -41,7 +38,7 @@
- name: Creating TLS backend PEM File
vars:
- glance_tls_proxy: "{{ glance_services['glance-tls-proxy'] }}"
+ service: "{{ glance_services['glance-tls-proxy'] }}"
assemble:
src: "{{ node_config_directory }}/glance-tls-proxy/"
dest: "{{ node_config_directory }}/glance-tls-proxy/glance-cert-and-key.pem"
@@ -49,9 +46,7 @@
regexp: "^glance-(cert|key)\\.pem$"
remote_src: true
become: true
- when:
- - glance_tls_proxy.enabled | bool
- - glance_tls_proxy.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
- name: Copying over config.json files for services
template:
@@ -59,16 +54,13 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- with_dict: "{{ glance_services }}"
+ with_dict: "{{ glance_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
- name: Copying over glance-api.conf
vars:
- glance_api: "{{ glance_services['glance-api'] }}"
+ service: "{{ glance_services['glance-api'] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/glance-api.conf.j2"
@@ -79,15 +71,13 @@
dest: "{{ node_config_directory }}/glance-api/glance-api.conf"
mode: "0660"
become: true
- when:
- - glance_api.enabled | bool
- - glance_api.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart glance-api container
- name: Copying over glance-cache.conf for glance_api
vars:
- glance_api: "{{ glance_services['glance-api'] }}"
+ service: "{{ glance_services['glance-api'] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/glance-cache.conf.j2"
@@ -98,15 +88,14 @@
mode: "0660"
become: true
when:
- - glance_api.enabled | bool
- - glance_api.host_in_groups | bool
+ - service | service_enabled_and_mapped_to_host
- enable_glance_image_cache | bool
notify:
- Restart glance-api container
- name: Copying over glance-swift.conf for glance_api
vars:
- glance_api: "{{ glance_services['glance-api'] }}"
+ service: "{{ glance_services['glance-api'] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/glance-swift.conf.j2"
@@ -117,45 +106,42 @@
mode: "0660"
become: true
when:
- - glance_api.enabled | bool
- - glance_api.host_in_groups | bool
+ - service | service_enabled_and_mapped_to_host
- glance_backend_swift | bool
notify:
- Restart glance-api container
- name: Copying over glance-image-import.conf
vars:
- glance_api: "{{ glance_services['glance-api'] }}"
+ service: "{{ glance_services['glance-api'] }}"
copy:
src: "{{ node_custom_config }}/glance/glance-image-import.conf"
dest: "{{ node_config_directory }}/glance-api/glance-image-import.conf"
mode: "0660"
become: true
when:
- - glance_api.enabled | bool
- - inventory_hostname in groups[glance_api.group]
+ - service | service_enabled_and_mapped_to_host
- glance_enable_interoperable_image_import | bool
notify:
- Restart glance-api container
- name: Copying over property-protections-rules.conf
vars:
- glance_api: "{{ glance_services['glance-api'] }}"
+ service: "{{ glance_services['glance-api'] }}"
copy:
src: "{{ node_custom_config }}/glance/property-protections-rules.conf"
dest: "{{ node_config_directory }}/glance-api/property-protections-rules.conf"
mode: "0660"
become: true
when:
- - glance_api.enabled | bool
- - inventory_hostname in groups[glance_api.group]
+ - service | service_enabled_and_mapped_to_host
- glance_enable_property_protection | bool
notify:
- Restart glance-api container
- name: Copying over existing policy file
vars:
- glance_api: "{{ glance_services['glance-api'] }}"
+ service: "{{ glance_services['glance-api'] }}"
template:
src: "{{ glance_policy_file_path }}"
dest: "{{ node_config_directory }}/glance-api/{{ glance_policy_file }}"
@@ -163,14 +149,13 @@
become: true
when:
- glance_policy_file is defined
- - glance_api.host_in_groups | bool
- - glance_api.enabled | bool
+ - service | service_enabled_and_mapped_to_host
notify:
- Restart glance-api container
- name: Copying over glance-haproxy-tls.cfg
vars:
- glance_tls_proxy: "{{ glance_services['glance-tls-proxy'] }}"
+ service: "{{ glance_services['glance-tls-proxy'] }}"
template:
src: "{{ item }}"
dest: "{{ node_config_directory }}/glance-tls-proxy/glance-tls-proxy.cfg"
@@ -180,8 +165,6 @@
- "{{ node_custom_config }}/glance/{{ inventory_hostname }}/glance-tls-proxy.cfg"
- "{{ node_custom_config }}/glance/glance-tls-proxy.cfg"
- "glance-tls-proxy.cfg.j2"
- when:
- - glance_tls_proxy.enabled | bool
- - glance_tls_proxy.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart glance-tls-proxy container
diff --git a/ansible/roles/glance/tasks/external_ceph.yml b/ansible/roles/glance/tasks/external_ceph.yml
index da0a35fe3..ad3587ec3 100644
--- a/ansible/roles/glance/tasks/external_ceph.yml
+++ b/ansible/roles/glance/tasks/external_ceph.yml
@@ -9,9 +9,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
- name: Copy over multiple ceph configs for Glance
merge_configs:
diff --git a/ansible/roles/glance/tasks/precheck.yml b/ansible/roles/glance/tasks/precheck.yml
index 362d62d90..09cff1e9e 100644
--- a/ansible/roles/glance/tasks/precheck.yml
+++ b/ansible/roles/glance/tasks/precheck.yml
@@ -8,12 +8,15 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name: "{{ glance_services.values() | map(attribute='container_name') | list }}"
check_mode: false
register: container_facts
- name: Checking free port for Glance API
+ vars:
+ service: "{{ glance_services['glance-api'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ glance_api_listen_port }}"
@@ -21,8 +24,7 @@
timeout: 1
state: stopped
when:
- - glance_services['glance-api'].host_in_groups | bool
- - glance_services['glance-api'].enabled | bool
+ - service | service_enabled_and_mapped_to_host
- container_facts['glance_api'] is not defined
- name: Check if S3 configurations are defined
diff --git a/ansible/roles/glance/tasks/stop_service.yml b/ansible/roles/glance/tasks/stop_service.yml
index ecce6c4f0..e45a49d2a 100644
--- a/ansible/roles/glance/tasks/stop_service.yml
+++ b/ansible/roles/glance/tasks/stop_service.yml
@@ -1,12 +1,10 @@
---
- name: Stop glance service
vars:
- glance_api: "{{ glance_services['glance-api'] }}"
+ service: "{{ glance_services['glance-api'] }}"
become: true
kolla_container:
action: "stop_container"
common_options: "{{ docker_common_options }}"
- name: "{{ glance_api.container_name }}"
- when:
- - glance_api.host_in_groups | bool
- - glance_api.enabled | bool
+ name: "{{ service.container_name }}"
+ when: service | service_enabled_and_mapped_to_host
diff --git a/ansible/roles/gnocchi/defaults/main.yml b/ansible/roles/gnocchi/defaults/main.yml
index 2cadd4073..a19ad66f9 100644
--- a/ansible/roles/gnocchi/defaults/main.yml
+++ b/ansible/roles/gnocchi/defaults/main.yml
@@ -79,15 +79,15 @@ gnocchi_database_shard:
####################
gnocchi_tag: "{{ openstack_tag }}"
-gnocchi_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/gnocchi-api"
+gnocchi_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}gnocchi-api"
gnocchi_api_tag: "{{ gnocchi_tag }}"
gnocchi_api_image_full: "{{ gnocchi_api_image }}:{{ gnocchi_api_tag }}"
-gnocchi_statsd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/gnocchi-statsd"
+gnocchi_statsd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}gnocchi-statsd"
gnocchi_statsd_tag: "{{ gnocchi_tag }}"
gnocchi_statsd_image_full: "{{ gnocchi_statsd_image }}:{{ gnocchi_statsd_tag }}"
-gnocchi_metricd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/gnocchi-metricd"
+gnocchi_metricd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}gnocchi-metricd"
gnocchi_metricd_tag: "{{ gnocchi_tag }}"
gnocchi_metricd_image_full: "{{ gnocchi_metricd_image }}:{{ gnocchi_metricd_tag }}"
diff --git a/ansible/roles/gnocchi/tasks/check-containers.yml b/ansible/roles/gnocchi/tasks/check-containers.yml
index 4e9820408..4369977f2 100644
--- a/ansible/roles/gnocchi/tasks/check-containers.yml
+++ b/ansible/roles/gnocchi/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ gnocchi_services }}"
+ with_dict: "{{ gnocchi_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/gnocchi/tasks/config.yml b/ansible/roles/gnocchi/tasks/config.yml
index 98448789f..48a0521eb 100644
--- a/ansible/roles/gnocchi/tasks/config.yml
+++ b/ansible/roles/gnocchi/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ gnocchi_services }}"
+ with_dict: "{{ gnocchi_services | select_services_enabled_and_mapped_to_host }}"
- include_tasks: external_ceph.yml
when:
@@ -45,10 +42,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ gnocchi_services }}"
+ with_dict: "{{ gnocchi_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -65,10 +59,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/gnocchi.conf"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ gnocchi_services }}"
+ with_dict: "{{ gnocchi_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -80,9 +71,7 @@
dest: "{{ node_config_directory }}/{{ item }}/wsgi-gnocchi.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups['gnocchi-api']
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_items:
- "gnocchi-api"
notify:
@@ -96,8 +85,6 @@
become: true
when:
- gnocchi_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ gnocchi_services }}"
+ with_dict: "{{ gnocchi_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/gnocchi/tasks/external_ceph.yml b/ansible/roles/gnocchi/tasks/external_ceph.yml
index 14d6948a7..6f01494e7 100644
--- a/ansible/roles/gnocchi/tasks/external_ceph.yml
+++ b/ansible/roles/gnocchi/tasks/external_ceph.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- with_dict: "{{ gnocchi_services }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
+ with_dict: "{{ gnocchi_services | select_services_enabled_and_mapped_to_host }}"
- name: Copy over ceph config for Gnocchi
merge_configs:
@@ -20,10 +17,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/ceph/{{ gnocchi_ceph_cluster }}.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ gnocchi_services }}"
+ with_dict: "{{ gnocchi_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -33,10 +27,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/ceph/{{ gnocchi_ceph_cluster }}.{{ ceph_gnocchi_keyring }}"
mode: "0660"
become: true
- with_dict: "{{ gnocchi_services }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
+ with_dict: "{{ gnocchi_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -47,7 +38,4 @@
recurse: yes
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ gnocchi_services }}"
+ with_dict: "{{ gnocchi_services | select_services_enabled_and_mapped_to_host }}"
diff --git a/ansible/roles/gnocchi/tasks/precheck.yml b/ansible/roles/gnocchi/tasks/precheck.yml
index 95d41e8ef..f0ecf557c 100644
--- a/ansible/roles/gnocchi/tasks/precheck.yml
+++ b/ansible/roles/gnocchi/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- gnocchi_api
diff --git a/ansible/roles/grafana/defaults/main.yml b/ansible/roles/grafana/defaults/main.yml
index eae1f03fb..cce9562fe 100644
--- a/ansible/roles/grafana/defaults/main.yml
+++ b/ansible/roles/grafana/defaults/main.yml
@@ -74,7 +74,7 @@ grafana_data_sources:
##########
# Grafana
##########
-grafana_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/grafana"
+grafana_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}grafana"
grafana_tag: "{{ openstack_tag }}"
grafana_image_full: "{{ grafana_image }}:{{ grafana_tag }}"
grafana_admin_username: "admin"
diff --git a/ansible/roles/grafana/tasks/check-containers.yml b/ansible/roles/grafana/tasks/check-containers.yml
index 8f2ede7cc..4c24c3b50 100644
--- a/ansible/roles/grafana/tasks/check-containers.yml
+++ b/ansible/roles/grafana/tasks/check-containers.yml
@@ -8,9 +8,6 @@
image: "{{ item.value.image }}"
volumes: "{{ item.value.volumes }}"
dimensions: "{{ item.value.dimensions }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ grafana_services }}"
+ with_dict: "{{ grafana_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/grafana/tasks/config.yml b/ansible/roles/grafana/tasks/config.yml
index cc12d874a..ef88e83cd 100644
--- a/ansible/roles/grafana/tasks/config.yml
+++ b/ansible/roles/grafana/tasks/config.yml
@@ -7,14 +7,14 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ grafana_services }}"
+ with_dict: "{{ grafana_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if extra configuration file exists
find:
path: "{{ node_custom_config }}/grafana/"
+ excludes:
+ - "prometheus.yaml"
+ - "provisioning.yaml"
delegate_to: localhost
changed_when: False
run_once: True
@@ -30,10 +30,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ grafana_services }}"
+ with_dict: "{{ grafana_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -48,10 +45,7 @@
dest: "{{ node_config_directory }}/grafana/grafana.ini"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ grafana_services }}"
+ with_dict: "{{ grafana_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -68,23 +62,6 @@
notify:
- Restart grafana container
-- name: Check if custom grafana home dashboard exists
- stat:
- path: "{{ node_custom_config }}/grafana/grafana_home_dashboard.json"
- delegate_to: localhost
- register: grafana_custom_dashboard_file
- run_once: True
-
-- name: Copying over grafana home dashboard if exists
- become: true
- template:
- src: "{{ node_custom_config }}/grafana/grafana_home_dashboard.json"
- dest: "{{ node_config_directory }}/grafana/grafana_home_dashboard.json"
- mode: "0660"
- when: grafana_custom_dashboard_file.stat.exists
- notify:
- - Restart grafana container
-
- name: Configuring Prometheus as data source for Grafana
vars:
service: "{{ grafana_services['grafana'] }}"
@@ -94,8 +71,7 @@
mode: "0660"
become: true
when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- enable_prometheus | bool
with_first_found:
- "{{ node_custom_config }}/grafana/{{ inventory_hostname }}/prometheus.yaml"
@@ -112,9 +88,7 @@
dest: "{{ node_config_directory }}/grafana/provisioning.yaml"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/grafana/{{ inventory_hostname }}/provisioning.yaml"
- "{{ node_custom_config }}/grafana/provisioning.yaml"
@@ -136,9 +110,7 @@
file:
state: absent
path: "{{ node_config_directory }}/grafana/dashboards/"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
- name: Copying over custom dashboards
vars:
@@ -151,7 +123,6 @@
when:
- grafana_custom_dashboards_folder.stat.exists
- grafana_custom_dashboards_folder.stat.isdir
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
notify:
- Restart grafana container
diff --git a/ansible/roles/grafana/tasks/post_config.yml b/ansible/roles/grafana/tasks/post_config.yml
index 82993cecf..97a9bc818 100644
--- a/ansible/roles/grafana/tasks/post_config.yml
+++ b/ansible/roles/grafana/tasks/post_config.yml
@@ -57,4 +57,4 @@
register: grafana_response
changed_when: grafana_response.status == 200
run_once: true
- when: grafana_custom_dashboard_file.stat.exists
+ when: "'grafana_home_dashboard.json' in check_extra_conf_grafana.files | map(attribute='path') | map('basename')"
diff --git a/ansible/roles/grafana/tasks/precheck.yml b/ansible/roles/grafana/tasks/precheck.yml
index 78f1b048f..a95701c49 100644
--- a/ansible/roles/grafana/tasks/precheck.yml
+++ b/ansible/roles/grafana/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- grafana
diff --git a/ansible/roles/grafana/templates/grafana.json.j2 b/ansible/roles/grafana/templates/grafana.json.j2
index fcc3cc34b..e685eacd5 100644
--- a/ansible/roles/grafana/templates/grafana.json.j2
+++ b/ansible/roles/grafana/templates/grafana.json.j2
@@ -7,21 +7,22 @@
"owner": "grafana",
"perm": "0600"
},
-{% if check_extra_conf_grafana is defined %}{% if check_extra_conf_grafana.matched > 0 %}{% for plugin in check_extra_conf_grafana.files %}
+{% if check_extra_conf_grafana is defined %}
+{% for extra_conf in check_extra_conf_grafana.files | map(attribute='path') | map('basename') %}
{
- "source": "{{ container_config_directory }}/{{ plugin.path | basename }}",
- "dest": "/etc/grafana/{{ plugin.path | basename }}",
- "owner": "grafana",
- "perm": "0600"
- },
-{% endfor %}{% endif %}{% endif %}
- {
- "source": "{{ container_config_directory }}/grafana_home_dashboard.json",
+ "source": "{{ container_config_directory }}/{{ extra_conf }}",
+{% if extra_conf == 'grafana_home_dashboard.json' %}
"dest": "/usr/share/grafana/public/dashboards/home.json",
"owner": "root",
- "perm": "0644",
- "optional": true
+ "perm": "0644"
+{% else %}
+ "dest": "/etc/grafana/{{ extra_conf }}",
+ "owner": "grafana",
+ "perm": "0600"
+{% endif %}
},
+{% endfor %}
+{% endif %}
{
"source": "{{ container_config_directory }}/prometheus.yaml",
"dest": "/etc/grafana/provisioning/datasources/prometheus.yaml",
diff --git a/ansible/roles/hacluster/defaults/main.yml b/ansible/roles/hacluster/defaults/main.yml
index 24867af31..2619eccf9 100644
--- a/ansible/roles/hacluster/defaults/main.yml
+++ b/ansible/roles/hacluster/defaults/main.yml
@@ -42,15 +42,15 @@ hacluster_services:
####################
hacluster_tag: "{{ openstack_tag }}"
-hacluster_corosync_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/hacluster-corosync"
+hacluster_corosync_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}hacluster-corosync"
hacluster_corosync_tag: "{{ openstack_tag }}"
hacluster_corosync_image_full: "{{ hacluster_corosync_image }}:{{ hacluster_corosync_tag }}"
-hacluster_pacemaker_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/hacluster-pacemaker"
+hacluster_pacemaker_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}hacluster-pacemaker"
hacluster_pacemaker_tag: "{{ openstack_tag }}"
hacluster_pacemaker_image_full: "{{ hacluster_pacemaker_image }}:{{ hacluster_pacemaker_tag }}"
-hacluster_pacemaker_remote_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/hacluster-pacemaker-remote"
+hacluster_pacemaker_remote_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}hacluster-pacemaker-remote"
hacluster_pacemaker_remote_tag: "{{ openstack_tag }}"
hacluster_pacemaker_remote_image_full: "{{ hacluster_pacemaker_remote_image }}:{{ hacluster_pacemaker_remote_tag }}"
diff --git a/ansible/roles/hacluster/tasks/bootstrap_service.yml b/ansible/roles/hacluster/tasks/bootstrap_service.yml
index 3669143f2..40f0507dd 100644
--- a/ansible/roles/hacluster/tasks/bootstrap_service.yml
+++ b/ansible/roles/hacluster/tasks/bootstrap_service.yml
@@ -10,7 +10,7 @@
- name: Ensure remote node is added
vars:
pacemaker_service: "{{ hacluster_services['hacluster-pacemaker'] }}"
- pacemaker_remote_service: "{{ hacluster_services['hacluster-pacemaker-remote'] }}"
+ service: "{{ hacluster_services['hacluster-pacemaker-remote'] }}"
shell: >
{{ kolla_container_engine }} exec {{ pacemaker_service.container_name }}
cibadmin --modify --scope resources -X '
@@ -27,6 +27,4 @@
'
become: true
delegate_to: "{{ groups[pacemaker_service.group][0] }}"
- when:
- - inventory_hostname in groups[pacemaker_remote_service.group]
- - pacemaker_remote_service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
diff --git a/ansible/roles/hacluster/tasks/config.yml b/ansible/roles/hacluster/tasks/config.yml
index 1380e6618..e33f7cf48 100644
--- a/ansible/roles/hacluster/tasks/config.yml
+++ b/ansible/roles/hacluster/tasks/config.yml
@@ -7,10 +7,7 @@
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
mode: "0770"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ hacluster_services }}"
+ with_dict: "{{ hacluster_services | select_services_enabled_and_mapped_to_host }}"
- name: Copying over config.json files for services
become: true
@@ -19,10 +16,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
register: config_jsons
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ hacluster_services }}"
+ with_dict: "{{ hacluster_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -34,9 +28,7 @@
dest: "{{ node_config_directory }}/hacluster-corosync/corosync.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/hacluster-corosync/{{ inventory_hostname }}/corosync.conf"
- "{{ node_custom_config }}/hacluster-corosync/corosync.conf"
@@ -52,9 +44,7 @@
dest: "{{ node_config_directory }}/hacluster-corosync/authkey"
mode: "0600"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/hacluster-corosync/{{ inventory_hostname }}/authkey"
- "{{ node_custom_config }}/hacluster-corosync/authkey"
@@ -69,9 +59,7 @@
dest: "{{ node_config_directory }}//hacluster-pacemaker/authkey"
mode: "0600"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/hacluster-pacemaker/{{ inventory_hostname }}/authkey"
- "{{ node_custom_config }}/hacluster-pacemaker/authkey"
@@ -86,9 +74,7 @@
dest: "{{ node_config_directory }}/hacluster-pacemaker-remote/authkey"
mode: "0600"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/hacluster-pacemaker/{{ inventory_hostname }}/authkey"
- "{{ node_custom_config }}/hacluster-pacemaker/authkey"
diff --git a/ansible/roles/hacluster/tasks/precheck.yml b/ansible/roles/hacluster/tasks/precheck.yml
index c77f7c78b..80391d046 100644
--- a/ansible/roles/hacluster/tasks/precheck.yml
+++ b/ansible/roles/hacluster/tasks/precheck.yml
@@ -2,6 +2,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- hacluster_pacemaker_remote
diff --git a/ansible/roles/haproxy-config/tasks/main.yml b/ansible/roles/haproxy-config/tasks/main.yml
index 94edd79f5..1e3f293ad 100644
--- a/ansible/roles/haproxy-config/tasks/main.yml
+++ b/ansible/roles/haproxy-config/tasks/main.yml
@@ -54,8 +54,9 @@
- name: "Configuring firewall for {{ project_name }}"
firewalld:
- offline: "yes"
- permanent: "yes"
+ immediate: true
+ offline: true
+ permanent: true
port: "{{ item.value.port }}/tcp"
state: "enabled"
zone: "{{ external_api_firewalld_zone }}"
@@ -68,5 +69,3 @@
- enable_external_api_firewalld | bool
- kolla_action != "config"
with_dict: "{{ project_services | extract_haproxy_services }}"
- notify:
- - "Reload firewalld"
diff --git a/ansible/roles/heat/defaults/main.yml b/ansible/roles/heat/defaults/main.yml
index 6f230c815..8ba1cb8ca 100644
--- a/ansible/roles/heat/defaults/main.yml
+++ b/ansible/roles/heat/defaults/main.yml
@@ -90,15 +90,15 @@ heat_database_shard:
####################
heat_tag: "{{ openstack_tag }}"
-heat_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/heat-api"
+heat_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}heat-api"
heat_api_tag: "{{ heat_tag }}"
heat_api_image_full: "{{ heat_api_image }}:{{ heat_api_tag }}"
-heat_api_cfn_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/heat-api-cfn"
+heat_api_cfn_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}heat-api-cfn"
heat_api_cfn_tag: "{{ heat_tag }}"
heat_api_cfn_image_full: "{{ heat_api_cfn_image }}:{{ heat_api_cfn_tag }}"
-heat_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/heat-engine"
+heat_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}heat-engine"
heat_engine_tag: "{{ heat_tag }}"
heat_engine_image_full: "{{ heat_engine_image }}:{{ heat_engine_tag }}"
diff --git a/ansible/roles/heat/tasks/check-containers.yml b/ansible/roles/heat/tasks/check-containers.yml
index fbe52d9b4..9ac2c53f4 100644
--- a/ansible/roles/heat/tasks/check-containers.yml
+++ b/ansible/roles/heat/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ heat_services }}"
+ with_dict: "{{ heat_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/heat/tasks/config.yml b/ansible/roles/heat/tasks/config.yml
index 37e653915..ec7226a7d 100644
--- a/ansible/roles/heat/tasks/config.yml
+++ b/ansible/roles/heat/tasks/config.yml
@@ -7,10 +7,7 @@
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
mode: "0770"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ heat_services }}"
+ with_dict: "{{ heat_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -41,10 +38,7 @@
src: "{{ item.key }}.json.j2"
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ heat_services }}"
+ with_dict: "{{ heat_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -61,10 +55,7 @@
- "{{ node_custom_config }}/heat/{{ inventory_hostname }}/heat.conf"
dest: "{{ node_config_directory }}/{{ item.key }}/heat.conf"
mode: "0660"
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ heat_services }}"
+ with_dict: "{{ heat_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -76,9 +67,7 @@
mode: "0660"
when:
- heat_policy_file is defined
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ heat_services }}"
+ with_dict: "{{ heat_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -90,9 +79,7 @@
dest: "{{ node_config_directory }}/heat-api/wsgi-heat-api.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service['group']]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart heat-api container
@@ -104,8 +91,6 @@
dest: "{{ node_config_directory }}/heat-api-cfn/wsgi-heat-api-cfn.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service['group']]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart heat-api-cfn container
diff --git a/ansible/roles/heat/tasks/precheck.yml b/ansible/roles/heat/tasks/precheck.yml
index 48b4059e5..d10ba4ae7 100644
--- a/ansible/roles/heat/tasks/precheck.yml
+++ b/ansible/roles/heat/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- heat_api
diff --git a/ansible/roles/horizon/defaults/main.yml b/ansible/roles/horizon/defaults/main.yml
index 04bf1763a..b274697f9 100644
--- a/ansible/roles/horizon/defaults/main.yml
+++ b/ansible/roles/horizon/defaults/main.yml
@@ -101,7 +101,7 @@ horizon_database_shard:
####################
# Docker
####################
-horizon_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/horizon"
+horizon_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}horizon"
horizon_tag: "{{ openstack_tag }}"
horizon_image_full: "{{ horizon_image }}:{{ horizon_tag }}"
diff --git a/ansible/roles/horizon/tasks/check-containers.yml b/ansible/roles/horizon/tasks/check-containers.yml
index e956f3560..b7e38d8f5 100644
--- a/ansible/roles/horizon/tasks/check-containers.yml
+++ b/ansible/roles/horizon/tasks/check-containers.yml
@@ -1,20 +1,15 @@
---
- name: Deploy horizon container
- vars:
- horizon: "{{ horizon_services['horizon'] }}"
become: true
kolla_container:
action: "compare_container"
common_options: "{{ docker_common_options }}"
- name: "{{ horizon.container_name }}"
- image: "{{ horizon.image }}"
- environment: "{{ horizon.environment }}"
- volumes: "{{ horizon.volumes }}"
- dimensions: "{{ horizon.dimensions }}"
- healthcheck: "{{ horizon.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[horizon.group]
- - horizon.enabled | bool
- with_dict: "{{ horizon_services }}"
+ 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"
diff --git a/ansible/roles/horizon/tasks/config.yml b/ansible/roles/horizon/tasks/config.yml
index 912c078ff..836b1aabb 100644
--- a/ansible/roles/horizon/tasks/config.yml
+++ b/ansible/roles/horizon/tasks/config.yml
@@ -7,10 +7,7 @@
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
mode: "0770"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ horizon_services }}"
+ with_dict: "{{ horizon_services | select_services_enabled_and_mapped_to_host }}"
- name: Set empty custom policy
set_fact:
@@ -43,21 +40,19 @@
- name: Copying over config.json files for services
become: true
vars:
- horizon: "{{ horizon_services['horizon'] }}"
+ service: "{{ horizon_services['horizon'] }}"
template:
src: "horizon.json.j2"
dest: "{{ node_config_directory }}/horizon/config.json"
mode: "0660"
- when:
- - horizon.enabled | bool
- - inventory_hostname in groups[horizon.group]
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart horizon container
- name: Copying over horizon.conf
become: true
vars:
- horizon: "{{ horizon_services['horizon'] }}"
+ service: "{{ horizon_services['horizon'] }}"
template:
src: "{{ item }}"
dest: "{{ node_config_directory }}/horizon/horizon.conf"
@@ -66,16 +61,14 @@
- "{{ node_custom_config }}/horizon/{{ inventory_hostname }}/horizon.conf"
- "{{ node_custom_config }}/horizon/horizon.conf"
- "horizon.conf.j2"
- when:
- - horizon.enabled | bool
- - inventory_hostname in groups[horizon.group]
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart horizon container
- name: Copying over kolla-settings.py
become: true
vars:
- horizon: "{{ horizon_services['horizon'] }}"
+ service: "{{ horizon_services['horizon'] }}"
template:
src: "{{ item }}"
dest: "{{ node_config_directory }}/horizon/_9998-kolla-settings.py"
@@ -84,16 +77,14 @@
- "{{ node_custom_config }}/horizon/{{ inventory_hostname }}/_9998-kolla-settings.py"
- "{{ node_custom_config }}/horizon/_9998-kolla-settings.py"
- "_9998-kolla-settings.py.j2"
- when:
- - horizon.enabled | bool
- - inventory_hostname in groups[horizon.group]
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart horizon container
- name: Copying over custom-settings.py
become: true
vars:
- horizon: "{{ horizon_services['horizon'] }}"
+ service: "{{ horizon_services['horizon'] }}"
template:
src: "{{ item }}"
dest: "{{ node_config_directory }}/horizon/_9999-custom-settings.py"
@@ -102,23 +93,19 @@
- "{{ node_custom_config }}/horizon/{{ inventory_hostname }}/_9999-custom-settings.py"
- "{{ node_custom_config }}/horizon/_9999-custom-settings.py"
- "_9999-custom-settings.py.j2"
- when:
- - horizon.enabled | bool
- - inventory_hostname in groups[horizon.group]
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart horizon container
- name: Copying over existing policy file
become: true
vars:
- horizon: "{{ horizon_services['horizon'] }}"
+ service: "{{ horizon_services['horizon'] }}"
template:
src: "{{ item }}"
dest: "{{ node_config_directory }}/horizon/{{ item | basename }}"
mode: "0660"
- when:
- - horizon.enabled | bool
- - inventory_hostname in groups[horizon.group]
+ when: service | service_enabled_and_mapped_to_host
with_items: "{{ custom_policy }}"
notify:
- Restart horizon container
@@ -126,14 +113,13 @@
- name: Copying over custom themes
become: true
vars:
- horizon: "{{ horizon_services['horizon'] }}"
+ service: "{{ horizon_services['horizon'] }}"
copy:
src: "{{ node_custom_config }}/horizon/themes/{{ item.name }}"
dest: "{{ node_config_directory }}/horizon/themes/"
mode: 0660
when:
- - horizon.enabled | bool
- - inventory_hostname in groups[horizon.group]
+ - service | service_enabled_and_mapped_to_host
- horizon_custom_themes | length > 0
with_items: "{{ horizon_custom_themes }}"
notify:
diff --git a/ansible/roles/horizon/tasks/precheck.yml b/ansible/roles/horizon/tasks/precheck.yml
index 97b8b7ddf..29fe38a96 100644
--- a/ansible/roles/horizon/tasks/precheck.yml
+++ b/ansible/roles/horizon/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- horizon
diff --git a/ansible/roles/horizon/templates/_9998-kolla-settings.py.j2 b/ansible/roles/horizon/templates/_9998-kolla-settings.py.j2
index 71a46acf1..a15d49004 100644
--- a/ansible/roles/horizon/templates/_9998-kolla-settings.py.j2
+++ b/ansible/roles/horizon/templates/_9998-kolla-settings.py.j2
@@ -53,7 +53,8 @@ AVAILABLE_REGIONS = [
{% endif %}
OPENSTACK_HOST = "{{ kolla_internal_fqdn }}"
-OPENSTACK_KEYSTONE_URL = "{{ horizon_keystone_url }}"
+# TODO(fprzewozn): URL /v3 suffix is required until Horizon bug #2073639 is resolved
+OPENSTACK_KEYSTONE_URL = "{{ horizon_keystone_url }}/v3"
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "{{ keystone_default_user_role }}"
{% if enable_keystone_federation | bool %}
diff --git a/ansible/roles/influxdb/defaults/main.yml b/ansible/roles/influxdb/defaults/main.yml
index 1f392317e..c384e87cf 100644
--- a/ansible/roles/influxdb/defaults/main.yml
+++ b/ansible/roles/influxdb/defaults/main.yml
@@ -26,7 +26,7 @@ influxdb_enable_tsi: True
####################
# Docker
####################
-influxdb_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/influxdb"
+influxdb_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}influxdb"
influxdb_tag: "{{ openstack_tag }}"
influxdb_image_full: "{{ influxdb_image }}:{{ influxdb_tag }}"
influxdb_dimensions: "{{ default_container_dimensions }}"
diff --git a/ansible/roles/influxdb/tasks/check-containers.yml b/ansible/roles/influxdb/tasks/check-containers.yml
index 0036fd640..ac1408971 100644
--- a/ansible/roles/influxdb/tasks/check-containers.yml
+++ b/ansible/roles/influxdb/tasks/check-containers.yml
@@ -8,9 +8,6 @@
image: "{{ item.value.image }}"
volumes: "{{ item.value.volumes }}"
dimensions: "{{ item.value.dimensions }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ influxdb_services }}"
+ with_dict: "{{ influxdb_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/influxdb/tasks/config.yml b/ansible/roles/influxdb/tasks/config.yml
index 841e7aeb7..48c168de5 100644
--- a/ansible/roles/influxdb/tasks/config.yml
+++ b/ansible/roles/influxdb/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ influxdb_services }}"
+ with_dict: "{{ influxdb_services | select_services_enabled_and_mapped_to_host }}"
- name: Copying over config.json files
template:
@@ -18,10 +15,7 @@
dest: "{{ node_config_directory }}/influxdb/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ influxdb_services }}"
+ with_dict: "{{ influxdb_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart influxdb container
@@ -33,9 +27,7 @@
dest: "{{ node_config_directory }}/influxdb/influxdb.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/influxdb/{{ inventory_hostname }}/influxdb.conf"
- "{{ node_custom_config }}/influxdb.conf"
diff --git a/ansible/roles/influxdb/tasks/precheck.yml b/ansible/roles/influxdb/tasks/precheck.yml
index b754b2af3..4629ccc76 100644
--- a/ansible/roles/influxdb/tasks/precheck.yml
+++ b/ansible/roles/influxdb/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- influxdb
diff --git a/ansible/roles/ironic/defaults/main.yml b/ansible/roles/ironic/defaults/main.yml
index fa721dbac..fdc196661 100644
--- a/ansible/roles/ironic/defaults/main.yml
+++ b/ansible/roles/ironic/defaults/main.yml
@@ -133,27 +133,27 @@ ironic_database_shard:
####################
ironic_tag: "{{ openstack_tag }}"
-ironic_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ironic-api"
+ironic_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ironic-api"
ironic_api_tag: "{{ ironic_tag }}"
ironic_api_image_full: "{{ ironic_api_image }}:{{ ironic_api_tag }}"
-ironic_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ironic-conductor"
+ironic_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ironic-conductor"
ironic_conductor_tag: "{{ ironic_tag }}"
ironic_conductor_image_full: "{{ ironic_conductor_image }}:{{ ironic_conductor_tag }}"
-ironic_pxe_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ironic-pxe"
+ironic_pxe_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ironic-pxe"
ironic_pxe_tag: "{{ ironic_tag }}"
ironic_pxe_image_full: "{{ ironic_pxe_image }}:{{ ironic_pxe_tag }}"
-ironic_inspector_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ironic-inspector"
+ironic_inspector_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ironic-inspector"
ironic_inspector_tag: "{{ ironic_tag }}"
ironic_inspector_image_full: "{{ ironic_inspector_image }}:{{ ironic_inspector_tag }}"
-ironic_dnsmasq_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/dnsmasq"
+ironic_dnsmasq_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}dnsmasq"
ironic_dnsmasq_tag: "{{ ironic_tag }}"
ironic_dnsmasq_image_full: "{{ ironic_dnsmasq_image }}:{{ ironic_dnsmasq_tag }}"
-ironic_prometheus_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ironic-prometheus-exporter"
+ironic_prometheus_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ironic-prometheus-exporter"
ironic_prometheus_exporter_tag: "{{ ironic_tag }}"
ironic_prometheus_exporter_image_full: "{{ ironic_prometheus_exporter_image }}:{{ ironic_prometheus_exporter_tag }}"
diff --git a/ansible/roles/ironic/tasks/bootstrap_service.yml b/ansible/roles/ironic/tasks/bootstrap_service.yml
index c798c833f..bb8a4e5e6 100644
--- a/ansible/roles/ironic/tasks/bootstrap_service.yml
+++ b/ansible/roles/ironic/tasks/bootstrap_service.yml
@@ -47,7 +47,7 @@
- name: Running ironic-tftp bootstrap container
vars:
- ironic_tftp: "{{ ironic_services['ironic-tftp'] }}"
+ service: "{{ ironic_services['ironic-tftp'] }}"
become: true
kolla_container:
action: "start_container"
@@ -58,12 +58,10 @@
HTTPBOOT_PATH: /var/lib/ironic/httpboot
KOLLA_BOOTSTRAP:
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
- image: "{{ ironic_tftp.image }}"
+ image: "{{ service.image }}"
labels:
BOOTSTRAP:
name: "bootstrap_ironic_tftp"
restart_policy: oneshot
- volumes: "{{ ironic_tftp.volumes }}"
- when:
- - inventory_hostname in groups[ironic_tftp.group]
- - ironic_tftp.enabled | bool
+ volumes: "{{ service.volumes }}"
+ when: service | service_enabled_and_mapped_to_host
diff --git a/ansible/roles/ironic/tasks/check-containers.yml b/ansible/roles/ironic/tasks/check-containers.yml
index 8bba5411f..7ee5e7771 100644
--- a/ansible/roles/ironic/tasks/check-containers.yml
+++ b/ansible/roles/ironic/tasks/check-containers.yml
@@ -12,9 +12,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ironic_services }}"
+ with_dict: "{{ ironic_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/ironic/tasks/config.yml b/ansible/roles/ironic/tasks/config.yml
index c17f2c335..dc4cb4469 100644
--- a/ansible/roles/ironic/tasks/config.yml
+++ b/ansible/roles/ironic/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ironic_services }}"
+ with_dict: "{{ ironic_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if Ironic policies shall be overwritten
stat:
@@ -60,10 +57,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ironic_services }}"
+ with_dict: "{{ ironic_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -82,9 +76,7 @@
become: true
when:
- item.key in [ "ironic-api", "ironic-conductor", "ironic-prometheus-exporter" ]
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ironic_services }}"
+ with_dict: "{{ ironic_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -101,9 +93,7 @@
dest: "{{ node_config_directory }}/ironic-inspector/inspector.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart ironic-inspector container
@@ -115,9 +105,7 @@
dest: "{{ node_config_directory }}/ironic-dnsmasq/dnsmasq.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/ironic/ironic-dnsmasq.conf"
- "{{ node_custom_config }}/ironic/{{ inventory_hostname }}/ironic-dnsmasq.conf"
@@ -140,8 +128,7 @@
when:
# Only required when Ironic inspector is in use.
- groups['ironic-inspector'] | length > 0
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- not ironic_dnsmasq_serve_ipxe | bool
notify:
- Restart ironic-tftp container
@@ -160,8 +147,7 @@
when:
# Only required when Ironic inspector is in use.
- groups['ironic-inspector'] | length > 0
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- not ironic_dnsmasq_serve_ipxe | bool
notify:
- Restart ironic-tftp container
@@ -180,8 +166,7 @@
when:
# Only required when Ironic inspector is in use.
- groups['ironic-inspector'] | length > 0
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
notify:
- Restart ironic-http container
@@ -200,8 +185,7 @@
when:
# Only required when Ironic inspector is in use.
- groups['ironic-inspector'] | length > 0
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
notify:
- Restart ironic-http container
@@ -216,9 +200,7 @@
with_first_found:
- "{{ node_custom_config }}/ironic/ironic-http-httpd.conf"
- "ironic-http-httpd.conf.j2"
- when:
- - service.enabled | bool
- - inventory_hostname in groups[service.group]
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart ironic-http container
@@ -234,9 +216,7 @@
- "{{ node_config_directory }}/ironic/{{ inventory_hostname }}/ironic-prometheus-exporter-wsgi.conf"
- "{{ node_config_directory }}/ironic/ironic-prometheus-exporter-wsgi.conf"
- "ironic-prometheus-exporter-wsgi.conf.j2"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart ironic-prometheus-exporter container"
@@ -253,9 +233,7 @@
when:
- ironic_policy_file is defined
- item.key in services_require_policy_json
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ironic_services }}"
+ with_dict: "{{ ironic_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -271,20 +249,18 @@
when:
- ironic_inspector_policy_file is defined
- item.key in services_require_inspector_policy_json
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ironic_services }}"
+ with_dict: "{{ ironic_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
- name: Copying over ironic-api-wsgi.conf
+ vars:
+ service: "{{ ironic_services['ironic-api'] }}"
template:
src: "ironic-api-wsgi.conf.j2"
dest: "{{ node_config_directory }}/ironic-api/ironic-api-wsgi.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups["ironic-api"]
- - ironic_services["ironic-api"].enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart ironic-api container"
diff --git a/ansible/roles/ironic/tasks/precheck.yml b/ansible/roles/ironic/tasks/precheck.yml
index 19190b5b2..b2f2a83d9 100644
--- a/ansible/roles/ironic/tasks/precheck.yml
+++ b/ansible/roles/ironic/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- ironic_api
diff --git a/ansible/roles/iscsi/defaults/main.yml b/ansible/roles/iscsi/defaults/main.yml
index b4bbe845a..8067c794a 100644
--- a/ansible/roles/iscsi/defaults/main.yml
+++ b/ansible/roles/iscsi/defaults/main.yml
@@ -26,11 +26,11 @@ tgtd_interface_address: "{{ api_interface_address }}"
####################
iscsi_tag: "{{ openstack_tag }}"
-iscsid_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/iscsid"
+iscsid_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}iscsid"
iscsid_tag: "{{ iscsi_tag }}"
iscsid_image_full: "{{ iscsid_image }}:{{ iscsid_tag }}"
-tgtd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/tgtd"
+tgtd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}tgtd"
tgtd_tag: "{{ iscsi_tag }}"
tgtd_image_full: "{{ tgtd_image }}:{{ tgtd_tag }}"
diff --git a/ansible/roles/iscsi/tasks/check-containers.yml b/ansible/roles/iscsi/tasks/check-containers.yml
index 76cd9cd18..3eae52913 100644
--- a/ansible/roles/iscsi/tasks/check-containers.yml
+++ b/ansible/roles/iscsi/tasks/check-containers.yml
@@ -10,9 +10,6 @@
privileged: "{{ item.value.privileged | default(False) }}"
volumes: "{{ item.value.volumes }}"
dimensions: "{{ item.value.dimensions }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ iscsi_services }}"
+ with_dict: "{{ iscsi_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/iscsi/tasks/config.yml b/ansible/roles/iscsi/tasks/config.yml
index 1c9da9dfc..563c96901 100644
--- a/ansible/roles/iscsi/tasks/config.yml
+++ b/ansible/roles/iscsi/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ iscsi_services }}"
+ with_dict: "{{ iscsi_services | select_services_enabled_and_mapped_to_host }}"
- name: Copying over config.json files for services
template:
@@ -18,9 +15,6 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ iscsi_services }}"
+ with_dict: "{{ iscsi_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/iscsi/tasks/precheck.yml b/ansible/roles/iscsi/tasks/precheck.yml
index 4d36bc5df..bd72b1da4 100644
--- a/ansible/roles/iscsi/tasks/precheck.yml
+++ b/ansible/roles/iscsi/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- iscsid
diff --git a/ansible/roles/keystone/defaults/main.yml b/ansible/roles/keystone/defaults/main.yml
index 6a93a0413..c353d48bb 100644
--- a/ansible/roles/keystone/defaults/main.yml
+++ b/ansible/roles/keystone/defaults/main.yml
@@ -95,15 +95,15 @@ keystone_groupname: "keystone"
####################
keystone_tag: "{{ openstack_tag }}"
-keystone_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/keystone"
+keystone_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}keystone"
keystone_service_tag: "{{ keystone_tag }}"
keystone_image_full: "{{ keystone_image }}:{{ keystone_service_tag }}"
-keystone_fernet_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/keystone-fernet"
+keystone_fernet_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}keystone-fernet"
keystone_fernet_tag: "{{ keystone_tag }}"
keystone_fernet_image_full: "{{ keystone_fernet_image }}:{{ keystone_fernet_tag }}"
-keystone_ssh_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/keystone-ssh"
+keystone_ssh_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}keystone-ssh"
keystone_ssh_tag: "{{ keystone_tag }}"
keystone_ssh_image_full: "{{ keystone_ssh_image }}:{{ keystone_ssh_tag }}"
diff --git a/ansible/roles/keystone/tasks/bootstrap_service.yml b/ansible/roles/keystone/tasks/bootstrap_service.yml
index 3b8be515c..daefcfaeb 100644
--- a/ansible/roles/keystone/tasks/bootstrap_service.yml
+++ b/ansible/roles/keystone/tasks/bootstrap_service.yml
@@ -2,6 +2,7 @@
- name: Checking for any running keystone_fernet containers
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- keystone_fernet
diff --git a/ansible/roles/keystone/tasks/check-containers.yml b/ansible/roles/keystone/tasks/check-containers.yml
index 98184af69..226d979dc 100644
--- a/ansible/roles/keystone/tasks/check-containers.yml
+++ b/ansible/roles/keystone/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ keystone_services }}"
+ with_dict: "{{ keystone_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/keystone/tasks/config.yml b/ansible/roles/keystone/tasks/config.yml
index a8d150c48..04325d573 100644
--- a/ansible/roles/keystone/tasks/config.yml
+++ b/ansible/roles/keystone/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ keystone_services }}"
+ with_dict: "{{ keystone_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -48,10 +45,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- with_dict: "{{ keystone_services }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
+ with_dict: "{{ keystone_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -68,39 +62,34 @@
dest: "{{ node_config_directory }}/{{ item.key }}/keystone.conf"
mode: "0660"
become: true
- with_dict: "{{ keystone_services }}"
+ with_dict: "{{ keystone_services | select_services_enabled_and_mapped_to_host }}"
when:
- - inventory_hostname in groups[item.value.group]
- item.key in [ "keystone", "keystone-fernet" ]
- - item.value.enabled | bool
notify:
- Restart {{ item.key }} container
- name: Copying keystone-startup script for keystone
vars:
- keystone: "{{ keystone_services['keystone'] }}"
+ service: "{{ keystone_services['keystone'] }}"
template:
src: "keystone-startup.sh.j2"
dest: "{{ node_config_directory }}/keystone/keystone-startup.sh"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[keystone.group]
- - keystone.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart keystone container
- name: Create Keystone domain-specific config directory
vars:
- keystone: "{{ keystone_services.keystone }}"
+ service: "{{ keystone_services['keystone'] }}"
file:
dest: "{{ node_config_directory }}/keystone/domains/"
state: "directory"
mode: "0770"
become: true
when:
- - inventory_hostname in groups[keystone.group]
- - keystone.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- keystone_domain_directory.stat.exists
- name: Get file list in custom domains folder
@@ -114,7 +103,7 @@
- name: Copying Keystone Domain specific settings
vars:
- keystone: "{{ keystone_services.keystone }}"
+ service: "{{ keystone_services['keystone'] }}"
template:
src: "{{ item.path }}"
dest: "{{ node_config_directory }}/keystone/domains/"
@@ -122,8 +111,7 @@
become: true
register: keystone_domains
when:
- - inventory_hostname in groups[keystone.group]
- - keystone.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- keystone_domain_directory.stat.exists
with_items: "{{ keystone_domains.files | default([]) }}"
notify:
@@ -136,11 +124,9 @@
mode: "0660"
become: true
when:
- - inventory_hostname in groups[item.value.group]
- item.key in [ "keystone", "keystone-fernet" ]
- - item.value.enabled | bool
- keystone_policy_file is defined
- with_dict: "{{ keystone_services }}"
+ with_dict: "{{ keystone_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -150,15 +136,13 @@
- name: Copying over wsgi-keystone.conf
vars:
- keystone: "{{ keystone_services.keystone }}"
+ service: "{{ keystone_services['keystone'] }}"
template:
src: "{{ item }}"
dest: "{{ node_config_directory }}/keystone/wsgi-keystone.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[keystone.group]
- - keystone.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/keystone/{{ inventory_hostname }}/wsgi-keystone.conf"
- "{{ node_custom_config }}/keystone/wsgi-keystone.conf"
@@ -168,26 +152,24 @@
- name: Checking whether keystone-paste.ini file exists
vars:
- keystone: "{{ keystone_services.keystone }}"
+ service: "{{ keystone_services['keystone'] }}"
stat:
path: "{{ node_custom_config }}/keystone/keystone-paste.ini"
delegate_to: localhost
run_once: True
register: check_keystone_paste_ini
- when:
- - keystone.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
- name: Copying over keystone-paste.ini
vars:
- keystone: "{{ keystone_services.keystone }}"
+ service: "{{ keystone_services['keystone'] }}"
template:
src: "{{ node_custom_config }}/keystone/keystone-paste.ini"
dest: "{{ node_config_directory }}/keystone/keystone-paste.ini"
mode: "0660"
become: true
when:
- - inventory_hostname in groups[keystone.group]
- - keystone.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- check_keystone_paste_ini.stat.exists
notify:
- Restart keystone container
@@ -211,7 +193,7 @@
- name: Copying files for keystone-fernet
vars:
- keystone_fernet: "{{ keystone_services['keystone-fernet'] }}"
+ service: "{{ keystone_services['keystone-fernet'] }}"
template:
src: "{{ item.src }}"
dest: "{{ node_config_directory }}/keystone-fernet/{{ item.dest }}"
@@ -226,15 +208,13 @@
- { src: "fernet-healthcheck.sh.j2", dest: "fernet-healthcheck.sh" }
- { src: "id_rsa", dest: "id_rsa" }
- { src: "ssh_config.j2", dest: "ssh_config" }
- when:
- - inventory_hostname in groups[keystone_fernet.group]
- - keystone_fernet.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart keystone-fernet container
- name: Copying files for keystone-ssh
vars:
- keystone_ssh: "{{ keystone_services['keystone-ssh'] }}"
+ service: "{{ keystone_services['keystone-ssh'] }}"
template:
src: "{{ item.src }}"
dest: "{{ node_config_directory }}/keystone-ssh/{{ item.dest }}"
@@ -243,8 +223,6 @@
with_items:
- { src: "sshd_config.j2", dest: "sshd_config" }
- { src: "id_rsa.pub", dest: "id_rsa.pub" }
- when:
- - inventory_hostname in groups[keystone_ssh.group]
- - keystone_ssh.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart keystone-ssh container
diff --git a/ansible/roles/keystone/tasks/precheck.yml b/ansible/roles/keystone/tasks/precheck.yml
index 0513f7411..3a84f8677 100644
--- a/ansible/roles/keystone/tasks/precheck.yml
+++ b/ansible/roles/keystone/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- keystone
diff --git a/ansible/roles/kuryr/defaults/main.yml b/ansible/roles/kuryr/defaults/main.yml
index 640302886..4241c57bb 100644
--- a/ansible/roles/kuryr/defaults/main.yml
+++ b/ansible/roles/kuryr/defaults/main.yml
@@ -30,7 +30,7 @@ kuryr_config_validation:
####################
# Docker
####################
-kuryr_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/kuryr-libnetwork"
+kuryr_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}kuryr-libnetwork"
kuryr_tag: "{{ openstack_tag }}"
kuryr_image_full: "{{ kuryr_image }}:{{ kuryr_tag }}"
diff --git a/ansible/roles/kuryr/tasks/check-containers.yml b/ansible/roles/kuryr/tasks/check-containers.yml
index 86e2f1716..c1fdb0c5e 100644
--- a/ansible/roles/kuryr/tasks/check-containers.yml
+++ b/ansible/roles/kuryr/tasks/check-containers.yml
@@ -11,9 +11,6 @@
volumes: "{{ item.value.volumes }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ kuryr_services }}"
+ with_dict: "{{ kuryr_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/kuryr/tasks/config.yml b/ansible/roles/kuryr/tasks/config.yml
index c05971366..f533c50da 100644
--- a/ansible/roles/kuryr/tasks/config.yml
+++ b/ansible/roles/kuryr/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ kuryr_services }}"
+ with_dict: "{{ kuryr_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -41,10 +38,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ kuryr_services }}"
+ with_dict: "{{ kuryr_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart kuryr container
@@ -61,10 +55,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/kuryr.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ kuryr_services }}"
+ with_dict: "{{ kuryr_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart kuryr container
@@ -76,9 +67,7 @@
dest: "{{ node_config_directory }}/{{ item }}/kuryr.spec"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_items:
- "kuryr"
notify:
@@ -92,8 +81,6 @@
become: true
when:
- kuryr_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ kuryr_services }}"
+ with_dict: "{{ kuryr_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart kuryr container
diff --git a/ansible/roles/kuryr/tasks/precheck.yml b/ansible/roles/kuryr/tasks/precheck.yml
index 078d1dd9e..31acfd6c0 100644
--- a/ansible/roles/kuryr/tasks/precheck.yml
+++ b/ansible/roles/kuryr/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- kuryr
diff --git a/ansible/roles/letsencrypt/defaults/main.yml b/ansible/roles/letsencrypt/defaults/main.yml
index 4d41fe9d0..bd2d5a3d0 100644
--- a/ansible/roles/letsencrypt/defaults/main.yml
+++ b/ansible/roles/letsencrypt/defaults/main.yml
@@ -22,11 +22,11 @@ letsencrypt_services:
letsencrypt_tag: "{{ openstack_tag }}"
letsencrypt_logging_debug: "{{ openstack_logging_debug }}"
-letsencrypt_lego_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/letsencrypt-lego"
+letsencrypt_lego_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}letsencrypt-lego"
letsencrypt_lego_tag: "{{ letsencrypt_tag }}"
letsencrypt_lego_image_full: "{{ letsencrypt_lego_image }}:{{ letsencrypt_lego_tag }}"
-letsencrypt_webserver_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/letsencrypt-webserver"
+letsencrypt_webserver_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}letsencrypt-webserver"
letsencrypt_webserver_tag: "{{ letsencrypt_tag }}"
letsencrypt_webserver_image_full: "{{ letsencrypt_webserver_image }}:{{ letsencrypt_webserver_tag }}"
diff --git a/ansible/roles/letsencrypt/tasks/check-containers.yml b/ansible/roles/letsencrypt/tasks/check-containers.yml
index 559baba73..0c20e0523 100644
--- a/ansible/roles/letsencrypt/tasks/check-containers.yml
+++ b/ansible/roles/letsencrypt/tasks/check-containers.yml
@@ -10,9 +10,6 @@
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
environment: "{{ item.value.environment | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ letsencrypt_services }}"
+ with_dict: "{{ letsencrypt_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/letsencrypt/tasks/config.yml b/ansible/roles/letsencrypt/tasks/config.yml
index 44011ee7e..5117f9d1c 100644
--- a/ansible/roles/letsencrypt/tasks/config.yml
+++ b/ansible/roles/letsencrypt/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ letsencrypt_services }}"
+ with_dict: "{{ letsencrypt_services | select_services_enabled_and_mapped_to_host }}"
- name: Copying over config.json files for services
template:
@@ -18,10 +15,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ letsencrypt_services }}"
+ with_dict: "{{ letsencrypt_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -37,9 +31,7 @@
- "{{ node_custom_config }}/letsencrypt/{{ inventory_hostname }}/letsencrypt-webserver.conf"
- "{{ node_custom_config }}/letsencrypt/letsencrypt-webserver.conf"
- "letsencrypt-webserver.conf.j2"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart letsencrypt-webserver container
@@ -55,9 +47,7 @@
- { src: "crontab.j2", dest: "crontab" }
- { src: "id_rsa.j2", dest: "id_rsa" }
- { src: "letsencrypt-lego-run.sh.j2", dest: "letsencrypt-lego-run.sh" }
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart letsencrypt-lego container
diff --git a/ansible/roles/letsencrypt/tasks/precheck.yml b/ansible/roles/letsencrypt/tasks/precheck.yml
index 6ad18cb53..b1462dbad 100644
--- a/ansible/roles/letsencrypt/tasks/precheck.yml
+++ b/ansible/roles/letsencrypt/tasks/precheck.yml
@@ -2,6 +2,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- letsencrypt_webserver
@@ -18,8 +19,7 @@
state: stopped
when:
- container_facts['letsencrypt_webserver'] is not defined
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- name: Validating letsencrypt email variable
run_once: true
diff --git a/ansible/roles/loadbalancer/defaults/main.yml b/ansible/roles/loadbalancer/defaults/main.yml
index 787ae7cb2..e05599318 100644
--- a/ansible/roles/loadbalancer/defaults/main.yml
+++ b/ansible/roles/loadbalancer/defaults/main.yml
@@ -39,19 +39,19 @@ loadbalancer_services:
####################
# Docker
####################
-keepalived_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/keepalived"
+keepalived_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}keepalived"
keepalived_tag: "{{ openstack_tag }}"
keepalived_image_full: "{{ keepalived_image }}:{{ keepalived_tag }}"
-haproxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/haproxy"
+haproxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}haproxy"
haproxy_tag: "{{ openstack_tag }}"
haproxy_image_full: "{{ haproxy_image }}:{{ haproxy_tag }}"
-proxysql_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/proxysql"
+proxysql_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}proxysql"
proxysql_tag: "{{ openstack_tag }}"
proxysql_image_full: "{{ proxysql_image }}:{{ proxysql_tag }}"
-haproxy_ssh_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/haproxy-ssh"
+haproxy_ssh_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}haproxy-ssh"
haproxy_ssh_tag: "{{ haproxy_tag }}"
haproxy_ssh_image_full: "{{ haproxy_ssh_image }}:{{ haproxy_ssh_tag }}"
diff --git a/ansible/roles/loadbalancer/handlers/main.yml b/ansible/roles/loadbalancer/handlers/main.yml
index a94a740ca..4c8688c1b 100644
--- a/ansible/roles/loadbalancer/handlers/main.yml
+++ b/ansible/roles/loadbalancer/handlers/main.yml
@@ -1,10 +1,4 @@
---
-- name: Reload firewalld
- become: True
- service:
- name: "firewalld"
- state: reloaded
-
# NOTE(yoctozepto): this handler dance is to ensure we delay restarting master
# keepalived and haproxy which control VIP address until we have working backups.
# This could be improved by checking if backup keepalived do not report FAULT state.
diff --git a/ansible/roles/loadbalancer/tasks/check-containers.yml b/ansible/roles/loadbalancer/tasks/check-containers.yml
index bb2798739..ee6f92fe4 100644
--- a/ansible/roles/loadbalancer/tasks/check-containers.yml
+++ b/ansible/roles/loadbalancer/tasks/check-containers.yml
@@ -10,9 +10,6 @@
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
privileged: "{{ item.value.privileged | default(False) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ loadbalancer_services }}"
+ with_dict: "{{ loadbalancer_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/loadbalancer/tasks/config.yml b/ansible/roles/loadbalancer/tasks/config.yml
index c2270cbee..d2ca4fea1 100644
--- a/ansible/roles/loadbalancer/tasks/config.yml
+++ b/ansible/roles/loadbalancer/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ loadbalancer_services }}"
+ with_dict: "{{ loadbalancer_services | select_services_enabled_and_mapped_to_host }}"
- name: Ensuring haproxy service config subdir exists
vars:
@@ -22,9 +19,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
- name: Ensuring proxysql service config subdirectories exist
vars:
@@ -39,9 +34,7 @@
with_items:
- "users"
- "rules"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
- name: Ensuring keepalived checks subdir exists
vars:
@@ -53,9 +46,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
- name: Remove mariadb.cfg if proxysql enabled
vars:
@@ -65,8 +56,7 @@
state: absent
become: true
when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- loadbalancer_services.proxysql.enabled | bool
notify:
- Restart haproxy container
@@ -81,12 +71,11 @@
with_dict: "{{ loadbalancer_services }}"
when:
- keepalived_track_script_enabled | bool
- - inventory_hostname in groups[service.group]
- item.key != 'keepalived'
- item.key != 'haproxy-ssh'
- not item.value.enabled | bool
or not inventory_hostname in groups[item.value.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
notify:
- Restart keepalived container
@@ -101,12 +90,11 @@
with_dict: "{{ loadbalancer_services }}"
when:
- keepalived_track_script_enabled | bool
- - inventory_hostname in groups[service.group]
- inventory_hostname in groups[item.value.group]
- item.key != 'keepalived'
- item.key != 'haproxy-ssh'
- item.value.enabled | bool
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
notify:
- Restart keepalived container
@@ -116,10 +104,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ loadbalancer_services }}"
+ with_dict: "{{ loadbalancer_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -131,9 +116,7 @@
dest: "{{ node_config_directory }}/haproxy/haproxy.cfg"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/haproxy/{{ inventory_hostname }}/haproxy_main.cfg"
- "{{ node_custom_config }}/haproxy/haproxy_main.cfg"
@@ -149,9 +132,7 @@
dest: "{{ node_config_directory }}/proxysql/proxysql.yaml"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/proxysql/{{ inventory_hostname }}/proxysql.yaml"
- "{{ node_custom_config }}/proxysql/proxysql.yaml"
@@ -168,8 +149,7 @@
mode: "0660"
become: true
when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- haproxy_single_external_frontend | bool
notify:
- Restart haproxy container
@@ -182,9 +162,7 @@
dest: "{{ node_config_directory }}/haproxy/services.d/"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_fileglob:
- "{{ node_custom_config }}/haproxy/services.d/*.cfg"
notify:
@@ -198,9 +176,7 @@
dest: "{{ node_config_directory }}/keepalived/keepalived.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/keepalived/{{ inventory_hostname }}/keepalived.conf"
- "{{ node_custom_config }}/keepalived/keepalived.conf"
@@ -220,8 +196,7 @@
- not enable_letsencrypt | bool
- kolla_enable_tls_external | bool
- not kolla_externally_managed_cert | bool
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
with_items:
- "haproxy.pem"
notify:
@@ -239,8 +214,7 @@
- not enable_letsencrypt | bool
- kolla_enable_tls_internal | bool
- not kolla_externally_managed_cert | bool
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
with_items:
- "haproxy-internal.pem"
notify:
@@ -258,9 +232,7 @@
dest: "{{ node_config_directory }}/haproxy/haproxy_run.sh"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/haproxy/{{ inventory_hostname }}/haproxy_run.sh"
- "{{ node_custom_config }}/haproxy/haproxy_run.sh"
@@ -276,9 +248,7 @@
dest: "{{ node_config_directory }}/proxysql/proxysql_run.sh"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/proxysql/{{ inventory_hostname }}/proxysql_run.sh"
- "{{ node_custom_config }}/proxysql/proxysql_run.sh"
@@ -288,7 +258,7 @@
- name: Copying files for haproxy-ssh
vars:
- haproxy_ssh: "{{ loadbalancer_services['haproxy-ssh'] }}"
+ service: "{{ loadbalancer_services['haproxy-ssh'] }}"
template:
src: "{{ item.src }}"
dest: "{{ node_config_directory }}/haproxy-ssh/{{ item.dest }}"
@@ -297,8 +267,6 @@
with_items:
- { src: "haproxy-ssh/sshd_config.j2", dest: "sshd_config" }
- { src: "haproxy-ssh/id_rsa.pub", dest: "id_rsa.pub" }
- when:
- - inventory_hostname in groups[haproxy_ssh.group]
- - haproxy_ssh.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart haproxy-ssh container
diff --git a/ansible/roles/loadbalancer/tasks/config_validate.yml b/ansible/roles/loadbalancer/tasks/config_validate.yml
index ed97d539c..cfb336919 100644
--- a/ansible/roles/loadbalancer/tasks/config_validate.yml
+++ b/ansible/roles/loadbalancer/tasks/config_validate.yml
@@ -1 +1,27 @@
---
+- name: Validating haproxy config files
+ vars:
+ service: "{{ loadbalancer_services['haproxy'] }}"
+ shell: >-
+ {{ kolla_container_engine }} exec -i haproxy haproxy
+ -c -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/services.d/
+ register: haproxy_config_validation_result
+ check_mode: false
+ become: true
+ when:
+ - inventory_hostname in groups[service.group]
+ - service.enabled | bool
+
+- name: Assert haproxy config is valid
+ vars:
+ service: "{{ loadbalancer_services['haproxy'] }}"
+ assert:
+ that:
+ - haproxy_config_validation_result.rc == 0
+ fail_msg: >-
+ haproxy config is invalid or
+ validation could not be performed.
+ success_msg: "haproxy config is valid"
+ when:
+ - inventory_hostname in groups[service.group]
+ - service.enabled | bool
diff --git a/ansible/roles/loadbalancer/tasks/precheck.yml b/ansible/roles/loadbalancer/tasks/precheck.yml
index 196dff8b0..b5ff80895 100644
--- a/ansible/roles/loadbalancer/tasks/precheck.yml
+++ b/ansible/roles/loadbalancer/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- haproxy
diff --git a/ansible/roles/magnum/defaults/main.yml b/ansible/roles/magnum/defaults/main.yml
index fa2403d04..0f00ab3b1 100644
--- a/ansible/roles/magnum/defaults/main.yml
+++ b/ansible/roles/magnum/defaults/main.yml
@@ -76,11 +76,11 @@ default_docker_volume_type: ""
####################
magnum_tag: "{{ openstack_tag }}"
-magnum_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/magnum-api"
+magnum_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}magnum-api"
magnum_api_tag: "{{ magnum_tag }}"
magnum_api_image_full: "{{ magnum_api_image }}:{{ magnum_api_tag }}"
-magnum_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/magnum-conductor"
+magnum_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}magnum-conductor"
magnum_conductor_tag: "{{ magnum_tag }}"
magnum_conductor_image_full: "{{ magnum_conductor_image }}:{{ magnum_conductor_tag }}"
diff --git a/ansible/roles/magnum/tasks/check-containers.yml b/ansible/roles/magnum/tasks/check-containers.yml
index ca50adada..b233b5e60 100644
--- a/ansible/roles/magnum/tasks/check-containers.yml
+++ b/ansible/roles/magnum/tasks/check-containers.yml
@@ -10,9 +10,6 @@
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
environment: "{{ item.value.environment }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ magnum_services }}"
+ with_dict: "{{ magnum_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/magnum/tasks/config.yml b/ansible/roles/magnum/tasks/config.yml
index 401adec0a..bbc01369a 100644
--- a/ansible/roles/magnum/tasks/config.yml
+++ b/ansible/roles/magnum/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ magnum_services }}"
+ with_dict: "{{ magnum_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -45,10 +42,8 @@
mode: "0660"
become: true
when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- magnum_kubeconfig_file.stat.exists
- with_dict: "{{ magnum_services }}"
+ with_dict: "{{ magnum_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -68,10 +63,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ magnum_services }}"
+ with_dict: "{{ magnum_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -88,10 +80,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/magnum.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ magnum_services }}"
+ with_dict: "{{ magnum_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -103,8 +92,6 @@
become: true
when:
- magnum_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ magnum_services }}"
+ with_dict: "{{ magnum_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/magnum/tasks/precheck.yml b/ansible/roles/magnum/tasks/precheck.yml
index d3eb58ceb..d9e83fb00 100644
--- a/ansible/roles/magnum/tasks/precheck.yml
+++ b/ansible/roles/magnum/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- magnum_api
diff --git a/ansible/roles/manila/defaults/main.yml b/ansible/roles/manila/defaults/main.yml
index 6244997ed..04735a05a 100644
--- a/ansible/roles/manila/defaults/main.yml
+++ b/ansible/roles/manila/defaults/main.yml
@@ -82,19 +82,19 @@ manila_database_shard:
#####################
manila_tag: "{{ openstack_tag }}"
-manila_share_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/manila-share"
+manila_share_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}manila-share"
manila_share_tag: "{{ manila_tag }}"
manila_share_image_full: "{{ manila_share_image }}:{{ manila_share_tag }}"
-manila_scheduler_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/manila-scheduler"
+manila_scheduler_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}manila-scheduler"
manila_scheduler_tag: "{{ manila_tag }}"
manila_scheduler_image_full: "{{ manila_scheduler_image }}:{{ manila_scheduler_tag }}"
-manila_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/manila-api"
+manila_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}manila-api"
manila_api_tag: "{{ manila_tag }}"
manila_api_image_full: "{{ manila_api_image }}:{{ manila_api_tag }}"
-manila_data_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/manila-data"
+manila_data_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}manila-data"
manila_data_tag: "{{ manila_tag }}"
manila_data_image_full: "{{ manila_data_image }}:{{ manila_data_tag }}"
diff --git a/ansible/roles/manila/tasks/check-containers.yml b/ansible/roles/manila/tasks/check-containers.yml
index 7c3091ec7..ce5200472 100644
--- a/ansible/roles/manila/tasks/check-containers.yml
+++ b/ansible/roles/manila/tasks/check-containers.yml
@@ -10,9 +10,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ manila_services }}"
+ with_dict: "{{ manila_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/manila/tasks/config.yml b/ansible/roles/manila/tasks/config.yml
index bf2929c80..ad3939914 100644
--- a/ansible/roles/manila/tasks/config.yml
+++ b/ansible/roles/manila/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ manila_services }}"
+ with_dict: "{{ manila_services | select_services_enabled_and_mapped_to_host }}"
- include_tasks: external_ceph.yml
when:
@@ -46,10 +43,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ manila_services }}"
+ with_dict: "{{ manila_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -68,9 +62,7 @@
become: true
when:
- item.key in [ "manila-api", "manila-data", "manila-scheduler" ]
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ manila_services }}"
+ with_dict: "{{ manila_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -90,9 +82,7 @@
dest: "{{ node_config_directory }}/{{ item }}/manila.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_items:
- "manila-share"
notify:
@@ -105,8 +95,6 @@
mode: "0660"
when:
- manila_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ manila_services }}"
+ with_dict: "{{ manila_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/manila/tasks/external_ceph.yml b/ansible/roles/manila/tasks/external_ceph.yml
index 618281f9d..729a14769 100644
--- a/ansible/roles/manila/tasks/external_ceph.yml
+++ b/ansible/roles/manila/tasks/external_ceph.yml
@@ -9,9 +9,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
- name: Copy over multiple ceph configs for Manila
merge_configs:
diff --git a/ansible/roles/manila/tasks/precheck.yml b/ansible/roles/manila/tasks/precheck.yml
index 7f47557ba..630b28862 100644
--- a/ansible/roles/manila/tasks/precheck.yml
+++ b/ansible/roles/manila/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- manila_api
diff --git a/ansible/roles/mariadb/defaults/main.yml b/ansible/roles/mariadb/defaults/main.yml
index 8adb3e740..a1ac4fa31 100644
--- a/ansible/roles/mariadb/defaults/main.yml
+++ b/ansible/roles/mariadb/defaults/main.yml
@@ -67,11 +67,11 @@ external_haproxy_members: "{% for host in mariadb_default_database_shard_hosts %
####################
# Docker
####################
-mariadb_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/mariadb-server"
+mariadb_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}mariadb-server"
mariadb_tag: "{{ openstack_tag }}"
mariadb_image_full: "{{ mariadb_image }}:{{ mariadb_tag }}"
-mariadb_clustercheck_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/mariadb-clustercheck"
+mariadb_clustercheck_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}mariadb-clustercheck"
mariadb_clustercheck_tag: "{{ mariadb_tag }}"
mariadb_clustercheck_image_full: "{{ mariadb_clustercheck_image }}:{{ mariadb_clustercheck_tag }}"
diff --git a/ansible/roles/mariadb/tasks/check-containers.yml b/ansible/roles/mariadb/tasks/check-containers.yml
index e8a5b990c..e5ff27d4e 100644
--- a/ansible/roles/mariadb/tasks/check-containers.yml
+++ b/ansible/roles/mariadb/tasks/check-containers.yml
@@ -10,9 +10,6 @@
dimensions: "{{ item.value.dimensions }}"
environment: "{{ item.value.environment | default(omit) }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ mariadb_services }}"
+ with_dict: "{{ mariadb_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "restart {{ item.key }}"
diff --git a/ansible/roles/mariadb/tasks/config.yml b/ansible/roles/mariadb/tasks/config.yml
index fedb9b4ed..b0691deef 100644
--- a/ansible/roles/mariadb/tasks/config.yml
+++ b/ansible/roles/mariadb/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ mariadb_services }}"
+ with_dict: "{{ mariadb_services | select_services_enabled_and_mapped_to_host }}"
- name: Ensuring database backup config directory exists
file:
@@ -45,10 +42,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ mariadb_services }}"
+ with_dict: "{{ mariadb_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "restart {{ item.key }}"
@@ -76,8 +70,6 @@
dest: "{{ node_config_directory }}/{{ service_name }}/galera.cnf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- restart mariadb
diff --git a/ansible/roles/mariadb/tasks/precheck.yml b/ansible/roles/mariadb/tasks/precheck.yml
index f85245647..d6337e7de 100644
--- a/ansible/roles/mariadb/tasks/precheck.yml
+++ b/ansible/roles/mariadb/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- mariadb
diff --git a/ansible/roles/masakari/defaults/main.yml b/ansible/roles/masakari/defaults/main.yml
index 6b2f072df..4f521e181 100644
--- a/ansible/roles/masakari/defaults/main.yml
+++ b/ansible/roles/masakari/defaults/main.yml
@@ -78,15 +78,15 @@ masakari_database_shard:
####################
masakari_tag: "{{ openstack_tag }}"
-masakari_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/masakari-api"
+masakari_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}masakari-api"
masakari_api_tag: "{{ masakari_tag }}"
masakari_api_image_full: "{{ masakari_api_image }}:{{ masakari_api_tag }}"
-masakari_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/masakari-engine"
+masakari_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}masakari-engine"
masakari_engine_tag: "{{ masakari_tag }}"
masakari_engine_image_full: "{{ masakari_engine_image }}:{{ masakari_engine_tag }}"
-masakari_monitors_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/masakari-monitors"
+masakari_monitors_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}masakari-monitors"
masakari_monitors_tag: "{{ masakari_tag }}"
masakari_monitors_image_full: "{{ masakari_monitors_image }}:{{ masakari_monitors_tag }}"
diff --git a/ansible/roles/masakari/tasks/check-containers.yml b/ansible/roles/masakari/tasks/check-containers.yml
index 004a28798..fa46c70bc 100644
--- a/ansible/roles/masakari/tasks/check-containers.yml
+++ b/ansible/roles/masakari/tasks/check-containers.yml
@@ -10,9 +10,6 @@
privileged: "{{ item.value.privileged | default(False) }}"
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ masakari_services }}"
+ with_dict: "{{ masakari_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/masakari/tasks/config.yml b/ansible/roles/masakari/tasks/config.yml
index df93a3550..5a9e2bb4c 100644
--- a/ansible/roles/masakari/tasks/config.yml
+++ b/ansible/roles/masakari/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ masakari_services }}"
+ with_dict: "{{ masakari_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -39,9 +36,7 @@
become: true
when:
- masakari_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ masakari_services }}"
+ with_dict: "{{ masakari_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -51,10 +46,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ masakari_services }}"
+ with_dict: "{{ masakari_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -76,9 +68,7 @@
dest: "{{ node_config_directory }}/{{ service_name }}/masakari.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_items:
- masakari-api
- masakari-engine
@@ -99,9 +89,7 @@
dest: "{{ node_config_directory }}/{{ service_name }}/masakari-monitors.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_items:
- masakari-instancemonitor
- masakari-hostmonitor
@@ -116,9 +104,7 @@
dest: "{{ node_config_directory }}/masakari-api/wsgi-masakari.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart masakari-api container
@@ -132,9 +118,7 @@
dest: "{{ node_config_directory }}/masakari-api/masakari-api-paste.ini"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart masakari-api container
@@ -149,8 +133,7 @@
mode: "0660"
when:
- libvirt_enable_sasl | bool
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
with_items:
- { src: "auth.conf.j2", dest: "auth.conf", service: "masakari-instancemonitor" }
notify:
diff --git a/ansible/roles/masakari/tasks/precheck.yml b/ansible/roles/masakari/tasks/precheck.yml
index c77403bfb..71d9cca21 100644
--- a/ansible/roles/masakari/tasks/precheck.yml
+++ b/ansible/roles/masakari/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- masakari_api
diff --git a/ansible/roles/memcached/defaults/main.yml b/ansible/roles/memcached/defaults/main.yml
index fe0674dfb..67cd1a33c 100644
--- a/ansible/roles/memcached/defaults/main.yml
+++ b/ansible/roles/memcached/defaults/main.yml
@@ -24,7 +24,7 @@ memcached_services:
####################
# Docker
####################
-memcached_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/memcached"
+memcached_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}memcached"
memcached_tag: "{{ openstack_tag }}"
memcached_image_full: "{{ memcached_image }}:{{ memcached_tag }}"
memcached_dimensions: "{{ default_container_dimensions }}"
diff --git a/ansible/roles/memcached/tasks/check-containers.yml b/ansible/roles/memcached/tasks/check-containers.yml
index 120b3ecee..49d1c2953 100644
--- a/ansible/roles/memcached/tasks/check-containers.yml
+++ b/ansible/roles/memcached/tasks/check-containers.yml
@@ -11,7 +11,5 @@
volumes: "{{ service.volumes }}"
dimensions: "{{ service.dimensions }}"
healthcheck: "{{ service.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify: Restart memcached container
diff --git a/ansible/roles/memcached/tasks/config.yml b/ansible/roles/memcached/tasks/config.yml
index 20edb1416..3287a3f47 100644
--- a/ansible/roles/memcached/tasks/config.yml
+++ b/ansible/roles/memcached/tasks/config.yml
@@ -20,7 +20,5 @@
become: true
with_items:
- "memcached"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify: Restart memcached container
diff --git a/ansible/roles/memcached/tasks/precheck.yml b/ansible/roles/memcached/tasks/precheck.yml
index 0601c6d73..c5ab94ce0 100644
--- a/ansible/roles/memcached/tasks/precheck.yml
+++ b/ansible/roles/memcached/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- memcached
diff --git a/ansible/roles/mistral/defaults/main.yml b/ansible/roles/mistral/defaults/main.yml
index 137f5a3a9..4f4e4aaa8 100644
--- a/ansible/roles/mistral/defaults/main.yml
+++ b/ansible/roles/mistral/defaults/main.yml
@@ -80,19 +80,19 @@ mistral_database_shard:
####################
mistral_tag: "{{ openstack_tag }}"
-mistral_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/mistral-engine"
+mistral_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}mistral-engine"
mistral_engine_tag: "{{ mistral_tag }}"
mistral_engine_image_full: "{{ mistral_engine_image }}:{{ mistral_engine_tag }}"
-mistral_event_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/mistral-event-engine"
+mistral_event_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}mistral-event-engine"
mistral_event_engine_tag: "{{ mistral_tag }}"
mistral_event_engine_image_full: "{{ mistral_event_engine_image }}:{{ mistral_event_engine_tag }}"
-mistral_executor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/mistral-executor"
+mistral_executor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}mistral-executor"
mistral_executor_tag: "{{ mistral_tag }}"
mistral_executor_image_full: "{{ mistral_executor_image }}:{{ mistral_executor_tag }}"
-mistral_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/mistral-api"
+mistral_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}mistral-api"
mistral_api_tag: "{{ mistral_tag }}"
mistral_api_image_full: "{{ mistral_api_image }}:{{ mistral_api_tag }}"
diff --git a/ansible/roles/mistral/tasks/check-containers.yml b/ansible/roles/mistral/tasks/check-containers.yml
index 81ba36d15..7ed520ca3 100644
--- a/ansible/roles/mistral/tasks/check-containers.yml
+++ b/ansible/roles/mistral/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ mistral_services }}"
+ with_dict: "{{ mistral_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/mistral/tasks/config.yml b/ansible/roles/mistral/tasks/config.yml
index 3f30bb675..604c5f107 100644
--- a/ansible/roles/mistral/tasks/config.yml
+++ b/ansible/roles/mistral/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ mistral_services }}"
+ with_dict: "{{ mistral_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -41,10 +38,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ mistral_services }}"
+ with_dict: "{{ mistral_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -61,10 +55,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/mistral.conf"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ mistral_services }}"
+ with_dict: "{{ mistral_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -76,9 +67,7 @@
become: true
when:
- mistral_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ mistral_services }}"
+ with_dict: "{{ mistral_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -90,9 +79,7 @@
src: "{{ item }}"
dest: "{{ node_config_directory }}/mistral-event-engine/event_definitions.yaml"
mode: "0660"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/mistral/{{ inventory_hostname }}/event_definitions.yaml"
- "{{ node_custom_config }}/mistral/event_definitions.yaml"
diff --git a/ansible/roles/mistral/tasks/precheck.yml b/ansible/roles/mistral/tasks/precheck.yml
index 19264fc57..307b4376e 100644
--- a/ansible/roles/mistral/tasks/precheck.yml
+++ b/ansible/roles/mistral/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- mistral_api
diff --git a/ansible/roles/multipathd/defaults/main.yml b/ansible/roles/multipathd/defaults/main.yml
index 5db6d1055..ec683876c 100644
--- a/ansible/roles/multipathd/defaults/main.yml
+++ b/ansible/roles/multipathd/defaults/main.yml
@@ -13,7 +13,7 @@ multipathd_services:
####################
# Docker
####################
-multipathd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/multipathd"
+multipathd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}multipathd"
multipathd_tag: "{{ openstack_tag }}"
multipathd_image_full: "{{ multipathd_image }}:{{ multipathd_tag }}"
diff --git a/ansible/roles/multipathd/tasks/check-containers.yml b/ansible/roles/multipathd/tasks/check-containers.yml
index fe82a085f..5d41bdba5 100644
--- a/ansible/roles/multipathd/tasks/check-containers.yml
+++ b/ansible/roles/multipathd/tasks/check-containers.yml
@@ -9,9 +9,6 @@
ipc_mode: "{{ item.value.ipc_mode }}"
privileged: "{{ item.value.privileged | default(False) }}"
volumes: "{{ item.value.volumes }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ multipathd_services }}"
+ with_dict: "{{ multipathd_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/multipathd/tasks/config.yml b/ansible/roles/multipathd/tasks/config.yml
index f9281e9f8..9c75e93d6 100644
--- a/ansible/roles/multipathd/tasks/config.yml
+++ b/ansible/roles/multipathd/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ multipathd_services }}"
+ with_dict: "{{ multipathd_services | select_services_enabled_and_mapped_to_host }}"
- name: Copying over config.json files for services
template:
@@ -18,10 +15,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ multipathd_services }}"
+ with_dict: "{{ multipathd_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart multipathd container
@@ -37,8 +31,6 @@
- "{{ node_custom_config }}/multipath/{{ inventory_hostname }}/multipath.conf"
- "{{ node_custom_config }}/multipath.conf"
- "multipath.conf.j2"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart multipathd container
diff --git a/ansible/roles/neutron/defaults/main.yml b/ansible/roles/neutron/defaults/main.yml
index 0f5233414..8c7a8d090 100644
--- a/ansible/roles/neutron/defaults/main.yml
+++ b/ansible/roles/neutron/defaults/main.yml
@@ -263,67 +263,67 @@ neutron_database_shard:
haproxy_tag: "{{ openstack_tag }}"
neutron_tag: "{{ openstack_tag }}"
-neutron_dhcp_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/neutron-dhcp-agent"
+neutron_dhcp_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-dhcp-agent"
neutron_dhcp_agent_tag: "{{ neutron_tag }}"
neutron_dhcp_agent_image_full: "{{ neutron_dhcp_agent_image }}:{{ neutron_dhcp_agent_tag }}"
-neutron_l3_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/neutron-l3-agent"
+neutron_l3_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-l3-agent"
neutron_l3_agent_tag: "{{ neutron_tag }}"
neutron_l3_agent_image_full: "{{ neutron_l3_agent_image }}:{{ neutron_l3_agent_tag }}"
-neutron_sriov_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/neutron-sriov-agent"
+neutron_sriov_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-sriov-agent"
neutron_sriov_agent_tag: "{{ neutron_tag }}"
neutron_sriov_agent_image_full: "{{ neutron_sriov_agent_image }}:{{ neutron_sriov_agent_tag }}"
-neutron_mlnx_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/neutron-mlnx-agent"
+neutron_mlnx_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-mlnx-agent"
neutron_mlnx_agent_tag: "{{ neutron_tag }}"
neutron_mlnx_agent_image_full: "{{ neutron_mlnx_agent_image }}:{{ neutron_mlnx_agent_tag }}"
-neutron_eswitchd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/neutron-mlnx-agent"
+neutron_eswitchd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-mlnx-agent"
neutron_eswitchd_tag: "{{ neutron_mlnx_agent_tag }}"
neutron_eswitchd_image_full: "{{ neutron_eswitchd_image }}:{{ neutron_eswitchd_tag }}"
-neutron_linuxbridge_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/neutron-linuxbridge-agent"
+neutron_linuxbridge_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-linuxbridge-agent"
neutron_linuxbridge_agent_tag: "{{ neutron_tag }}"
neutron_linuxbridge_agent_image_full: "{{ neutron_linuxbridge_agent_image }}:{{ neutron_linuxbridge_agent_tag }}"
-neutron_metadata_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/neutron-metadata-agent"
+neutron_metadata_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-metadata-agent"
neutron_metadata_agent_tag: "{{ neutron_tag }}"
neutron_metadata_agent_image_full: "{{ neutron_metadata_agent_image }}:{{ neutron_metadata_agent_tag }}"
-neutron_ovn_metadata_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/neutron-metadata-agent"
+neutron_ovn_metadata_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-metadata-agent"
neutron_ovn_metadata_agent_tag: "{{ neutron_tag }}"
neutron_ovn_metadata_agent_image_full: "{{ neutron_ovn_metadata_agent_image }}:{{ neutron_ovn_metadata_agent_tag }}"
-neutron_openvswitch_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/neutron-openvswitch-agent"
+neutron_openvswitch_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-openvswitch-agent"
neutron_openvswitch_agent_tag: "{{ neutron_tag }}"
neutron_openvswitch_agent_image_full: "{{ neutron_openvswitch_agent_image }}:{{ neutron_openvswitch_agent_tag }}"
-neutron_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/neutron-server"
+neutron_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-server"
neutron_server_tag: "{{ neutron_tag }}"
neutron_server_image_full: "{{ neutron_server_image }}:{{ neutron_server_tag }}"
-neutron_bgp_dragent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/neutron-bgp-dragent"
+neutron_bgp_dragent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-bgp-dragent"
neutron_bgp_dragent_tag: "{{ neutron_tag }}"
neutron_bgp_dragent_image_full: "{{ neutron_bgp_dragent_image }}:{{ neutron_bgp_dragent_tag }}"
-neutron_infoblox_ipam_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/neutron-infoblox-ipam-agent"
+neutron_infoblox_ipam_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-infoblox-ipam-agent"
neutron_infoblox_ipam_agent_tag: "{{ neutron_tag }}"
neutron_infoblox_ipam_agent_image_full: "{{ neutron_infoblox_ipam_agent_image }}:{{ neutron_infoblox_ipam_agent_tag }}"
-neutron_metering_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/neutron-metering-agent"
+neutron_metering_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-metering-agent"
neutron_metering_agent_tag: "{{ neutron_tag }}"
neutron_metering_agent_image_full: "{{ neutron_metering_agent_image }}:{{ neutron_metering_agent_tag }}"
-ironic_neutron_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ironic-neutron-agent"
+ironic_neutron_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ironic-neutron-agent"
ironic_neutron_agent_tag: "{{ neutron_tag }}"
ironic_neutron_agent_image_full: "{{ ironic_neutron_agent_image }}:{{ ironic_neutron_agent_tag }}"
-neutron_tls_proxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/haproxy"
+neutron_tls_proxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}haproxy"
neutron_tls_proxy_tag: "{{ haproxy_tag }}"
neutron_tls_proxy_image_full: "{{ neutron_tls_proxy_image }}:{{ neutron_tls_proxy_tag }}"
-neutron_ovn_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/neutron-ovn-agent"
+neutron_ovn_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-ovn-agent"
neutron_ovn_agent_tag: "{{ neutron_tag }}"
neutron_ovn_agent_image_full: "{{ neutron_ovn_agent_image }}:{{ neutron_ovn_agent_tag }}"
diff --git a/ansible/roles/neutron/handlers/main.yml b/ansible/roles/neutron/handlers/main.yml
index 6d6a547f0..50ab08c06 100644
--- a/ansible/roles/neutron/handlers/main.yml
+++ b/ansible/roles/neutron/handlers/main.yml
@@ -90,6 +90,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- neutron_l3_agent
diff --git a/ansible/roles/neutron/tasks/check-containers.yml b/ansible/roles/neutron/tasks/check-containers.yml
index 42bfb1fcc..cc3ec4fa8 100644
--- a/ansible/roles/neutron/tasks/check-containers.yml
+++ b/ansible/roles/neutron/tasks/check-containers.yml
@@ -11,9 +11,6 @@
dimensions: "{{ item.value.dimensions }}"
environment: "{{ item.value.environment | default(omit) }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- with_dict: "{{ neutron_services }}"
+ with_dict: "{{ neutron_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/neutron/tasks/config-host.yml b/ansible/roles/neutron/tasks/config-host.yml
index 5983d11a2..a33919b12 100644
--- a/ansible/roles/neutron/tasks/config-host.yml
+++ b/ansible/roles/neutron/tasks/config-host.yml
@@ -21,7 +21,7 @@
include_role:
name: sysctl
vars:
- neutron_l3_agent: "{{ neutron_services['neutron-l3-agent'] }}"
+ service: "{{ neutron_services['neutron-l3-agent'] }}"
settings:
- { name: "net.ipv4.neigh.default.gc_thresh1", value: "{{ neutron_l3_agent_host_ipv4_neigh_gc_thresh1 }}"}
- { name: "net.ipv4.neigh.default.gc_thresh2", value: "{{ neutron_l3_agent_host_ipv4_neigh_gc_thresh2 }}"}
@@ -31,4 +31,4 @@
- { name: "net.ipv6.neigh.default.gc_thresh3", value: "{{ neutron_l3_agent_host_ipv6_neigh_gc_thresh3 }}"}
when:
- set_sysctl | bool
- - (neutron_l3_agent.enabled | bool and neutron_l3_agent.host_in_groups | bool)
+ - service | service_enabled_and_mapped_to_host
diff --git a/ansible/roles/neutron/tasks/config.yml b/ansible/roles/neutron/tasks/config.yml
index ef5055e37..8ba4e88a7 100644
--- a/ansible/roles/neutron/tasks/config.yml
+++ b/ansible/roles/neutron/tasks/config.yml
@@ -7,10 +7,7 @@
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
mode: "0770"
- when:
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- with_dict: "{{ neutron_services }}"
+ with_dict: "{{ neutron_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if extra ml2 plugins exists
find:
@@ -26,7 +23,7 @@
- name: Creating TLS backend PEM File
vars:
- neutron_tls_proxy: "{{ neutron_services['neutron-tls-proxy'] }}"
+ service: "{{ neutron_services['neutron-tls-proxy'] }}"
assemble:
src: "{{ node_config_directory }}/neutron-tls-proxy/"
dest: "{{ node_config_directory }}/neutron-tls-proxy/neutron-cert-and-key.pem"
@@ -34,9 +31,7 @@
regexp: "^neutron-(cert|key)\\.pem$"
remote_src: true
become: true
- when:
- - neutron_tls_proxy.enabled | bool
- - neutron_tls_proxy.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
- name: Check if policies shall be overwritten
stat:
@@ -65,9 +60,7 @@
become: true
when:
- neutron_policy_file is defined
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- with_dict: "{{ neutron_services }}"
+ with_dict: "{{ neutron_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -77,10 +70,7 @@
src: "{{ item.key }}.json.j2"
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
- when:
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- with_dict: "{{ neutron_services }}"
+ with_dict: "{{ neutron_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -114,10 +104,8 @@
dest: "{{ node_config_directory }}/{{ item.key }}/neutron.conf"
mode: "0660"
when:
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- item.key in services_need_neutron_conf
- with_dict: "{{ neutron_services }}"
+ with_dict: "{{ neutron_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -136,24 +124,20 @@
dest: "{{ node_config_directory }}/{{ item.key }}/neutron_vpnaas.conf"
mode: "0660"
when:
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- item.key in services_need_neutron_vpnaas_conf
- with_dict: "{{ neutron_services }}"
+ with_dict: "{{ neutron_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
- name: Copying over ssh key
become: true
vars:
- neutron_server: "{{ neutron_services['neutron-server'] }}"
+ service: "{{ neutron_services['neutron-server'] }}"
template:
src: "id_rsa"
dest: "{{ node_config_directory }}/neutron-server/id_rsa"
mode: 0600
- when:
- - neutron_server.enabled | bool
- - neutron_server.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
- name: Copying over ml2_conf.ini
become: true
@@ -171,9 +155,7 @@
mode: "0660"
when:
- item.key in services_need_ml2_conf_ini
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- with_dict: "{{ neutron_services }}"
+ with_dict: "{{ neutron_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -181,6 +163,7 @@
become: true
vars:
service_name: "neutron-linuxbridge-agent"
+ service: "{{ neutron_services[service_name] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/linuxbridge_agent.ini.j2"
@@ -188,9 +171,7 @@
- "{{ node_custom_config }}/neutron/{{ inventory_hostname }}/linuxbridge_agent.ini"
dest: "{{ node_config_directory }}/{{ service_name }}/linuxbridge_agent.ini"
mode: "0660"
- when:
- - neutron_services[service_name].enabled | bool
- - neutron_services[service_name].host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ service_name }} container"
@@ -198,6 +179,7 @@
become: true
vars:
service_name: "neutron-openvswitch-agent"
+ service: "{{ neutron_services[service_name] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/openvswitch_agent.ini.j2"
@@ -205,9 +187,7 @@
- "{{ node_custom_config }}/neutron/{{ inventory_hostname }}/openvswitch_agent.ini"
dest: "{{ node_config_directory }}/{{ service_name }}/openvswitch_agent.ini"
mode: "0660"
- when:
- - neutron_services[service_name].enabled | bool
- - neutron_services[service_name].host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ service_name }} container"
@@ -215,7 +195,7 @@
become: true
vars:
service_name: "neutron-sriov-agent"
- neutron_sriov_agent: "{{ neutron_services[service_name] }}"
+ service: "{{ neutron_services[service_name] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/sriov_agent.ini.j2"
@@ -223,9 +203,7 @@
- "{{ node_custom_config }}/neutron/{{ inventory_hostname }}/sriov_agent.ini"
dest: "{{ node_config_directory }}/{{ service_name }}/sriov_agent.ini"
mode: "0660"
- when:
- - neutron_sriov_agent.enabled | bool
- - neutron_sriov_agent.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ service_name }} container"
@@ -233,7 +211,7 @@
become: true
vars:
service_name: "neutron-mlnx-agent"
- neutron_mlnx_agent: "{{ neutron_services[service_name] }}"
+ service: "{{ neutron_services[service_name] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/mlnx_agent.ini.j2"
@@ -241,9 +219,7 @@
- "{{ node_custom_config }}/neutron/{{ inventory_hostname }}/mlnx_agent.ini"
dest: "{{ node_config_directory }}/{{ service_name }}/mlnx_agent.ini"
mode: "0660"
- when:
- - neutron_mlnx_agent.enabled | bool
- - neutron_mlnx_agent.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ service_name }} container"
@@ -251,7 +227,7 @@
become: true
vars:
service_name: "neutron-eswitchd"
- neutron_eswitchd: "{{ neutron_services[service_name] }}"
+ service: "{{ neutron_services[service_name] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/eswitchd.conf.j2"
@@ -259,9 +235,7 @@
- "{{ node_custom_config }}/neutron/{{ inventory_hostname }}/eswitchd.conf"
dest: "{{ node_config_directory }}/{{ service_name }}/eswitchd.conf"
mode: "0660"
- when:
- - neutron_eswitchd.enabled | bool
- - neutron_eswitchd.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ service_name }} container"
@@ -269,7 +243,7 @@
become: true
vars:
service_name: "neutron-dhcp-agent"
- neutron_dhcp_agent: "{{ neutron_services[service_name] }}"
+ service: "{{ neutron_services[service_name] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/dhcp_agent.ini.j2"
@@ -277,9 +251,7 @@
- "{{ node_custom_config }}/neutron/{{ inventory_hostname }}/dhcp_agent.ini"
dest: "{{ node_config_directory }}/{{ service_name }}/dhcp_agent.ini"
mode: "0660"
- when:
- - neutron_dhcp_agent.enabled | bool
- - neutron_dhcp_agent.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ service_name }} container"
@@ -287,7 +259,7 @@
become: true
vars:
service_name: "neutron-dhcp-agent"
- neutron_dhcp_agent: "{{ neutron_services[service_name] }}"
+ service: "{{ neutron_services[service_name] }}"
template:
src: "{{ item }}"
dest: "{{ node_config_directory }}/{{ service_name }}/dnsmasq.conf"
@@ -296,9 +268,7 @@
- "{{ node_custom_config }}/neutron/{{ inventory_hostname }}/dnsmasq.conf"
- "{{ node_custom_config }}/neutron/dnsmasq.conf"
- "dnsmasq.conf.j2"
- when:
- - neutron_dhcp_agent.enabled | bool
- - neutron_dhcp_agent.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ service_name }} container"
@@ -317,9 +287,7 @@
mode: "0660"
when:
- item.key in services_need_l3_agent_ini
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- with_dict: "{{ neutron_services }}"
+ with_dict: "{{ neutron_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -339,9 +307,7 @@
when:
- enable_neutron_fwaas | bool
- item.key in services_need_fwaas_driver_ini
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- with_dict: "{{ neutron_services }}"
+ with_dict: "{{ neutron_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -349,16 +315,14 @@
become: true
vars:
service_name: "neutron-metadata-agent"
- neutron_metadata_agent: "{{ neutron_services[service_name] }}"
+ service: "{{ neutron_services[service_name] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/metadata_agent.ini.j2"
- "{{ node_custom_config }}/neutron/metadata_agent.ini"
dest: "{{ node_config_directory }}/{{ service_name }}/metadata_agent.ini"
mode: "0660"
- when:
- - neutron_metadata_agent.enabled | bool
- - neutron_metadata_agent.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ service_name }} container"
@@ -366,16 +330,14 @@
become: true
vars:
service_name: "neutron-ovn-metadata-agent"
- neutron_ovn_metadata_agent: "{{ neutron_services[service_name] }}"
+ service: "{{ neutron_services[service_name] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/neutron_ovn_metadata_agent.ini.j2"
- "{{ node_custom_config }}/neutron/neutron_ovn_metadata_agent.ini"
dest: "{{ node_config_directory }}/{{ service_name }}/neutron_ovn_metadata_agent.ini"
mode: "0660"
- when:
- - neutron_ovn_metadata_agent.enabled | bool
- - neutron_ovn_metadata_agent.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ service_name }} container"
@@ -383,16 +345,14 @@
become: true
vars:
service_name: "neutron-metering-agent"
- neutron_metering_agent: "{{ neutron_services[service_name] }}"
+ service: "{{ neutron_services[service_name] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/metering_agent.ini.j2"
- "{{ node_custom_config }}/neutron/metering_agent.ini"
dest: "{{ node_config_directory }}/{{ service_name }}/metering_agent.ini"
mode: "0660"
- when:
- - neutron_metering_agent.enabled | bool
- - neutron_metering_agent.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ service_name }} container"
@@ -400,16 +360,14 @@
become: true
vars:
service_name: "ironic-neutron-agent"
- ironic_neutron_agent: "{{ neutron_services[service_name] }}"
+ service: "{{ neutron_services[service_name] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/ironic_neutron_agent.ini.j2"
- "{{ node_custom_config }}/neutron/ironic_neutron_agent.ini"
dest: "{{ node_config_directory }}/{{ service_name }}/ironic_neutron_agent.ini"
mode: "0660"
- when:
- - ironic_neutron_agent.enabled | bool
- - ironic_neutron_agent.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ service_name }} container"
@@ -417,16 +375,14 @@
become: true
vars:
service_name: "neutron-bgp-dragent"
- neutron_bgp_dragent: "{{ neutron_services[service_name] }}"
+ service: "{{ neutron_services[service_name] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/bgp_dragent.ini.j2"
- "{{ node_custom_config }}/neutron/bgp_dragent.ini"
dest: "{{ node_config_directory }}/{{ service_name }}/bgp_dragent.ini"
mode: "0660"
- when:
- - neutron_bgp_dragent.enabled | bool
- - neutron_bgp_dragent.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ service_name }} container"
@@ -434,16 +390,14 @@
become: true
vars:
service_name: "neutron-ovn-agent"
- neutron_ovn_agent: "{{ neutron_services[service_name] }}"
+ service: "{{ neutron_services[service_name] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/ovn_agent.ini.j2"
- "{{ node_custom_config }}/neutron/ovn_agent.ini"
dest: "{{ node_config_directory }}/{{ service_name }}/ovn_agent.ini"
mode: "0660"
- when:
- - neutron_ovn_agent.enabled | bool
- - neutron_ovn_agent.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ service_name }} container"
@@ -451,7 +405,7 @@
become: true
vars:
service_name: "neutron-server"
- neutron_server: "{{ neutron_services[service_name] }}"
+ service: "{{ neutron_services[service_name] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/nsx.ini.j2"
@@ -460,8 +414,7 @@
dest: "{{ node_config_directory }}/{{ service_name }}/nsx.ini"
mode: "0660"
when:
- - neutron_server.enabled | bool
- - neutron_server.host_in_groups | bool
+ - service | service_enabled_and_mapped_to_host
- neutron_plugin_agent in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_nsxp', 'vmware_dvs']
notify:
- "Restart {{ service_name }} container"
@@ -475,9 +428,7 @@
src: neutron-l3-agent-wrapper.sh.j2
dest: "{{ node_config_directory }}/{{ service_name }}/neutron-l3-agent-wrapper.sh"
mode: "0770"
- when:
- - service.enabled | bool
- - service.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ service_name }} container"
@@ -506,7 +457,7 @@
- name: Copying over neutron-tls-proxy.cfg
vars:
- neutron_tls_proxy: "{{ neutron_services['neutron-tls-proxy'] }}"
+ service: "{{ neutron_services['neutron-tls-proxy'] }}"
template:
src: "{{ item }}"
dest: "{{ node_config_directory }}/neutron-tls-proxy/neutron-tls-proxy.cfg"
@@ -516,9 +467,7 @@
- "{{ node_custom_config }}/neutron/{{ inventory_hostname }}/neutron-tls-proxy.cfg"
- "{{ node_custom_config }}/neutron/neutron-tls-proxy.cfg"
- "neutron-tls-proxy.cfg.j2"
- when:
- - neutron_tls_proxy.enabled | bool
- - neutron_tls_proxy.host_in_groups | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart neutron-tls-proxy container
@@ -538,9 +487,7 @@
mode: "0660"
when:
- enable_neutron_taas | bool
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- item.key in services_need_neutron_taas_conf
- with_dict: "{{ neutron_services }}"
+ with_dict: "{{ neutron_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/neutron/tasks/neutron_plugin_agent_check.yml b/ansible/roles/neutron/tasks/neutron_plugin_agent_check.yml
index 931a2c5f4..8fa64093f 100644
--- a/ansible/roles/neutron/tasks/neutron_plugin_agent_check.yml
+++ b/ansible/roles/neutron/tasks/neutron_plugin_agent_check.yml
@@ -2,6 +2,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- neutron_openvswitch_agent
diff --git a/ansible/roles/neutron/tasks/precheck.yml b/ansible/roles/neutron/tasks/precheck.yml
index 8051a5399..74f1eabc2 100644
--- a/ansible/roles/neutron/tasks/precheck.yml
+++ b/ansible/roles/neutron/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- neutron_server
diff --git a/ansible/roles/neutron/tasks/rolling_upgrade.yml b/ansible/roles/neutron/tasks/rolling_upgrade.yml
index e5fb3a53f..d0a98f94a 100644
--- a/ansible/roles/neutron/tasks/rolling_upgrade.yml
+++ b/ansible/roles/neutron/tasks/rolling_upgrade.yml
@@ -45,8 +45,8 @@
- name: Stopping all neutron-server for contract db
vars:
- neutron_server: "{{ neutron_services['neutron-server'] }}"
- first_neutron_server_host: "{{ groups[neutron_server.group][0] }}"
+ service: "{{ neutron_services['neutron-server'] }}"
+ first_neutron_server_host: "{{ groups[service.group][0] }}"
results_of_check_pending_contract_scripts: "{{ hostvars[first_neutron_server_host]['neutron_check_contract_db_stdout'] }}"
# NOTE(hrw): no idea
filter_rc: "results[?rc!=`0`]"
@@ -55,9 +55,9 @@
kolla_container:
action: "stop_container"
common_options: "{{ docker_common_options }}"
- name: "{{ neutron_server.container_name }}"
+ name: "{{ service.container_name }}"
when:
- - neutron_server.host_in_groups | bool
+ - service.host_in_groups | bool
- is_stop_neutron_server | length > 0
notify:
- "Restart neutron-server container"
diff --git a/ansible/roles/neutron/templates/linuxbridge_agent.ini.j2 b/ansible/roles/neutron/templates/linuxbridge_agent.ini.j2
index 1dbaae0ed..5b0ae990b 100644
--- a/ansible/roles/neutron/templates/linuxbridge_agent.ini.j2
+++ b/ansible/roles/neutron/templates/linuxbridge_agent.ini.j2
@@ -5,7 +5,8 @@ extensions = {{ neutron_agent_extensions|map(attribute='name')|join(',') }}
[linux_bridge]
{% if inventory_hostname in groups["network"] or (inventory_hostname in groups["compute"] and computes_need_external_bridge | bool ) %}
-physical_interface_mappings = {% for interface in neutron_external_interface.split(',') %}physnet{{ loop.index0 + 1 }}:{{ interface }}{% if not loop.last %},{% endif %}{% endfor %}
+{# Format: physnet1:br1,physnet2:br2 #}
+physical_interface_mappings = {{ neutron_physical_networks.split(',') | zip(neutron_external_interface.split(',')) | map('join', ':') | join(',') }}
{% endif %}
[securitygroup]
diff --git a/ansible/roles/neutron/templates/ml2_conf.ini.j2 b/ansible/roles/neutron/templates/ml2_conf.ini.j2
index 9c70eb898..0e3447769 100644
--- a/ansible/roles/neutron/templates/ml2_conf.ini.j2
+++ b/ansible/roles/neutron/templates/ml2_conf.ini.j2
@@ -15,7 +15,7 @@ extension_drivers = {{ neutron_extension_drivers | map(attribute='name') | join(
[ml2_type_vlan]
{% if enable_ironic | bool %}
-network_vlan_ranges = physnet1
+network_vlan_ranges = {{ neutron_physical_networks }}
{% else %}
network_vlan_ranges =
{% endif %}
@@ -24,7 +24,7 @@ network_vlan_ranges =
{% if enable_ironic | bool %}
flat_networks = *
{% else %}
-flat_networks = {% for interface in neutron_external_interface.split(',') %}physnet{{ loop.index0 + 1 }}{% if not loop.last %},{% endif %}{% endfor %}
+flat_networks = {{ neutron_physical_networks }}
{% endif %}
[ml2_type_vxlan]
diff --git a/ansible/roles/neutron/templates/openvswitch_agent.ini.j2 b/ansible/roles/neutron/templates/openvswitch_agent.ini.j2
index 88834e2de..8ac25af7e 100644
--- a/ansible/roles/neutron/templates/openvswitch_agent.ini.j2
+++ b/ansible/roles/neutron/templates/openvswitch_agent.ini.j2
@@ -15,7 +15,8 @@ firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewal
[ovs]
{% if inventory_hostname in groups["network"] or (inventory_hostname in groups["compute"] and computes_need_external_bridge | bool ) %}
-bridge_mappings = {% for bridge in neutron_bridge_name.split(',') %}physnet{{ loop.index0 + 1 }}:{{ bridge }}{% if not loop.last %},{% endif %}{% endfor %}
+{# Format: physnet1:br1,physnet2:br2 #}
+bridge_mappings = {{ neutron_physical_networks.split(',') | zip(neutron_bridge_name.split(',')) | map('join', ':') | join(',') }}
{% endif %}
datapath_type = {{ ovs_datapath }}
ovsdb_connection = tcp:127.0.0.1:{{ ovsdb_port }}
diff --git a/ansible/roles/nova-cell/defaults/main.yml b/ansible/roles/nova-cell/defaults/main.yml
index f22b808f9..770cd56de 100644
--- a/ansible/roles/nova-cell/defaults/main.yml
+++ b/ansible/roles/nova-cell/defaults/main.yml
@@ -223,36 +223,36 @@ nova_cell_notify_rabbitmq_users:
####################
nova_tag: "{{ openstack_tag }}"
-nova_libvirt_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/nova-libvirt"
+nova_libvirt_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-libvirt"
nova_libvirt_tag: "{{ nova_tag }}"
nova_libvirt_image_full: "{{ nova_libvirt_image }}:{{ nova_libvirt_tag }}"
nova_libvirt_cpu_mode: "{{ 'host-passthrough' if ansible_facts.architecture == 'aarch64' else '' }}"
-nova_ssh_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/nova-ssh"
+nova_ssh_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-ssh"
nova_ssh_tag: "{{ nova_tag }}"
nova_ssh_image_full: "{{ nova_ssh_image }}:{{ nova_ssh_tag }}"
-nova_novncproxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/nova-novncproxy"
+nova_novncproxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-novncproxy"
nova_novncproxy_tag: "{{ nova_tag }}"
nova_novncproxy_image_full: "{{ nova_novncproxy_image }}:{{ nova_novncproxy_tag }}"
-nova_spicehtml5proxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/nova-spicehtml5proxy"
+nova_spicehtml5proxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-spicehtml5proxy"
nova_spicehtml5proxy_tag: "{{ nova_tag }}"
nova_spicehtml5proxy_image_full: "{{ nova_spicehtml5proxy_image }}:{{ nova_spicehtml5proxy_tag }}"
-nova_serialproxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/nova-serialproxy"
+nova_serialproxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-serialproxy"
nova_serialproxy_tag: "{{ nova_tag }}"
nova_serialproxy_image_full: "{{ nova_serialproxy_image }}:{{ nova_serialproxy_tag }}"
-nova_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/nova-conductor"
+nova_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-conductor"
nova_conductor_tag: "{{ nova_tag }}"
nova_conductor_image_full: "{{ nova_conductor_image }}:{{ nova_conductor_tag }}"
-nova_compute_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/nova-compute"
+nova_compute_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-compute"
nova_compute_tag: "{{ nova_tag }}"
nova_compute_image_full: "{{ nova_compute_image }}:{{ nova_compute_tag }}"
-nova_compute_ironic_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/nova-compute-ironic"
+nova_compute_ironic_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-compute-ironic"
nova_compute_ironic_tag: "{{ nova_tag }}"
nova_compute_ironic_image_full: "{{ nova_compute_ironic_image }}:{{ nova_compute_ironic_tag }}"
@@ -380,7 +380,6 @@ nova_libvirt_default_volumes:
- "{{ nova_instance_datadir_volume }}:/var/lib/nova/"
- "{% if enable_shared_var_lib_nova_mnt | bool %}/var/lib/nova/mnt:/var/lib/nova/mnt:shared{% endif %}"
- "nova_libvirt_qemu:/etc/libvirt/qemu"
- - "nova_libvirt_secrets:/etc/libvirt/secrets"
- "{{ kolla_dev_repos_directory ~ '/nova/nova:/var/lib/kolla/venv/lib/python' ~ distro_python_version ~ '/site-packages/nova' if nova_dev_mode | bool else '' }}"
nova_ssh_default_volumes:
- "{{ node_config_directory }}/nova-ssh/:{{ container_config_directory }}/:ro"
diff --git a/ansible/roles/nova-cell/tasks/check-containers.yml b/ansible/roles/nova-cell/tasks/check-containers.yml
index 4860124e1..93452874a 100644
--- a/ansible/roles/nova-cell/tasks/check-containers.yml
+++ b/ansible/roles/nova-cell/tasks/check-containers.yml
@@ -14,9 +14,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ nova_cell_services }}"
+ with_dict: "{{ nova_cell_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/nova-cell/tasks/config-libvirt-tls.yml b/ansible/roles/nova-cell/tasks/config-libvirt-tls.yml
index d8a1d9442..0e1891c41 100644
--- a/ansible/roles/nova-cell/tasks/config-libvirt-tls.yml
+++ b/ansible/roles/nova-cell/tasks/config-libvirt-tls.yml
@@ -1,46 +1,29 @@
---
-- name: Copying over libvirt TLS keys (nova-libvirt)
+- name: Copying over libvirt TLS keys to services
become: true
vars:
- service: "{{ nova_cell_services['nova-libvirt'] }}"
- service_name: nova-libvirt
+ services:
+ - "nova-compute"
+ - "nova-libvirt"
+ key_files:
+ - cacert.pem
+ - clientcert.pem
+ - clientkey.pem
+ - servercert.pem
+ - serverkey.pem
+ service_name: "{{ item[0] }}"
+ filename: "{{ item[1] }}"
paths:
- - "{{ node_custom_config }}/nova/nova-libvirt/{{ inventory_hostname }}/{{ item }}"
- - "{{ node_custom_config }}/nova/nova-libvirt/{{ item }}"
+ - "{{ node_custom_config }}/nova/nova-libvirt/{{ inventory_hostname }}/{{ filename }}"
+ - "{{ node_custom_config }}/nova/nova-libvirt/{{ filename }}"
+ service: "{{ nova_cell_services[service_name] }}"
copy:
src: "{{ lookup('first_found', paths) }}"
- dest: "{{ node_config_directory }}/{{ service_name }}/{{ item }}"
+ dest: "{{ node_config_directory }}/{{ service_name }}/{{ filename }}"
mode: "0600"
when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
- with_items:
- - cacert.pem
- - servercert.pem
- - serverkey.pem
- - clientcert.pem
- - clientkey.pem
+ - service | service_enabled_and_mapped_to_host
+ - not (service_name == 'nova-compute' and (filename == 'servercert.pem' or filename == 'serverkey.pem'))
+ loop: "{{ services | product(key_files) | list }}"
notify:
- - Restart {{ service_name }} container
-
-- name: Copying over libvirt TLS keys (nova-compute)
- become: true
- vars:
- service: "{{ nova_cell_services['nova-compute'] }}"
- service_name: nova-compute
- paths:
- - "{{ node_custom_config }}/nova/nova-libvirt/{{ inventory_hostname }}/{{ item }}"
- - "{{ node_custom_config }}/nova/nova-libvirt/{{ item }}"
- copy:
- src: "{{ lookup('first_found', paths) }}"
- dest: "{{ node_config_directory }}/{{ service_name }}/{{ item }}"
- mode: "0600"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
- with_items:
- - cacert.pem
- - clientcert.pem
- - clientkey.pem
- notify:
- - Restart {{ service_name }} container
+ - Restart {{service_name }} container
diff --git a/ansible/roles/nova-cell/tasks/config.yml b/ansible/roles/nova-cell/tasks/config.yml
index 1618652bf..a4e937b3b 100644
--- a/ansible/roles/nova-cell/tasks/config.yml
+++ b/ansible/roles/nova-cell/tasks/config.yml
@@ -7,10 +7,7 @@
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
mode: "0770"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ nova_cell_services }}"
+ with_dict: "{{ nova_cell_services | select_services_enabled_and_mapped_to_host }}"
- include_tasks: copy-certs.yml
when:
@@ -59,10 +56,7 @@
src: "{{ item.key }}.json.j2"
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ nova_cell_services }}"
+ with_dict: "{{ nova_cell_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -81,10 +75,8 @@
dest: "{{ node_config_directory }}/{{ item.key }}/nova.conf"
mode: "0660"
when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- item.key in nova_cell_services_require_nova_conf
- with_dict: "{{ nova_cell_services }}"
+ with_dict: "{{ nova_cell_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -97,9 +89,8 @@
dest: "{{ node_config_directory }}/nova-compute/provider_config.yaml"
mode: "0660"
when:
- - inventory_hostname in groups[service.group]
+ - service | service_enabled_and_mapped_to_host
- nova_cell_compute_provider_config is defined
- - service.enabled | bool
notify:
- Restart nova-compute container
@@ -111,9 +102,7 @@
src: "{{ item.src }}"
dest: "{{ node_config_directory }}/nova-libvirt/{{ item.dest }}"
mode: "0660"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_items:
- { src: "qemu.conf.j2", dest: "qemu.conf" }
- { src: "libvirtd.conf.j2", dest: "libvirtd.conf" }
@@ -138,8 +127,7 @@
mode: "0660"
when:
- libvirt_enable_sasl | bool
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
with_items:
- { src: "auth.conf.j2", dest: "auth.conf", service: "nova-compute" }
- { src: "auth.conf.j2", dest: "auth.conf", service: "nova-libvirt" }
@@ -155,9 +143,7 @@
src: "{{ item.src }}"
dest: "{{ node_config_directory }}/nova-ssh/{{ item.dest }}"
mode: "0660"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_items:
- { src: "sshd_config.j2", dest: "sshd_config" }
- { src: "id_rsa", dest: "id_rsa" }
@@ -176,8 +162,7 @@
when:
- nova_compute_virt_type == "vmware"
- not vmware_vcenter_insecure | bool
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
notify:
- Restart nova-compute container
@@ -194,9 +179,7 @@
- "{{ node_custom_config }}/nova_compute/release"
- "{{ node_custom_config }}/nova/release"
skip: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart nova-compute container
@@ -209,9 +192,7 @@
dest: "{{ node_config_directory }}/nova-compute/hostnqn"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart nova-compute container
@@ -222,11 +203,9 @@
dest: "{{ node_config_directory }}/{{ item.key }}/{{ nova_policy_file }}"
mode: "0660"
when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- nova_policy_file is defined
- item.key in nova_cell_services_require_policy_json
- with_dict: "{{ nova_cell_services }}"
+ with_dict: "{{ nova_cell_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -240,8 +219,7 @@
become: True
when:
- vendordata_file_path is defined
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
notify:
- "Restart {{ item }} container"
with_items:
diff --git a/ansible/roles/nova-cell/tasks/deploy.yml b/ansible/roles/nova-cell/tasks/deploy.yml
index beecc7d44..adb73caab 100644
--- a/ansible/roles/nova-cell/tasks/deploy.yml
+++ b/ansible/roles/nova-cell/tasks/deploy.yml
@@ -35,3 +35,5 @@
# and there is a cell conductor in the inventory to delegate to.
- all_computes_in_batch | length > 0
- groups[nova_cell_conductor_group] | length > 0
+
+- import_tasks: post-config.yml
diff --git a/ansible/roles/nova-cell/tasks/external_ceph.yml b/ansible/roles/nova-cell/tasks/external_ceph.yml
index b1b0d2ca0..332e70020 100644
--- a/ansible/roles/nova-cell/tasks/external_ceph.yml
+++ b/ansible/roles/nova-cell/tasks/external_ceph.yml
@@ -98,8 +98,7 @@
- nova-compute
- nova-libvirt
when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- nova_backend == "rbd"
notify:
- Restart {{ item }} container
@@ -146,8 +145,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[service.group]
+ when: service | service_enabled_and_mapped_to_host
- name: Pushing nova secret xml for libvirt
vars:
@@ -159,9 +157,7 @@
group: "{{ config_owner_group }}"
mode: "0600"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - item.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_items:
- uuid: "{{ rbd_secret_uuid }}"
name: "client.nova secret"
@@ -182,7 +178,7 @@
mode: "0600"
become: true
when:
- - inventory_hostname in groups[service.group]
+ - service | service_enabled_and_mapped_to_host
- item.enabled | bool
- external_ceph_cephx_enabled | bool
with_items:
diff --git a/ansible/roles/nova-cell/tasks/libvirt-cleanup.yml b/ansible/roles/nova-cell/tasks/libvirt-cleanup.yml
index 95fb670b5..2a61585e8 100644
--- a/ansible/roles/nova-cell/tasks/libvirt-cleanup.yml
+++ b/ansible/roles/nova-cell/tasks/libvirt-cleanup.yml
@@ -9,6 +9,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- nova_libvirt
diff --git a/ansible/roles/nova-cell/tasks/post-config.yml b/ansible/roles/nova-cell/tasks/post-config.yml
new file mode 100644
index 000000000..804b5da14
--- /dev/null
+++ b/ansible/roles/nova-cell/tasks/post-config.yml
@@ -0,0 +1,8 @@
+---
+# TODO(kevko) Remove in E cycle
+- name: Remove old nova_libvirt_secrets container volume
+ become: true
+ kolla_container:
+ container_engine: "{{ kolla_container_engine }}"
+ action: "remove_volume"
+ name: nova_libvirt_secrets
diff --git a/ansible/roles/nova-cell/tasks/precheck.yml b/ansible/roles/nova-cell/tasks/precheck.yml
index dcb11eade..410debff0 100644
--- a/ansible/roles/nova-cell/tasks/precheck.yml
+++ b/ansible/roles/nova-cell/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- nova_libvirt
@@ -30,7 +31,7 @@
- name: Checking free port for Nova NoVNC Proxy
vars:
- nova_novncproxy: "{{ nova_cell_services['nova-novncproxy'] }}"
+ service: "{{ nova_cell_services['nova-novncproxy'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ nova_novncproxy_listen_port }}"
@@ -39,12 +40,11 @@
state: stopped
when:
- container_facts['nova_novncproxy'] is not defined
- - nova_novncproxy.enabled | bool
- - inventory_hostname in groups[nova_novncproxy.group]
+ - service | service_enabled_and_mapped_to_host
- name: Checking free port for Nova Serial Proxy
vars:
- nova_serialproxy: "{{ nova_cell_services['nova-serialproxy'] }}"
+ service: "{{ nova_cell_services['nova-serialproxy'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ nova_serialproxy_listen_port }}"
@@ -53,12 +53,11 @@
state: stopped
when:
- container_facts['nova_serialproxy'] is not defined
- - nova_serialproxy.enabled | bool
- - inventory_hostname in groups[nova_serialproxy.group]
+ - service | service_enabled_and_mapped_to_host
- name: Checking free port for Nova Spice HTML5 Proxy
vars:
- nova_spicehtml5proxy: "{{ nova_cell_services['nova-spicehtml5proxy'] }}"
+ service: "{{ nova_cell_services['nova-spicehtml5proxy'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ nova_spicehtml5proxy_listen_port }}"
@@ -67,12 +66,11 @@
state: stopped
when:
- container_facts['nova_spicehtml5proxy'] is not defined
- - nova_spicehtml5proxy.enabled | bool
- - inventory_hostname in groups[nova_spicehtml5proxy.group]
+ - service | service_enabled_and_mapped_to_host
- name: Checking free port for Nova SSH (API interface)
vars:
- nova_ssh: "{{ nova_cell_services['nova-ssh'] }}"
+ service: "{{ nova_cell_services['nova-ssh'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ nova_ssh_port }}"
@@ -81,12 +79,11 @@
state: stopped
when:
- container_facts['nova_ssh'] is not defined
- - nova_ssh.enabled | bool
- - inventory_hostname in groups[nova_ssh.group]
+ - service | service_enabled_and_mapped_to_host
- name: Checking free port for Nova SSH (migration interface)
vars:
- nova_ssh: "{{ nova_cell_services['nova-ssh'] }}"
+ service: "{{ nova_cell_services['nova-ssh'] }}"
wait_for:
host: "{{ migration_interface_address }}"
port: "{{ nova_ssh_port }}"
@@ -96,12 +93,11 @@
when:
- migration_interface_address != api_interface_address
- container_facts['nova_ssh'] is not defined
- - nova_ssh.enabled | bool
- - inventory_hostname in groups[nova_ssh.group]
+ - service | service_enabled_and_mapped_to_host
- name: Checking free port for Nova Libvirt
vars:
- nova_libvirt: "{{ nova_cell_services['nova-libvirt'] }}"
+ service: "{{ nova_cell_services['nova-libvirt'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ nova_libvirt_port }}"
@@ -110,19 +106,17 @@
state: stopped
when:
- container_facts['nova_libvirt'] is not defined
- - nova_libvirt.enabled | bool
- - inventory_hostname in groups[nova_libvirt.group]
+ - service | service_enabled_and_mapped_to_host
- name: Checking that host libvirt is not running
vars:
- nova_libvirt: "{{ nova_cell_services['nova-libvirt'] }}"
+ service: "{{ nova_cell_services['nova-libvirt'] }}"
stat: path=/var/run/libvirt/libvirt-sock
register: result
failed_when: result.stat.exists
when:
- container_facts['nova_libvirt'] is not defined
- - nova_libvirt.enabled | bool
- - inventory_hostname in groups[nova_libvirt.group]
+ - service | service_enabled_and_mapped_to_host
- name: Checking that nova_libvirt container is not running
vars:
diff --git a/ansible/roles/nova-cell/tasks/reload.yml b/ansible/roles/nova-cell/tasks/reload.yml
index 7f61efb30..5724effdf 100644
--- a/ansible/roles/nova-cell/tasks/reload.yml
+++ b/ansible/roles/nova-cell/tasks/reload.yml
@@ -36,6 +36,5 @@
healthcheck: "{{ service.healthcheck | default(omit) }}"
when:
- kolla_action == 'upgrade'
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
with_items: "{{ nova_cell_services_require_nova_conf }}"
diff --git a/ansible/roles/nova-cell/tasks/rolling_upgrade.yml b/ansible/roles/nova-cell/tasks/rolling_upgrade.yml
index b1637ad8a..928e8763a 100644
--- a/ansible/roles/nova-cell/tasks/rolling_upgrade.yml
+++ b/ansible/roles/nova-cell/tasks/rolling_upgrade.yml
@@ -14,3 +14,5 @@
- name: Flush handlers
meta: flush_handlers
+
+- import_tasks: post-config.yml
diff --git a/ansible/roles/nova-cell/tasks/upgrade.yml b/ansible/roles/nova-cell/tasks/upgrade.yml
index 46926af6c..b9a8c3556 100644
--- a/ansible/roles/nova-cell/tasks/upgrade.yml
+++ b/ansible/roles/nova-cell/tasks/upgrade.yml
@@ -5,12 +5,10 @@
action: "stop_container"
common_options: "{{ docker_common_options }}"
name: "{{ item.value.container_name }}"
- with_dict: "{{ nova_cell_services }}"
+ with_dict: "{{ nova_cell_services | select_services_enabled_and_mapped_to_host }}"
when:
- "'nova-compute' not in item.key"
- item.key in nova_cell_services_require_nova_conf
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- nova_safety_upgrade | bool
- import_tasks: rolling_upgrade.yml
diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml
index b571abb90..9f80b711c 100644
--- a/ansible/roles/nova/defaults/main.yml
+++ b/ansible/roles/nova/defaults/main.yml
@@ -105,15 +105,15 @@ nova_database_shard:
####################
nova_tag: "{{ openstack_tag }}"
-nova_super_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/nova-conductor"
+nova_super_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-conductor"
nova_super_conductor_tag: "{{ nova_tag }}"
nova_super_conductor_image_full: "{{ nova_super_conductor_image }}:{{ nova_super_conductor_tag }}"
-nova_scheduler_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/nova-scheduler"
+nova_scheduler_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-scheduler"
nova_scheduler_tag: "{{ nova_tag }}"
nova_scheduler_image_full: "{{ nova_scheduler_image }}:{{ nova_scheduler_tag }}"
-nova_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/nova-api"
+nova_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-api"
nova_api_tag: "{{ nova_tag }}"
nova_api_image_full: "{{ nova_api_image }}:{{ nova_api_tag }}"
diff --git a/ansible/roles/nova/tasks/check-containers.yml b/ansible/roles/nova/tasks/check-containers.yml
index b03d89e67..f1b6e1817 100644
--- a/ansible/roles/nova/tasks/check-containers.yml
+++ b/ansible/roles/nova/tasks/check-containers.yml
@@ -13,9 +13,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ nova_services }}"
+ with_dict: "{{ nova_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/nova/tasks/config.yml b/ansible/roles/nova/tasks/config.yml
index 48094c3f9..8e53d79f7 100644
--- a/ansible/roles/nova/tasks/config.yml
+++ b/ansible/roles/nova/tasks/config.yml
@@ -7,10 +7,7 @@
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
mode: "0770"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ nova_services }}"
+ with_dict: "{{ nova_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -54,10 +51,7 @@
src: "{{ item.key }}.json.j2"
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ nova_services }}"
+ with_dict: "{{ nova_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -74,10 +68,7 @@
- "{{ node_custom_config }}/nova/{{ inventory_hostname }}/nova.conf"
dest: "{{ node_config_directory }}/{{ item.key }}/nova.conf"
mode: "0660"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ nova_services }}"
+ with_dict: "{{ nova_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -88,23 +79,21 @@
dest: "{{ node_config_directory }}/{{ item.key }}/{{ nova_policy_file }}"
mode: "0660"
when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- nova_policy_file is defined
- item.key in nova_services_require_policy_json
- with_dict: "{{ nova_services }}"
+ with_dict: "{{ nova_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
- name: Copying over nova-api-wsgi.conf
+ vars:
+ service: "{{ nova_services['nova-api'] }}"
template:
src: "nova-api-wsgi.conf.j2"
dest: "{{ node_config_directory }}/nova-api/nova-api-wsgi.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups["nova-api"]
- - nova_services["nova-api"].enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- "Restart nova-api container"
@@ -118,7 +107,6 @@
become: True
when:
- vendordata_file_path is defined
- - inventory_hostname in groups[service['group']]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
notify:
- "Restart nova-api container"
diff --git a/ansible/roles/nova/tasks/precheck.yml b/ansible/roles/nova/tasks/precheck.yml
index b09fbfdd9..ee68197c3 100644
--- a/ansible/roles/nova/tasks/precheck.yml
+++ b/ansible/roles/nova/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- nova_api
@@ -16,7 +17,7 @@
- name: Checking free port for Nova API
vars:
- nova_api: "{{ nova_services['nova-api'] }}"
+ service: "{{ nova_services['nova-api'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ nova_api_listen_port }}"
@@ -25,12 +26,11 @@
state: stopped
when:
- container_facts['nova_api'] is not defined
- - inventory_hostname in groups[nova_api.group]
- - nova_api.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- name: Checking free port for Nova Metadata
vars:
- nova_api: "{{ nova_services['nova-api'] }}"
+ service: "{{ nova_services['nova-api'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ nova_metadata_listen_port }}"
@@ -39,5 +39,4 @@
state: stopped
when:
- container_facts['nova_api'] is not defined
- - inventory_hostname in groups[nova_api.group]
- - nova_api.enabled | bool
+ - service | service_enabled_and_mapped_to_host
diff --git a/ansible/roles/nova/tasks/reload_api.yml b/ansible/roles/nova/tasks/reload_api.yml
index f1813edec..10111dcdf 100644
--- a/ansible/roles/nova/tasks/reload_api.yml
+++ b/ansible/roles/nova/tasks/reload_api.yml
@@ -17,8 +17,7 @@
healthcheck: "{{ service.healthcheck | default(omit) }}"
when:
- kolla_action == 'upgrade'
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
with_items:
- nova-scheduler
- nova-api
diff --git a/ansible/roles/nova/tasks/reload_super_conductor.yml b/ansible/roles/nova/tasks/reload_super_conductor.yml
index e9b10b9a9..58fe18aac 100644
--- a/ansible/roles/nova/tasks/reload_super_conductor.yml
+++ b/ansible/roles/nova/tasks/reload_super_conductor.yml
@@ -17,5 +17,4 @@
healthcheck: "{{ service.healthcheck | default(omit) }}"
when:
- kolla_action == 'upgrade'
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
diff --git a/ansible/roles/nova/tasks/upgrade.yml b/ansible/roles/nova/tasks/upgrade.yml
index f60489f4a..b70c77d57 100644
--- a/ansible/roles/nova/tasks/upgrade.yml
+++ b/ansible/roles/nova/tasks/upgrade.yml
@@ -44,10 +44,8 @@
action: "stop_container"
common_options: "{{ docker_common_options }}"
name: "{{ item.value.container_name }}"
- with_dict: "{{ nova_services }}"
+ with_dict: "{{ nova_services | select_services_enabled_and_mapped_to_host }}"
when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- nova_safety_upgrade | bool
- import_tasks: rolling_upgrade.yml
diff --git a/ansible/roles/octavia/defaults/main.yml b/ansible/roles/octavia/defaults/main.yml
index f7f9e6170..fa8c78063 100644
--- a/ansible/roles/octavia/defaults/main.yml
+++ b/ansible/roles/octavia/defaults/main.yml
@@ -106,23 +106,23 @@ octavia_database_shard:
####################
octavia_tag: "{{ openstack_tag }}"
-octavia_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/octavia-api"
+octavia_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}octavia-api"
octavia_api_tag: "{{ octavia_tag }}"
octavia_api_image_full: "{{ octavia_api_image }}:{{ octavia_api_tag }}"
-octavia_driver_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/octavia-driver-agent"
+octavia_driver_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}octavia-driver-agent"
octavia_driver_agent_tag: "{{ octavia_tag }}"
octavia_driver_agent_image_full: "{{ octavia_driver_agent_image }}:{{ octavia_driver_agent_tag }}"
-octavia_health_manager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/octavia-health-manager"
+octavia_health_manager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}octavia-health-manager"
octavia_health_manager_tag: "{{ octavia_tag }}"
octavia_health_manager_image_full: "{{ octavia_health_manager_image }}:{{ octavia_health_manager_tag }}"
-octavia_housekeeping_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/octavia-housekeeping"
+octavia_housekeeping_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}octavia-housekeeping"
octavia_housekeeping_tag: "{{ octavia_tag }}"
octavia_housekeeping_image_full: "{{ octavia_housekeeping_image }}:{{ octavia_housekeeping_tag }}"
-octavia_worker_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/octavia-worker"
+octavia_worker_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}octavia-worker"
octavia_worker_tag: "{{ octavia_tag }}"
octavia_worker_image_full: "{{ octavia_worker_image }}:{{ octavia_worker_tag }}"
diff --git a/ansible/roles/octavia/tasks/check-containers.yml b/ansible/roles/octavia/tasks/check-containers.yml
index a29016511..ac4244ed6 100644
--- a/ansible/roles/octavia/tasks/check-containers.yml
+++ b/ansible/roles/octavia/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ octavia_services }}"
+ with_dict: "{{ octavia_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/octavia/tasks/config.yml b/ansible/roles/octavia/tasks/config.yml
index ae370541f..48044bc58 100644
--- a/ansible/roles/octavia/tasks/config.yml
+++ b/ansible/roles/octavia/tasks/config.yml
@@ -10,10 +10,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ octavia_services }}"
+ with_dict: "{{ octavia_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -42,9 +39,7 @@
become: true
when:
- octavia_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ octavia_services }}"
+ with_dict: "{{ octavia_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -58,10 +53,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ octavia_services }}"
+ with_dict: "{{ octavia_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -77,9 +69,7 @@
- "{{ node_custom_config }}/octavia/{{ inventory_hostname }}/octavia-wsgi.conf"
- "{{ node_custom_config }}/octavia/octavia-wsgi.conf"
- "octavia-wsgi.conf.j2"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart octavia-api container
@@ -96,10 +86,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/octavia.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ octavia_services }}"
+ with_dict: "{{ octavia_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -125,9 +112,7 @@
dest: "{{ node_config_directory }}/octavia-worker/{{ item }}"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_items: "{{ octavia_amphora_keys }}"
notify:
- Restart octavia-worker container
@@ -140,9 +125,7 @@
dest: "{{ node_config_directory }}/octavia-housekeeping/{{ item }}"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_items: "{{ octavia_amphora_keys }}"
notify:
- Restart octavia-housekeeping container
@@ -155,9 +138,7 @@
dest: "{{ node_config_directory }}/octavia-health-manager/{{ item }}"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_items: "{{ octavia_amphora_keys }}"
notify:
- Restart octavia-health-manager container
diff --git a/ansible/roles/octavia/tasks/precheck.yml b/ansible/roles/octavia/tasks/precheck.yml
index c05be8073..be672853e 100644
--- a/ansible/roles/octavia/tasks/precheck.yml
+++ b/ansible/roles/octavia/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- octavia_api
diff --git a/ansible/roles/opensearch/defaults/main.yml b/ansible/roles/opensearch/defaults/main.yml
index da66a9d31..5d419e0b4 100644
--- a/ansible/roles/opensearch/defaults/main.yml
+++ b/ansible/roles/opensearch/defaults/main.yml
@@ -129,11 +129,11 @@ opensearch_dashboards_opensearch_ssl_verify: true
####################
# Docker
####################
-opensearch_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/opensearch"
+opensearch_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}opensearch"
opensearch_tag: "{{ openstack_tag }}"
opensearch_image_full: "{{ opensearch_image }}:{{ opensearch_tag }}"
-opensearch_dashboards_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/opensearch-dashboards"
+opensearch_dashboards_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}opensearch-dashboards"
opensearch_dashboards_tag: "{{ opensearch_tag }}"
opensearch_dashboards_image_full: "{{ opensearch_dashboards_image }}:{{ opensearch_dashboards_tag }}"
diff --git a/ansible/roles/opensearch/tasks/check-containers.yml b/ansible/roles/opensearch/tasks/check-containers.yml
index a8466feb6..44f7253c2 100644
--- a/ansible/roles/opensearch/tasks/check-containers.yml
+++ b/ansible/roles/opensearch/tasks/check-containers.yml
@@ -10,9 +10,6 @@
name: "{{ item.value.container_name }}"
image: "{{ item.value.image }}"
volumes: "{{ item.value.volumes }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ opensearch_services }}"
+ with_dict: "{{ opensearch_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/opensearch/tasks/config.yml b/ansible/roles/opensearch/tasks/config.yml
index afaecb1d7..df0c9524f 100644
--- a/ansible/roles/opensearch/tasks/config.yml
+++ b/ansible/roles/opensearch/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ opensearch_services }}"
+ with_dict: "{{ opensearch_services | select_services_enabled_and_mapped_to_host }}"
- include_tasks: copy-certs.yml
when:
@@ -22,14 +19,13 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ opensearch_services }}"
+ with_dict: "{{ opensearch_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
- name: Copying over opensearch service config file
+ vars:
+ service: "{{ opensearch_services['opensearch'] }}"
merge_yaml:
sources:
- "{{ role_path }}/templates/opensearch.yml.j2"
@@ -39,15 +35,13 @@
dest: "{{ node_config_directory }}/opensearch/opensearch.yml"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups['opensearch']
- - opensearch_services['opensearch'].enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart opensearch container
- name: Copying over opensearch-dashboards config file
vars:
- opensearch_dashboards: "{{ opensearch_services['opensearch-dashboards'] }}"
+ service: "{{ opensearch_services['opensearch-dashboards'] }}"
merge_yaml:
sources:
- "{{ role_path }}/templates/opensearch_dashboards.yml.j2"
@@ -56,8 +50,6 @@
dest: "{{ node_config_directory }}/opensearch-dashboards/opensearch_dashboards.yml"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups['opensearch-dashboards']
- - opensearch_dashboards.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart opensearch-dashboards container
diff --git a/ansible/roles/opensearch/tasks/precheck.yml b/ansible/roles/opensearch/tasks/precheck.yml
index 835316f09..47e2dff16 100644
--- a/ansible/roles/opensearch/tasks/precheck.yml
+++ b/ansible/roles/opensearch/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- opensearch
diff --git a/ansible/roles/openvswitch/defaults/main.yml b/ansible/roles/openvswitch/defaults/main.yml
index f24d73d63..1d0fd1282 100644
--- a/ansible/roles/openvswitch/defaults/main.yml
+++ b/ansible/roles/openvswitch/defaults/main.yml
@@ -39,11 +39,11 @@ openvswitch_services:
####################
openvswitch_tag: "{{ openstack_tag }}"
-openvswitch_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/openvswitch-db-server"
+openvswitch_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}openvswitch-db-server"
openvswitch_db_tag: "{{ openvswitch_tag }}"
openvswitch_db_image_full: "{{ openvswitch_db_image }}:{{ openvswitch_db_tag }}"
-openvswitch_vswitchd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/openvswitch-vswitchd"
+openvswitch_vswitchd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}openvswitch-vswitchd"
openvswitch_vswitchd_tag: "{{ openvswitch_tag }}"
openvswitch_vswitchd_image_full: "{{ openvswitch_vswitchd_image }}:{{ openvswitch_vswitchd_tag }}"
diff --git a/ansible/roles/openvswitch/tasks/check-containers.yml b/ansible/roles/openvswitch/tasks/check-containers.yml
index 406ed11a2..d030119b1 100644
--- a/ansible/roles/openvswitch/tasks/check-containers.yml
+++ b/ansible/roles/openvswitch/tasks/check-containers.yml
@@ -10,9 +10,6 @@
volumes: "{{ item.value.volumes }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck }}"
- when:
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- with_dict: "{{ openvswitch_services }}"
+ with_dict: "{{ openvswitch_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/openvswitch/tasks/config.yml b/ansible/roles/openvswitch/tasks/config.yml
index 6f622e652..29ec1a2db 100644
--- a/ansible/roles/openvswitch/tasks/config.yml
+++ b/ansible/roles/openvswitch/tasks/config.yml
@@ -7,10 +7,7 @@
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
mode: "0770"
- when:
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- with_dict: "{{ openvswitch_services }}"
+ with_dict: "{{ openvswitch_services | select_services_enabled_and_mapped_to_host }}"
- name: Copying over config.json files for services
become: true
@@ -18,10 +15,7 @@
src: "{{ item.key }}.json.j2"
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
- when:
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- with_dict: "{{ openvswitch_services }}"
+ with_dict: "{{ openvswitch_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -34,6 +28,5 @@
mode: "0755"
become: true
when:
- - service.host_in_groups | bool
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- openvswitch_ovs_vsctl_wrapper_enabled | bool
diff --git a/ansible/roles/openvswitch/tasks/post-config.yml b/ansible/roles/openvswitch/tasks/post-config.yml
index 1714ad4e7..274183f7b 100644
--- a/ansible/roles/openvswitch/tasks/post-config.yml
+++ b/ansible/roles/openvswitch/tasks/post-config.yml
@@ -1,6 +1,6 @@
---
# NOTE(mnasiadka): external_ids:system-id uniquely identifies a physical system, used by OVN and other controllers
-- name: Set system-id and hw-offload
+- name: Set system-id, hostname and hw-offload
become: true
kolla_toolbox:
container_engine: "{{ kolla_container_engine }}"
@@ -17,6 +17,10 @@
- { col: "external_ids", name: "system-id", value: "{{ openvswitch_system_id }}" }
- { col: "external_ids", name: "hostname", value: "{{ openvswitch_hostname }}" }
- { col: "other_config", name: "hw-offload", value: true, state: "{{ 'present' if openvswitch_hw_offload | bool else 'absent' }}" }
+ when:
+ - openvswitch_services['openvswitch-vswitchd'].host_in_groups | bool
+ notify:
+ - "Restart openvswitch-vswitchd container"
- name: Ensuring OVS bridge is properly setup
become: true
diff --git a/ansible/roles/openvswitch/tasks/precheck.yml b/ansible/roles/openvswitch/tasks/precheck.yml
index b3d411e96..f2b152e97 100644
--- a/ansible/roles/openvswitch/tasks/precheck.yml
+++ b/ansible/roles/openvswitch/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- openvswitch_db
@@ -16,7 +17,7 @@
- name: Checking free port for OVSDB
vars:
- openvswitch_db: "{{ openvswitch_services['openvswitch-db-server'] }}"
+ service: "{{ openvswitch_services['openvswitch-db-server'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ ovsdb_port }}"
@@ -25,5 +26,4 @@
state: stopped
when:
- container_facts['openvswitch_db'] is not defined
- - inventory_hostname in groups[openvswitch_db.group]
- - openvswitch_db.enabled | bool
+ - service | service_enabled_and_mapped_to_host
diff --git a/ansible/roles/ovn-controller/defaults/main.yml b/ansible/roles/ovn-controller/defaults/main.yml
index 7fe795bfc..c888c8c3b 100644
--- a/ansible/roles/ovn-controller/defaults/main.yml
+++ b/ansible/roles/ovn-controller/defaults/main.yml
@@ -13,7 +13,7 @@ ovn_controller_services:
####################
ovn_tag: "{{ openstack_tag }}"
-ovn_controller_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovn-controller"
+ovn_controller_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ovn-controller"
ovn_controller_tag: "{{ ovn_tag }}"
ovn_controller_image_full: "{{ ovn_controller_image }}:{{ ovn_controller_tag }}"
diff --git a/ansible/roles/ovn-controller/tasks/check-containers.yml b/ansible/roles/ovn-controller/tasks/check-containers.yml
index 86bbf4235..1cd016795 100644
--- a/ansible/roles/ovn-controller/tasks/check-containers.yml
+++ b/ansible/roles/ovn-controller/tasks/check-containers.yml
@@ -8,9 +8,6 @@
image: "{{ item.value.image }}"
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ovn_controller_services }}"
+ with_dict: "{{ ovn_controller_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/ovn-controller/tasks/config.yml b/ansible/roles/ovn-controller/tasks/config.yml
index fa4617efe..62a37a945 100644
--- a/ansible/roles/ovn-controller/tasks/config.yml
+++ b/ansible/roles/ovn-controller/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ovn_controller_services }}"
+ with_dict: "{{ ovn_controller_services | select_services_enabled_and_mapped_to_host }}"
- name: Copying over config.json files for services
template:
@@ -18,9 +15,6 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ovn_controller_services }}"
+ with_dict: "{{ ovn_controller_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/ovn-controller/tasks/setup-ovs.yml b/ansible/roles/ovn-controller/tasks/setup-ovs.yml
index 5ac61a16b..0d9ab0e30 100644
--- a/ansible/roles/ovn-controller/tasks/setup-ovs.yml
+++ b/ansible/roles/ovn-controller/tasks/setup-ovs.yml
@@ -12,8 +12,10 @@
- name: Configure OVN in OVSDB
vars:
- ovn_mappings: "{% for bridge in neutron_bridge_name.split(',') %}physnet{{ loop.index0 + 1 }}:{{ bridge }}{% if not loop.last %},{% endif %}{% endfor %}"
- ovn_macs: "{% for bridge in neutron_bridge_name.split(',') %}physnet{{ loop.index0 + 1 }}:{{ ovn_base_mac | random_mac(seed=inventory_hostname + bridge) }}{% if not loop.last %},{% endif %}{% endfor %}"
+ # Format: physnet1:br1,physnet2:br2
+ ovn_mappings: "{{ neutron_physical_networks.split(',') | zip(neutron_bridge_name.split(',')) | map('join', ':') | join(',') }}"
+ # Format: physnet1:00:11:22:33:44:55,physnet2:00:11:22:33:44:56
+ ovn_macs: "{% for physnet, bridge in neutron_physical_networks.split(',') | zip(neutron_bridge_name.split(',')) %}{{ physnet }}:{{ ovn_base_mac | random_mac(seed=inventory_hostname + bridge) }}{% if not loop.last %},{% endif %}{% endfor %}"
ovn_cms_opts: "{{ 'enable-chassis-as-gw' if inventory_hostname in groups['ovn-controller-network'] else '' }}{{ ',availability-zones=' + neutron_ovn_availability_zones | join(',') if inventory_hostname in groups['ovn-controller-network'] and neutron_ovn_availability_zones }}"
become: true
kolla_toolbox:
diff --git a/ansible/roles/ovn-db/defaults/main.yml b/ansible/roles/ovn-db/defaults/main.yml
index a5d301ad5..ec03a5919 100644
--- a/ansible/roles/ovn-db/defaults/main.yml
+++ b/ansible/roles/ovn-db/defaults/main.yml
@@ -28,15 +28,15 @@ ovn_db_services:
####################
ovn_tag: "{{ openstack_tag }}"
-ovn_northd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovn-northd"
+ovn_northd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ovn-northd"
ovn_northd_tag: "{{ ovn_tag }}"
ovn_northd_image_full: "{{ ovn_northd_image }}:{{ ovn_northd_tag }}"
-ovn_nb_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovn-nb-db-server"
+ovn_nb_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ovn-nb-db-server"
ovn_nb_db_tag: "{{ ovn_tag }}"
ovn_nb_db_image_full: "{{ ovn_nb_db_image }}:{{ ovn_nb_db_tag }}"
-ovn_sb_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovn-sb-db-server"
+ovn_sb_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ovn-sb-db-server"
ovn_sb_db_tag: "{{ ovn_tag }}"
ovn_sb_db_image_full: "{{ ovn_sb_db_image }}:{{ ovn_sb_db_tag }}"
@@ -94,3 +94,5 @@ ovn_sb_command: >-
--db-sb-pidfile=/run/ovn/ovnsb_db.pid
--db-sb-file=/var/lib/openvswitch/ovn-sb/ovnsb.db
--ovn-sb-logfile=/var/log/kolla/openvswitch/ovn-sb-db.log
+# Workaround: pause after restarting containers to allow for leader election.
+ovn_leader_election_pause: 5
diff --git a/ansible/roles/ovn-db/tasks/bootstrap-db.yml b/ansible/roles/ovn-db/tasks/bootstrap-db.yml
index 2763005a9..deb4e0d5b 100644
--- a/ansible/roles/ovn-db/tasks/bootstrap-db.yml
+++ b/ansible/roles/ovn-db/tasks/bootstrap-db.yml
@@ -1,4 +1,14 @@
---
+# NOTE(mgoddard): After OVN DB leader restarts there is a period before a new
+# leader has been elected where the old leader is returned in the cluster
+# status. This can result in a failure to apply the connection settings if a
+# different leader is elected. Wait for a few seconds for the leader election
+# to complete.
+- name: Wait for leader election
+ pause:
+ seconds: "{{ ovn_leader_election_pause }}"
+ when: ovn_nb_db_cluster_exists | default(false) or ovn_sb_db_cluster_exists | default(false)
+
- name: Get OVN_Northbound cluster leader
become: true
command: "{{ kolla_container_engine }} exec ovn_nb_db ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/status OVN_Northbound"
diff --git a/ansible/roles/ovn-db/tasks/check-containers.yml b/ansible/roles/ovn-db/tasks/check-containers.yml
index 9c298a4ff..194328231 100644
--- a/ansible/roles/ovn-db/tasks/check-containers.yml
+++ b/ansible/roles/ovn-db/tasks/check-containers.yml
@@ -8,9 +8,6 @@
image: "{{ item.value.image }}"
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ovn_db_services }}"
+ with_dict: "{{ ovn_db_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/ovn-db/tasks/config.yml b/ansible/roles/ovn-db/tasks/config.yml
index 5046bd104..7bb29c820 100644
--- a/ansible/roles/ovn-db/tasks/config.yml
+++ b/ansible/roles/ovn-db/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ovn_db_services }}"
+ with_dict: "{{ ovn_db_services | select_services_enabled_and_mapped_to_host }}"
- name: Copying over config.json files for services
template:
@@ -18,9 +15,6 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ ovn_db_services }}"
+ with_dict: "{{ ovn_db_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/ovn-db/tasks/precheck.yml b/ansible/roles/ovn-db/tasks/precheck.yml
index 341ddcf28..e06baddc5 100644
--- a/ansible/roles/ovn-db/tasks/precheck.yml
+++ b/ansible/roles/ovn-db/tasks/precheck.yml
@@ -2,6 +2,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- ovn_nb_db
diff --git a/ansible/roles/ovs-dpdk/defaults/main.yml b/ansible/roles/ovs-dpdk/defaults/main.yml
index 209eb95fb..b85b058c8 100644
--- a/ansible/roles/ovs-dpdk/defaults/main.yml
+++ b/ansible/roles/ovs-dpdk/defaults/main.yml
@@ -37,8 +37,10 @@ ovsdpdk_services:
####################
# OVS
####################
-ovs_bridge_mappings: "{% for bridge in neutron_bridge_name.split(',') %}physnet{{ loop.index0 + 1 }}:{{ bridge }}{% if not loop.last %},{% endif %}{% endfor %}"
-ovs_port_mappings: "{% for bridge in neutron_bridge_name.split(',') %} {{ neutron_external_interface.split(',')[loop.index0] }}:{{ bridge }}{% if not loop.last %},{% endif %}{% endfor %}"
+# Format: physnet1:br1,physnet2:br2
+ovs_bridge_mappings: "{{ neutron_physical_networks.split(',') | zip(neutron_bridge_name.split(',')) | map('join', ':') | join(',') }}"
+# Format: eth1:br1,eth2:br2
+ovs_port_mappings: "{{ neutron_external_interface.split(',') | zip(neutron_bridge_name.split(',')) | map('join', ':') | join(',') }}"
tunnel_interface_network: "{{ hostvars[inventory_hostname].ansible_facts[dpdk_tunnel_interface]['ipv4']['network'] }}/{{ hostvars[inventory_hostname].ansible_facts[dpdk_tunnel_interface]['ipv4']['netmask'] }}"
tunnel_interface_cidr: "{{ dpdk_tunnel_interface_address }}/{{ tunnel_interface_network | ipaddr('prefix') }}"
ovs_cidr_mappings: "{% if neutron_bridge_name.split(',') | length != 1 %} {neutron_bridge_name.split(',')[0]}:{{ tunnel_interface_cidr }} {% else %} {{ neutron_bridge_name }}:{{ tunnel_interface_cidr }} {% endif %}"
@@ -58,11 +60,11 @@ ovs_physical_port_policy: named
####################
ovsdpdk_tag: "{{ openstack_tag }}"
-ovsdpdk_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovsdpdk-db"
+ovsdpdk_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ovsdpdk-db"
ovsdpdk_db_tag: "{{ ovsdpdk_tag }}"
ovsdpdk_db_image_full: "{{ ovsdpdk_db_image }}:{{ ovsdpdk_db_tag }}"
-ovsdpdk_vswitchd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovsdpdk-vswitchd"
+ovsdpdk_vswitchd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ovsdpdk-vswitchd"
ovsdpdk_vswitchd_tag: "{{ ovsdpdk_tag }}"
ovsdpdk_vswitchd_image_full: "{{ ovsdpdk_vswitchd_image }}:{{ ovsdpdk_vswitchd_tag }}"
ovsdpdk_db_dimensions: "{{ default_container_dimensions }}"
diff --git a/ansible/roles/ovs-dpdk/tasks/check-containers.yml b/ansible/roles/ovs-dpdk/tasks/check-containers.yml
index 0a38b550f..4448bd5cb 100644
--- a/ansible/roles/ovs-dpdk/tasks/check-containers.yml
+++ b/ansible/roles/ovs-dpdk/tasks/check-containers.yml
@@ -9,9 +9,6 @@
privileged: "{{ item.value.privileged | default(False) }}"
volumes: "{{ item.value.volumes }}"
dimensions: "{{ item.value.dimensions }}"
- when:
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- with_dict: "{{ ovsdpdk_services }}"
+ with_dict: "{{ ovsdpdk_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/ovs-dpdk/tasks/config.yml b/ansible/roles/ovs-dpdk/tasks/config.yml
index c6e8421e7..824998a2e 100644
--- a/ansible/roles/ovs-dpdk/tasks/config.yml
+++ b/ansible/roles/ovs-dpdk/tasks/config.yml
@@ -7,10 +7,7 @@
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
mode: "0770"
- when:
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- with_dict: "{{ ovsdpdk_services }}"
+ with_dict: "{{ ovsdpdk_services | select_services_enabled_and_mapped_to_host }}"
- name: Copying over config.json files for services
become: true
@@ -18,10 +15,7 @@
src: "{{ item.key }}.json.j2"
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
- when:
- - item.value.enabled | bool
- - item.value.host_in_groups | bool
- with_dict: "{{ ovsdpdk_services }}"
+ with_dict: "{{ ovsdpdk_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/placement/defaults/main.yml b/ansible/roles/placement/defaults/main.yml
index 1d2734a9f..ba0627a8e 100644
--- a/ansible/roles/placement/defaults/main.yml
+++ b/ansible/roles/placement/defaults/main.yml
@@ -58,7 +58,7 @@ placement_database_shard:
####################
placement_tag: "{{ openstack_tag }}"
-placement_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/placement-api"
+placement_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}placement-api"
placement_api_tag: "{{ placement_tag }}"
placement_api_image_full: "{{ placement_api_image }}:{{ placement_api_tag }}"
diff --git a/ansible/roles/placement/tasks/check-containers.yml b/ansible/roles/placement/tasks/check-containers.yml
index e8984bf63..c9f56cadd 100644
--- a/ansible/roles/placement/tasks/check-containers.yml
+++ b/ansible/roles/placement/tasks/check-containers.yml
@@ -13,9 +13,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ placement_services }}"
+ with_dict: "{{ placement_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/placement/tasks/config.yml b/ansible/roles/placement/tasks/config.yml
index 86ad2dc82..1cd6353b0 100644
--- a/ansible/roles/placement/tasks/config.yml
+++ b/ansible/roles/placement/tasks/config.yml
@@ -7,10 +7,7 @@
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
mode: "0770"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ placement_services }}"
+ with_dict: "{{ placement_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -41,10 +38,7 @@
src: "{{ item.key }}.json.j2"
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ placement_services }}"
+ with_dict: "{{ placement_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -61,10 +55,7 @@
- "{{ node_custom_config }}/placement/{{ inventory_hostname }}/placement.conf"
dest: "{{ node_config_directory }}/{{ item.key }}/placement.conf"
mode: "0660"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ placement_services }}"
+ with_dict: "{{ placement_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -76,9 +67,7 @@
src: "{{ item }}"
dest: "{{ node_config_directory }}/placement-api/placement-api-wsgi.conf"
mode: "0660"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/placement/{{ inventory_hostname }}/placement-api-wsgi.conf"
- "{{ node_custom_config }}/placement/placement-api-wsgi.conf"
@@ -94,9 +83,7 @@
src: "migrate-db.rc.j2"
dest: "{{ node_config_directory }}/placement-api/migrate-db.rc"
mode: "0660"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart placement-api container
@@ -107,9 +94,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/{{ placement_policy_file }}"
mode: "0660"
when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- placement_policy_file is defined
- with_dict: "{{ placement_services }}"
+ with_dict: "{{ placement_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/placement/tasks/precheck.yml b/ansible/roles/placement/tasks/precheck.yml
index 8131e2080..02ff052fb 100644
--- a/ansible/roles/placement/tasks/precheck.yml
+++ b/ansible/roles/placement/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- placement_api
@@ -16,7 +17,7 @@
- name: Checking free port for Placement API
vars:
- placement_api: "{{ placement_services['placement-api'] }}"
+ service: "{{ placement_services['placement-api'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ placement_api_listen_port }}"
@@ -25,5 +26,4 @@
state: stopped
when:
- container_facts['placement_api'] is not defined
- - inventory_hostname in groups[placement_api.group]
- - placement_api.enabled | bool
+ - service | service_enabled_and_mapped_to_host
diff --git a/ansible/roles/prechecks/vars/main.yml b/ansible/roles/prechecks/vars/main.yml
index e3b5ac7ed..dc732a08e 100644
--- a/ansible/roles/prechecks/vars/main.yml
+++ b/ansible/roles/prechecks/vars/main.yml
@@ -1,8 +1,8 @@
---
docker_version_min: '18.09'
docker_py_version_min: '3.4.1'
-ansible_version_min: '2.15'
-ansible_version_max: '2.16'
+ansible_version_min: '2.16'
+ansible_version_max: '2.17'
# Top level keys should match ansible_facts.distribution.
# These map to lists of supported releases (ansible_facts.distribution_release) or
diff --git a/ansible/roles/prometheus/defaults/main.yml b/ansible/roles/prometheus/defaults/main.yml
index 83a2a4210..e2e7d7552 100644
--- a/ansible/roles/prometheus/defaults/main.yml
+++ b/ansible/roles/prometheus/defaults/main.yml
@@ -194,48 +194,48 @@ prometheus_blackbox_exporter_endpoints: []
####################
prometheus_tag: "{{ openstack_tag }}"
-prometheus_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/prometheus-v2-server"
+prometheus_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-v2-server"
prometheus_server_tag: "{{ prometheus_tag }}"
prometheus_server_image_full: "{{ prometheus_server_image }}:{{ prometheus_server_tag }}"
-prometheus_mysqld_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/prometheus-mysqld-exporter"
+prometheus_mysqld_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-mysqld-exporter"
prometheus_mysqld_exporter_tag: "{{ prometheus_tag }}"
prometheus_mysqld_exporter_image_full: "{{ prometheus_mysqld_exporter_image }}:{{ prometheus_mysqld_exporter_tag }}"
-prometheus_node_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/prometheus-node-exporter"
+prometheus_node_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-node-exporter"
prometheus_node_exporter_tag: "{{ prometheus_tag }}"
prometheus_node_exporter_image_full: "{{ prometheus_node_exporter_image }}:{{ prometheus_node_exporter_tag }}"
-prometheus_memcached_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/prometheus-memcached-exporter"
+prometheus_memcached_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-memcached-exporter"
prometheus_memcached_exporter_tag: "{{ prometheus_tag }}"
prometheus_memcached_exporter_image_full: "{{ prometheus_memcached_exporter_image }}:{{ prometheus_memcached_exporter_tag }}"
-prometheus_cadvisor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/prometheus-cadvisor"
+prometheus_cadvisor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-cadvisor"
prometheus_cadvisor_tag: "{{ prometheus_tag }}"
prometheus_cadvisor_image_full: "{{ prometheus_cadvisor_image }}:{{ prometheus_cadvisor_tag }}"
-prometheus_alertmanager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/prometheus-alertmanager"
+prometheus_alertmanager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-alertmanager"
prometheus_alertmanager_tag: "{{ prometheus_tag }}"
prometheus_alertmanager_image_full: "{{ prometheus_alertmanager_image }}:{{ prometheus_alertmanager_tag }}"
# Prometheus openstack_exporter
-prometheus_openstack_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/prometheus-openstack-exporter"
+prometheus_openstack_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-openstack-exporter"
prometheus_openstack_exporter_tag: "{{ prometheus_tag }}"
prometheus_openstack_exporter_image_full: "{{ prometheus_openstack_exporter_image }}:{{ prometheus_openstack_exporter_tag }}"
-prometheus_elasticsearch_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/prometheus-elasticsearch-exporter"
+prometheus_elasticsearch_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-elasticsearch-exporter"
prometheus_elasticsearch_exporter_tag: "{{ prometheus_tag }}"
prometheus_elasticsearch_exporter_image_full: "{{ prometheus_elasticsearch_exporter_image }}:{{ prometheus_elasticsearch_exporter_tag }}"
-prometheus_blackbox_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/prometheus-blackbox-exporter"
+prometheus_blackbox_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-blackbox-exporter"
prometheus_blackbox_exporter_tag: "{{ prometheus_tag }}"
prometheus_blackbox_exporter_image_full: "{{ prometheus_blackbox_exporter_image }}:{{ prometheus_blackbox_exporter_tag }}"
-prometheus_libvirt_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/prometheus-libvirt-exporter"
+prometheus_libvirt_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-libvirt-exporter"
prometheus_libvirt_exporter_tag: "{{ prometheus_tag }}"
prometheus_libvirt_exporter_image_full: "{{ prometheus_libvirt_exporter_image }}:{{ prometheus_libvirt_exporter_tag }}"
-prometheus_msteams_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/prometheus-msteams"
+prometheus_msteams_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-msteams"
prometheus_msteams_tag: "{{ prometheus_tag }}"
prometheus_msteams_image_full: "{{ prometheus_msteams_image }}:{{ prometheus_msteams_tag }}"
diff --git a/ansible/roles/prometheus/tasks/check-containers.yml b/ansible/roles/prometheus/tasks/check-containers.yml
index 4673443b9..373e12847 100644
--- a/ansible/roles/prometheus/tasks/check-containers.yml
+++ b/ansible/roles/prometheus/tasks/check-containers.yml
@@ -10,9 +10,6 @@
volumes: "{{ item.value.volumes }}"
dimensions: "{{ item.value.dimensions }}"
environment: "{{ item.value.environment | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ prometheus_services }}"
+ with_dict: "{{ prometheus_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/prometheus/tasks/config.yml b/ansible/roles/prometheus/tasks/config.yml
index 9ad3fa911..52a4d335d 100644
--- a/ansible/roles/prometheus/tasks/config.yml
+++ b/ansible/roles/prometheus/tasks/config.yml
@@ -7,10 +7,7 @@
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
mode: "0770"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ prometheus_services }}"
+ with_dict: "{{ prometheus_services | select_services_enabled_and_mapped_to_host }}"
- include_tasks: copy-certs.yml
when:
@@ -22,10 +19,7 @@
src: "{{ item.key }}.json.j2"
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ prometheus_services }}"
+ with_dict: "{{ prometheus_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -48,8 +42,8 @@
dest: "{{ node_config_directory }}/prometheus-server/{{ item.path | basename }}"
mode: "0660"
when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool and enable_prometheus_alertmanager | bool
+ - service | service_enabled_and_mapped_to_host
+ - enable_prometheus_alertmanager | bool
- prometheus_alert_rules is defined and prometheus_alert_rules.files | length > 0
with_items: "{{ prometheus_alert_rules.files }}"
notify:
@@ -87,9 +81,7 @@
dest: "{{ node_config_directory }}/prometheus-server/prometheus.yml"
mode: "0660"
extend_lists: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/prometheus/{{ inventory_hostname }}/prometheus.yml"
- "{{ node_custom_config }}/prometheus/prometheus.yml"
@@ -105,9 +97,7 @@
src: "{{ item }}"
dest: "{{ node_config_directory }}/prometheus-server/web.yml"
mode: "0600"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/prometheus/{{ inventory_hostname }}/web.yml"
- "{{ node_custom_config }}/prometheus/web.yml"
@@ -123,9 +113,7 @@
src: "{{ item }}"
dest: "{{ node_config_directory }}/prometheus-alertmanager/prometheus-alertmanager.yml"
mode: "0660"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/prometheus/{{ inventory_hostname }}/prometheus-alertmanager.yml"
- "{{ node_custom_config }}/prometheus/prometheus-alertmanager.yml"
@@ -152,8 +140,7 @@
dest: "{{ node_config_directory }}/prometheus-alertmanager/{{ item.path | basename }}"
mode: 0660
when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ - service | service_enabled_and_mapped_to_host
- alertmanager_notification_templates is defined and alertmanager_notification_templates.files | length > 0
with_items: "{{ alertmanager_notification_templates.files }}"
notify:
@@ -170,9 +157,7 @@
- "{{ role_path }}/templates/my.cnf.j2"
dest: "{{ node_config_directory }}/prometheus-mysqld-exporter/my.cnf"
mode: "0660"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart prometheus-mysqld-exporter container
@@ -184,9 +169,7 @@
src: "{{ item }}"
dest: "{{ node_config_directory }}/prometheus-openstack-exporter/clouds.yml"
mode: "0660"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/prometheus-openstack-exporter/{{ inventory_hostname }}/clouds.yml"
- "{{ node_custom_config }}/prometheus-openstack-exporter/clouds.yml"
@@ -202,9 +185,7 @@
src: "{{ item }}"
dest: "{{ node_config_directory }}/prometheus-blackbox-exporter/prometheus-blackbox-exporter.yml"
mode: "0660"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/prometheus/{{ inventory_hostname }}/prometheus-blackbox-exporter.yml"
- "{{ node_custom_config }}/prometheus/prometheus-blackbox-exporter.yml"
@@ -252,9 +233,7 @@
vars:
base: "{{ node_custom_config }}/prometheus/"
service: "{{ prometheus_services['prometheus-server'] }}"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
- name: Copying over prometheus msteams config file
vars:
@@ -263,9 +242,7 @@
src: "{{ item }}"
dest: "{{ node_config_directory }}/prometheus-msteams/msteams.yml"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/prometheus/{{ inventory_hostname }}/prometheus-msteams.yml"
- "{{ node_custom_config }}/prometheus/prometheus-msteams.yml"
@@ -280,9 +257,7 @@
src: "{{ item }}"
dest: "{{ node_config_directory }}/prometheus-msteams/msteams.tmpl"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/prometheus/{{ inventory_hostname }}/prometheus-msteams.tmpl"
- "{{ node_custom_config }}/prometheus/prometheus-msteams.tmpl"
diff --git a/ansible/roles/prometheus/tasks/precheck.yml b/ansible/roles/prometheus/tasks/precheck.yml
index a9487ae97..4aea7ed21 100644
--- a/ansible/roles/prometheus/tasks/precheck.yml
+++ b/ansible/roles/prometheus/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- prometheus_server
diff --git a/ansible/roles/prometheus/templates/prometheus.yml.j2 b/ansible/roles/prometheus/templates/prometheus.yml.j2
index 915e3f7e9..a5d908066 100644
--- a/ansible/roles/prometheus/templates/prometheus.yml.j2
+++ b/ansible/roles/prometheus/templates/prometheus.yml.j2
@@ -254,9 +254,9 @@ scrape_configs:
alerting:
alertmanagers:
- - static_configs:
- - targets:
+ - static_configs:
{% for host in groups["prometheus-alertmanager"] %}
+ - targets:
- '{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ hostvars[host]['prometheus_alertmanager_port'] }}'
{% if hostvars[host].prometheus_instance_label | default(false, true) %}
labels:
diff --git a/ansible/roles/rabbitmq/defaults/main.yml b/ansible/roles/rabbitmq/defaults/main.yml
index 384f92bec..37b015c7d 100644
--- a/ansible/roles/rabbitmq/defaults/main.yml
+++ b/ansible/roles/rabbitmq/defaults/main.yml
@@ -27,7 +27,7 @@ rabbitmq_services:
####################
# Docker
####################
-rabbitmq_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/rabbitmq"
+rabbitmq_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}rabbitmq"
rabbitmq_tag: "{{ openstack_tag }}"
rabbitmq_image_full: "{{ rabbitmq_image }}:{{ rabbitmq_tag }}"
rabbitmq_dimensions: "{{ default_container_dimensions }}"
@@ -98,3 +98,5 @@ rabbitmq_plugins:
rabbitmq_enabled_plugins: "{{ rabbitmq_plugins | selectattr('enabled', 'equalto', true) | list }}"
kolla_externally_managed_cert: False
+
+rabbitmq_version_suffix: ""
diff --git a/ansible/roles/rabbitmq/tasks/check-containers.yml b/ansible/roles/rabbitmq/tasks/check-containers.yml
index 740ac66fe..5a6cc9e65 100644
--- a/ansible/roles/rabbitmq/tasks/check-containers.yml
+++ b/ansible/roles/rabbitmq/tasks/check-containers.yml
@@ -10,9 +10,6 @@
environment: "{{ item.value.environment }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ rabbitmq_services }}"
+ with_dict: "{{ rabbitmq_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart rabbitmq container
diff --git a/ansible/roles/rabbitmq/tasks/config.yml b/ansible/roles/rabbitmq/tasks/config.yml
index b8fed458c..4f0f0ccf3 100644
--- a/ansible/roles/rabbitmq/tasks/config.yml
+++ b/ansible/roles/rabbitmq/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ rabbitmq_services }}"
+ with_dict: "{{ rabbitmq_services | select_services_enabled_and_mapped_to_host }}"
- name: Copying over config.json files for services
template:
@@ -18,10 +15,7 @@
dest: "{{ node_config_directory }}/{{ project_name }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ rabbitmq_services }}"
+ with_dict: "{{ rabbitmq_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart rabbitmq container
@@ -37,9 +31,7 @@
- "{{ node_custom_config }}/rabbitmq/{{ inventory_hostname }}/rabbitmq-env.conf"
- "{{ node_custom_config }}/rabbitmq/rabbitmq-env.conf"
- "rabbitmq-env.conf.j2"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart rabbitmq container
@@ -55,9 +47,7 @@
- "{{ node_custom_config }}/rabbitmq/{{ inventory_hostname }}/rabbitmq.conf"
- "{{ node_custom_config }}/rabbitmq/rabbitmq.conf"
- "rabbitmq.conf.j2"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart rabbitmq container
@@ -73,9 +63,7 @@
- "{{ node_custom_config }}/rabbitmq/{{ inventory_hostname }}/erl_inetrc"
- "{{ node_custom_config }}/rabbitmq/erl_inetrc"
- "erl_inetrc.j2"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart rabbitmq container
@@ -91,9 +79,7 @@
- "{{ node_custom_config }}/rabbitmq/{{ inventory_hostname }}/advanced.config"
- "{{ node_custom_config }}/rabbitmq/advanced.config"
- "advanced.config.j2"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart rabbitmq container
@@ -109,9 +95,7 @@
- "{{ node_custom_config }}/rabbitmq/{{ inventory_hostname }}/definitions.json"
- "{{ node_custom_config }}/rabbitmq/definitions.json"
- "definitions.json.j2"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart rabbitmq container
@@ -127,9 +111,7 @@
- "{{ node_custom_config }}/rabbitmq/{{ inventory_hostname }}/enabled_plugins"
- "{{ node_custom_config }}/rabbitmq/enabled_plugins"
- "enabled_plugins.j2"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart rabbitmq container
diff --git a/ansible/roles/rabbitmq/tasks/precheck.yml b/ansible/roles/rabbitmq/tasks/precheck.yml
index 156afd76f..1837c1c1f 100644
--- a/ansible/roles/rabbitmq/tasks/precheck.yml
+++ b/ansible/roles/rabbitmq/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- rabbitmq
diff --git a/ansible/roles/rabbitmq/tasks/remove-ha-all-policy.yml b/ansible/roles/rabbitmq/tasks/remove-ha-all-policy.yml
index a44b037cc..574069cb7 100644
--- a/ansible/roles/rabbitmq/tasks/remove-ha-all-policy.yml
+++ b/ansible/roles/rabbitmq/tasks/remove-ha-all-policy.yml
@@ -3,6 +3,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- "{{ service.container_name }}"
diff --git a/ansible/roles/rabbitmq/tasks/restart_services.yml b/ansible/roles/rabbitmq/tasks/restart_services.yml
index 33a08dcd3..289015e1c 100644
--- a/ansible/roles/rabbitmq/tasks/restart_services.yml
+++ b/ansible/roles/rabbitmq/tasks/restart_services.yml
@@ -2,6 +2,7 @@
- name: Get info on RabbitMQ container
become: True
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name: "rabbitmq"
register: container_info
diff --git a/ansible/roles/redis/defaults/main.yml b/ansible/roles/redis/defaults/main.yml
index ea6e60380..e8b7aa388 100644
--- a/ansible/roles/redis/defaults/main.yml
+++ b/ansible/roles/redis/defaults/main.yml
@@ -23,11 +23,11 @@ redis_services:
####################
# Docker
####################
-redis_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/redis"
+redis_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}redis"
redis_tag: "{{ openstack_tag }}"
redis_image_full: "{{ redis_image }}:{{ redis_tag }}"
-redis_sentinel_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/redis-sentinel"
+redis_sentinel_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}redis-sentinel"
redis_sentinel_tag: "{{ openstack_tag }}"
redis_sentinel_image_full: "{{ redis_sentinel_image }}:{{ redis_tag }}"
redis_dimensions: "{{ default_container_dimensions }}"
diff --git a/ansible/roles/redis/tasks/check-containers.yml b/ansible/roles/redis/tasks/check-containers.yml
index 9016b7370..63f7b40bd 100644
--- a/ansible/roles/redis/tasks/check-containers.yml
+++ b/ansible/roles/redis/tasks/check-containers.yml
@@ -10,9 +10,6 @@
volumes: "{{ item.value.volumes }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ redis_services }}"
+ with_dict: "{{ redis_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/redis/tasks/config.yml b/ansible/roles/redis/tasks/config.yml
index e6cfc003d..bf4a1f4b3 100644
--- a/ansible/roles/redis/tasks/config.yml
+++ b/ansible/roles/redis/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ redis_services }}"
+ with_dict: "{{ redis_services | select_services_enabled_and_mapped_to_host }}"
- name: Copying over default config.json files
template:
@@ -18,10 +15,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ redis_services }}"
+ with_dict: "{{ redis_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -31,9 +25,6 @@
dest: "{{ node_config_directory }}/{{ item.key }}/redis.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ redis_services }}"
+ with_dict: "{{ redis_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/redis/tasks/precheck.yml b/ansible/roles/redis/tasks/precheck.yml
index e9abc14aa..a9225a080 100644
--- a/ansible/roles/redis/tasks/precheck.yml
+++ b/ansible/roles/redis/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- redis
@@ -16,7 +17,7 @@
- name: Checking free port for Redis
vars:
- redis: "{{ redis_services['redis'] }}"
+ service: "{{ redis_services['redis'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ redis_port }}"
@@ -25,5 +26,4 @@
state: stopped
when:
- container_facts['redis'] is not defined
- - inventory_hostname in groups[redis.group]
- - redis.enabled | bool
+ - service | service_enabled_and_mapped_to_host
diff --git a/ansible/roles/service-config-validate/tasks/validate.yml b/ansible/roles/service-config-validate/tasks/validate.yml
index a327277fe..025f55b8b 100644
--- a/ansible/roles/service-config-validate/tasks/validate.yml
+++ b/ansible/roles/service-config-validate/tasks/validate.yml
@@ -2,6 +2,7 @@
- name: "{{ project_name }} : {{ service.container_name }} | Get info on container"
become: True
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- "{{ service.container_name }}"
diff --git a/ansible/roles/skyline/defaults/main.yml b/ansible/roles/skyline/defaults/main.yml
index c329ce80d..bcf1b5b3a 100644
--- a/ansible/roles/skyline/defaults/main.yml
+++ b/ansible/roles/skyline/defaults/main.yml
@@ -74,11 +74,11 @@ skyline_database_shard:
####################
skyline_tag: "{{ openstack_tag }}"
-skyline_apiserver_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/skyline-apiserver"
+skyline_apiserver_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}skyline-apiserver"
skyline_apiserver_tag: "{{ skyline_tag }}"
skyline_apiserver_image_full: "{{ skyline_apiserver_image }}:{{ skyline_apiserver_tag }}"
-skyline_console_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/skyline-console"
+skyline_console_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}skyline-console"
skyline_console_tag: "{{ skyline_tag }}"
skyline_console_image_full: "{{ skyline_console_image }}:{{ skyline_console_tag }}"
diff --git a/ansible/roles/skyline/tasks/check-containers.yml b/ansible/roles/skyline/tasks/check-containers.yml
index 1ece87d60..bc59238e1 100644
--- a/ansible/roles/skyline/tasks/check-containers.yml
+++ b/ansible/roles/skyline/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ horizon.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ skyline_services }}"
+ with_dict: "{{ skyline_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/skyline/tasks/config.yml b/ansible/roles/skyline/tasks/config.yml
index c29d16cbb..75d2b9424 100644
--- a/ansible/roles/skyline/tasks/config.yml
+++ b/ansible/roles/skyline/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ skyline_services }}"
+ with_dict: "{{ skyline_services | select_services_enabled_and_mapped_to_host }}"
- include_tasks: copy-certs.yml
when:
@@ -24,24 +21,19 @@
dest: "{{ node_config_directory }}/{{ item.key }}/skyline.yaml"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ skyline_services }}"
+ with_dict: "{{ skyline_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
- name: Copying over gunicorn.py files for services
vars:
- skyline_apiserver: "{{ skyline_services['skyline-apiserver'] }}"
+ service: "{{ skyline_services['skyline-apiserver'] }}"
template:
src: "{{ item }}"
dest: "{{ node_config_directory }}/skyline-apiserver/gunicorn.py"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups['skyline-apiserver']
- - skyline_apiserver.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/skyline/gunicorn.py"
- "gunicorn.py.j2"
@@ -50,15 +42,13 @@
- name: Copying over nginx.conf files for services
vars:
- skyline_console: "{{ skyline_services['skyline-console'] }}"
+ service: "{{ skyline_services['skyline-console'] }}"
template:
src: "{{ item }}"
dest: "{{ node_config_directory }}/skyline-console/nginx.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups['skyline-console']
- - skyline_console.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/skyline/nginx.conf"
- "nginx.conf.j2"
@@ -71,24 +61,20 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ skyline_services }}"
+ with_dict: "{{ skyline_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
- name: Copying over custom logos
become: true
vars:
- skyline_console: "{{ skyline_services['skyline-console'] }}"
+ service: "{{ skyline_services['skyline-console'] }}"
copy:
src: "{{ node_custom_config }}/skyline/logos/{{ item }}"
dest: "{{ node_config_directory }}/skyline-console/logos/"
mode: 0660
when:
- - skyline_console.enabled | bool
- - inventory_hostname in groups[skyline_console.group]
+ - service | service_enabled_and_mapped_to_host
- skyline_custom_logos | length > 0
with_items: "{{ skyline_custom_logos }}"
notify:
diff --git a/ansible/roles/skyline/tasks/precheck.yml b/ansible/roles/skyline/tasks/precheck.yml
index 104797dc8..0a081b204 100644
--- a/ansible/roles/skyline/tasks/precheck.yml
+++ b/ansible/roles/skyline/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- skyline_apiserver
diff --git a/ansible/roles/swift/defaults/main.yml b/ansible/roles/swift/defaults/main.yml
index 2ac01e6ed..5a7ebe7e5 100644
--- a/ansible/roles/swift/defaults/main.yml
+++ b/ansible/roles/swift/defaults/main.yml
@@ -21,27 +21,27 @@ swift_services:
####################
swift_tag: "{{ openstack_tag }}"
-swift_proxy_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/swift-proxy-server"
+swift_proxy_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}swift-proxy-server"
swift_proxy_server_tag: "{{ swift_tag }}"
swift_proxy_server_image_full: "{{ swift_proxy_server_image }}:{{ swift_proxy_server_tag }}"
-swift_account_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/swift-account"
+swift_account_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}swift-account"
swift_account_tag: "{{ swift_tag }}"
swift_account_image_full: "{{ swift_account_image }}:{{ swift_account_tag }}"
-swift_container_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/swift-container"
+swift_container_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}swift-container"
swift_container_tag: "{{ swift_tag }}"
swift_container_image_full: "{{ swift_container_image }}:{{ swift_container_tag }}"
-swift_object_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/swift-object"
+swift_object_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}swift-object"
swift_object_tag: "{{ swift_tag }}"
swift_object_image_full: "{{ swift_object_image }}:{{ swift_object_tag }}"
-swift_object_expirer_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/swift-object-expirer"
+swift_object_expirer_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}swift-object-expirer"
swift_object_expirer_tag: "{{ swift_tag }}"
swift_object_expirer_image_full: "{{ swift_object_expirer_image }}:{{ swift_object_expirer_tag }}"
-swift_rsyncd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/swift-rsyncd"
+swift_rsyncd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}swift-rsyncd"
swift_rsyncd_tag: "{{ swift_tag }}"
swift_rsyncd_image_full: "{{ swift_rsyncd_image }}:{{ swift_rsyncd_tag }}"
diff --git a/ansible/roles/swift/tasks/precheck.yml b/ansible/roles/swift/tasks/precheck.yml
index c81c4de0e..423915afd 100644
--- a/ansible/roles/swift/tasks/precheck.yml
+++ b/ansible/roles/swift/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- swift_account_server
diff --git a/ansible/roles/swift/tasks/start.yml b/ansible/roles/swift/tasks/start.yml
index 82771d0f1..c97d0affa 100644
--- a/ansible/roles/swift/tasks/start.yml
+++ b/ansible/roles/swift/tasks/start.yml
@@ -60,6 +60,7 @@
- "{{ node_config_directory }}/swift-account-server/:{{ container_config_directory }}/:ro"
- "{{ swift_devices_mount_point }}:{{ swift_devices_mount_point }}:shared"
- "/etc/localtime:/etc/localtime:ro"
+ - "swift_recon_cache:/var/cache/swift"
when: inventory_hostname in groups['swift-account-server']
- name: Starting swift-account-auditor container
@@ -138,6 +139,7 @@
- "{{ node_config_directory }}/swift-container-server/:{{ container_config_directory }}/:ro"
- "{{ swift_devices_mount_point }}:{{ swift_devices_mount_point }}:shared"
- "/etc/localtime:/etc/localtime:ro"
+ - "swift_recon_cache:/var/cache/swift"
when: inventory_hostname in groups['swift-container-server']
- name: Starting swift-container-auditor container
diff --git a/ansible/roles/tacker/defaults/main.yml b/ansible/roles/tacker/defaults/main.yml
index b37fb9411..838ad7c0d 100644
--- a/ansible/roles/tacker/defaults/main.yml
+++ b/ansible/roles/tacker/defaults/main.yml
@@ -68,11 +68,11 @@ tacker_database_shard:
########
tacker_tag: "{{ openstack_tag }}"
-tacker_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/tacker-server"
+tacker_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}tacker-server"
tacker_server_tag: "{{ tacker_tag }}"
tacker_server_image_full: "{{ tacker_server_image }}:{{ tacker_server_tag }}"
-tacker_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/tacker-conductor"
+tacker_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}tacker-conductor"
tacker_conductor_tag: "{{ tacker_tag }}"
tacker_conductor_image_full: "{{ tacker_conductor_image }}:{{ tacker_conductor_tag }}"
diff --git a/ansible/roles/tacker/tasks/check-containers.yml b/ansible/roles/tacker/tasks/check-containers.yml
index e6e009979..fb3ac5140 100644
--- a/ansible/roles/tacker/tasks/check-containers.yml
+++ b/ansible/roles/tacker/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - item.value.host_in_groups | bool
- - item.value.enabled | bool
- with_dict: "{{ tacker_services }}"
+ with_dict: "{{ tacker_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/tacker/tasks/config.yml b/ansible/roles/tacker/tasks/config.yml
index ecdf54db2..518eee31d 100644
--- a/ansible/roles/tacker/tasks/config.yml
+++ b/ansible/roles/tacker/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - item.value.host_in_groups | bool
- - item.value.enabled | bool
- with_dict: "{{ tacker_services }}"
+ with_dict: "{{ tacker_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -41,10 +38,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- with_dict: "{{ tacker_services }}"
- when:
- - item.value.host_in_groups | bool
- - item.value.enabled
+ with_dict: "{{ tacker_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -61,10 +55,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/tacker.conf"
mode: "0660"
become: true
- with_dict: "{{ tacker_services }}"
- when:
- - item.value.host_in_groups | bool
- - item.value.enabled | bool
+ with_dict: "{{ tacker_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -75,9 +66,7 @@
mode: "0660"
become: true
when:
- - item.value.host_in_groups | bool
- - item.value.enabled | bool
- tacker_policy_file is defined
- with_dict: "{{ tacker_services }}"
+ with_dict: "{{ tacker_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/tacker/tasks/precheck.yml b/ansible/roles/tacker/tasks/precheck.yml
index 5dce1aa66..5bdb592b4 100644
--- a/ansible/roles/tacker/tasks/precheck.yml
+++ b/ansible/roles/tacker/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- tacker_server
diff --git a/ansible/roles/telegraf/defaults/main.yml b/ansible/roles/telegraf/defaults/main.yml
index ea93ab420..9a90d5692 100644
--- a/ansible/roles/telegraf/defaults/main.yml
+++ b/ansible/roles/telegraf/defaults/main.yml
@@ -12,7 +12,7 @@ telegraf_services:
####################
# Docker
####################
-telegraf_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/telegraf"
+telegraf_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}telegraf"
telegraf_tag: "{{ openstack_tag }}"
telegraf_image_full: "{{ telegraf_image }}:{{ telegraf_tag }}"
telegraf_dimensions: "{{ default_container_dimensions }}"
diff --git a/ansible/roles/telegraf/tasks/check-containers.yml b/ansible/roles/telegraf/tasks/check-containers.yml
index 7feb227d6..da1cfd849 100644
--- a/ansible/roles/telegraf/tasks/check-containers.yml
+++ b/ansible/roles/telegraf/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes }}"
pid_mode: "{{ item.value.pid_mode }}"
dimensions: "{{ item.value.dimensions }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ telegraf_services }}"
+ with_dict: "{{ telegraf_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/telegraf/tasks/config.yml b/ansible/roles/telegraf/tasks/config.yml
index a0a947f2e..7f7b6338a 100644
--- a/ansible/roles/telegraf/tasks/config.yml
+++ b/ansible/roles/telegraf/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ telegraf_services }}"
+ with_dict: "{{ telegraf_services | select_services_enabled_and_mapped_to_host }}"
- include_tasks: copy-certs.yml
when:
@@ -22,10 +19,7 @@
dest: "{{ node_config_directory }}/telegraf/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ telegraf_services }}"
+ with_dict: "{{ telegraf_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart telegraf container
@@ -37,9 +31,7 @@
dest: "{{ node_config_directory }}/telegraf/telegraf.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_first_found:
- "{{ node_custom_config }}/telegraf/{{ inventory_hostname }}/telegraf.conf"
- "{{ node_custom_config }}/telegraf/telegraf.conf"
@@ -55,9 +47,7 @@
dest: "{{ node_config_directory }}/telegraf/config"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - item.value.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
with_fileglob:
- "{{ role_path }}/templates/config/*.conf"
notify:
diff --git a/ansible/roles/trove/defaults/main.yml b/ansible/roles/trove/defaults/main.yml
index a15a7351d..65942badf 100644
--- a/ansible/roles/trove/defaults/main.yml
+++ b/ansible/roles/trove/defaults/main.yml
@@ -74,15 +74,15 @@ trove_database_shard:
####################
trove_tag: "{{ openstack_tag }}"
-trove_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/trove-conductor"
+trove_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}trove-conductor"
trove_conductor_tag: "{{ trove_tag }}"
trove_conductor_image_full: "{{ trove_conductor_image }}:{{ trove_conductor_tag }}"
-trove_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/trove-api"
+trove_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}trove-api"
trove_api_tag: "{{ trove_tag }}"
trove_api_image_full: "{{ trove_api_image }}:{{ trove_api_tag }}"
-trove_taskmanager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/trove-taskmanager"
+trove_taskmanager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}trove-taskmanager"
trove_taskmanager_tag: "{{ trove_tag }}"
trove_taskmanager_image_full: "{{ trove_taskmanager_image }}:{{ trove_taskmanager_tag }}"
diff --git a/ansible/roles/trove/tasks/check-containers.yml b/ansible/roles/trove/tasks/check-containers.yml
index d2a1cb2a6..d5beeba07 100644
--- a/ansible/roles/trove/tasks/check-containers.yml
+++ b/ansible/roles/trove/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ trove_services }}"
+ with_dict: "{{ trove_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/trove/tasks/config.yml b/ansible/roles/trove/tasks/config.yml
index 6b5da9805..9c3d9d5f3 100644
--- a/ansible/roles/trove/tasks/config.yml
+++ b/ansible/roles/trove/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ trove_services }}"
+ with_dict: "{{ trove_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -41,10 +38,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ trove_services }}"
+ with_dict: "{{ trove_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -60,9 +54,7 @@
- "{{ node_custom_config }}/trove/{{ inventory_hostname }}/trove-wsgi.conf"
- "{{ node_custom_config }}/trove/trove-wsgi.conf"
- "trove-wsgi.conf.j2"
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart trove-api container
@@ -81,9 +73,7 @@
become: true
when:
- item.key in services_need_confs
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ trove_services }}"
+ with_dict: "{{ trove_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -100,10 +90,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/trove.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ trove_services }}"
+ with_dict: "{{ trove_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -114,7 +101,6 @@
mode: "0660"
when:
- trove_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ trove_services }}"
+ with_dict: "{{ trove_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/trove/tasks/precheck.yml b/ansible/roles/trove/tasks/precheck.yml
index 5502edaaa..60aa0a4e7 100644
--- a/ansible/roles/trove/tasks/precheck.yml
+++ b/ansible/roles/trove/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- trove_api
diff --git a/ansible/roles/venus/defaults/main.yml b/ansible/roles/venus/defaults/main.yml
index 71c02b0a2..9768e460a 100644
--- a/ansible/roles/venus/defaults/main.yml
+++ b/ansible/roles/venus/defaults/main.yml
@@ -42,17 +42,30 @@ venus_database_name: "venus"
venus_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}venus{% endif %}"
venus_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
+####################
+# Database sharding
+####################
+venus_database_shard_root_user: "{% if enable_proxysql | bool %}root_shard_{{ venus_database_shard_id }}{% else %}{{ database_user }}{% endif %}"
+venus_database_shard_id: "{{ mariadb_default_database_shard_id | int }}"
+venus_database_shard:
+ users:
+ - user: "{{ venus_database_user }}"
+ password: "{{ venus_database_password }}"
+ rules:
+ - schema: "{{ venus_database_name }}"
+ shard_id: "{{ venus_database_shard_id }}"
+
####################
# Docker
####################
venus_tag: "{{ openstack_tag }}"
-venus_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/venus-api"
+venus_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}venus-api"
venus_api_tag: "{{ venus_tag }}"
venus_api_image_full: "{{ venus_api_image }}:{{ venus_api_tag }}"
-venus_manager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/venus-manager"
+venus_manager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}venus-manager"
venus_manager_tag: "{{ venus_tag }}"
venus_manager_image_full: "{{ venus_manager_image }}:{{ venus_manager_tag }}"
diff --git a/ansible/roles/venus/tasks/bootstrap.yml b/ansible/roles/venus/tasks/bootstrap.yml
index 26f42f345..79d3b500b 100644
--- a/ansible/roles/venus/tasks/bootstrap.yml
+++ b/ansible/roles/venus/tasks/bootstrap.yml
@@ -7,7 +7,7 @@
module_args:
login_host: "{{ database_address }}"
login_port: "{{ database_port }}"
- login_user: "{{ database_user }}"
+ login_user: "{{ venus_database_shard_root_user }}"
login_password: "{{ database_password }}"
name: "{{ venus_database_name }}"
run_once: True
@@ -23,7 +23,7 @@
module_args:
login_host: "{{ database_address }}"
login_port: "{{ database_port }}"
- login_user: "{{ database_user }}"
+ login_user: "{{ venus_database_shard_root_user }}"
login_password: "{{ database_password }}"
name: "{{ venus_database_user }}"
password: "{{ venus_database_password }}"
diff --git a/ansible/roles/venus/tasks/check-containers.yml b/ansible/roles/venus/tasks/check-containers.yml
index 63da45567..a44b1b03f 100644
--- a/ansible/roles/venus/tasks/check-containers.yml
+++ b/ansible/roles/venus/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ venus_services }}"
+ with_dict: "{{ venus_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/venus/tasks/config.yml b/ansible/roles/venus/tasks/config.yml
index 37fccd976..7a2b5f377 100644
--- a/ansible/roles/venus/tasks/config.yml
+++ b/ansible/roles/venus/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ venus_services }}"
+ with_dict: "{{ venus_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -41,10 +38,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ venus_services }}"
+ with_dict: "{{ venus_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -61,10 +55,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/venus.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ venus_services }}"
+ with_dict: "{{ venus_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
@@ -75,7 +66,6 @@
mode: "0660"
when:
- venus_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ venus_services }}"
+ with_dict: "{{ venus_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/venus/tasks/precheck.yml b/ansible/roles/venus/tasks/precheck.yml
index 1a57aed32..b3debf8fd 100644
--- a/ansible/roles/venus/tasks/precheck.yml
+++ b/ansible/roles/venus/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- venus_api
diff --git a/ansible/roles/watcher/defaults/main.yml b/ansible/roles/watcher/defaults/main.yml
index 9b42051bc..1af8bd42c 100644
--- a/ansible/roles/watcher/defaults/main.yml
+++ b/ansible/roles/watcher/defaults/main.yml
@@ -72,15 +72,15 @@ watcher_database_shard:
####################
watcher_tag: "{{ openstack_tag }}"
-watcher_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/watcher-engine"
+watcher_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}watcher-engine"
watcher_engine_tag: "{{ watcher_tag }}"
watcher_engine_image_full: "{{ watcher_engine_image }}:{{ watcher_engine_tag }}"
-watcher_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/watcher-api"
+watcher_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}watcher-api"
watcher_api_tag: "{{ watcher_tag }}"
watcher_api_image_full: "{{ watcher_api_image }}:{{ watcher_api_tag }}"
-watcher_applier_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/watcher-applier"
+watcher_applier_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}watcher-applier"
watcher_applier_tag: "{{ watcher_tag }}"
watcher_applier_image_full: "{{ watcher_applier_image }}:{{ watcher_applier_tag }}"
diff --git a/ansible/roles/watcher/tasks/check-containers.yml b/ansible/roles/watcher/tasks/check-containers.yml
index 1af099abb..a7beab967 100644
--- a/ansible/roles/watcher/tasks/check-containers.yml
+++ b/ansible/roles/watcher/tasks/check-containers.yml
@@ -9,9 +9,6 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ watcher_services }}"
+ with_dict: "{{ watcher_services | select_services_enabled_and_mapped_to_host }}"
notify:
- "Restart {{ item.key }} container"
diff --git a/ansible/roles/watcher/tasks/config.yml b/ansible/roles/watcher/tasks/config.yml
index 2b1688a09..fee20f817 100644
--- a/ansible/roles/watcher/tasks/config.yml
+++ b/ansible/roles/watcher/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ watcher_services }}"
+ with_dict: "{{ watcher_services | select_services_enabled_and_mapped_to_host }}"
- name: Check if policies shall be overwritten
stat:
@@ -41,10 +38,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ watcher_services }}"
+ with_dict: "{{ watcher_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -61,10 +55,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/watcher.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ watcher_services }}"
+ with_dict: "{{ watcher_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -76,8 +67,6 @@
become: true
when:
- watcher_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ watcher_services }}"
+ with_dict: "{{ watcher_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/watcher/tasks/precheck.yml b/ansible/roles/watcher/tasks/precheck.yml
index f75833aeb..3828d011e 100644
--- a/ansible/roles/watcher/tasks/precheck.yml
+++ b/ansible/roles/watcher/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- watcher_api
diff --git a/ansible/roles/zun/defaults/main.yml b/ansible/roles/zun/defaults/main.yml
index 98431f8f0..82d63302d 100644
--- a/ansible/roles/zun/defaults/main.yml
+++ b/ansible/roles/zun/defaults/main.yml
@@ -93,19 +93,19 @@ zun_database_shard:
####################
zun_tag: "{{ openstack_tag }}"
-zun_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/zun-api"
+zun_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}zun-api"
zun_api_tag: "{{ zun_tag }}"
zun_api_image_full: "{{ zun_api_image }}:{{ zun_api_tag }}"
-zun_wsproxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/zun-wsproxy"
+zun_wsproxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}zun-wsproxy"
zun_wsproxy_tag: "{{ zun_tag }}"
zun_wsproxy_image_full: "{{ zun_wsproxy_image }}:{{ zun_wsproxy_tag }}"
-zun_compute_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/zun-compute"
+zun_compute_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}zun-compute"
zun_compute_tag: "{{ zun_tag }}"
zun_compute_image_full: "{{ zun_compute_image }}:{{ zun_compute_tag }}"
-zun_cni_daemon_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/zun-cni-daemon"
+zun_cni_daemon_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}zun-cni-daemon"
zun_cni_daemon_tag: "{{ zun_tag }}"
zun_cni_daemon_image_full: "{{ zun_cni_daemon_image }}:{{ zun_cni_daemon_tag }}"
diff --git a/ansible/roles/zun/tasks/check-containers.yml b/ansible/roles/zun/tasks/check-containers.yml
index 4f7489c90..2f680d12f 100644
--- a/ansible/roles/zun/tasks/check-containers.yml
+++ b/ansible/roles/zun/tasks/check-containers.yml
@@ -10,10 +10,7 @@
volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
dimensions: "{{ item.value.dimensions }}"
healthcheck: "{{ item.value.healthcheck | default(omit) }}"
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ zun_services }}"
+ 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
diff --git a/ansible/roles/zun/tasks/config.yml b/ansible/roles/zun/tasks/config.yml
index 5b10fb067..f94e6b72a 100644
--- a/ansible/roles/zun/tasks/config.yml
+++ b/ansible/roles/zun/tasks/config.yml
@@ -7,10 +7,7 @@
group: "{{ config_owner_group }}"
mode: "0770"
become: true
- when:
- - inventory_hostname in groups[item.value.group]
- - item.value.enabled | bool
- with_dict: "{{ zun_services }}"
+ with_dict: "{{ zun_services | select_services_enabled_and_mapped_to_host }}"
- include_tasks: external_ceph.yml
when:
@@ -46,10 +43,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ zun_services }}"
+ with_dict: "{{ zun_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -66,10 +60,7 @@
dest: "{{ node_config_directory }}/{{ item.key }}/zun.conf"
mode: "0660"
become: true
- when:
- - item.value.enabled | bool
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ zun_services }}"
+ with_dict: "{{ zun_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
@@ -81,9 +72,7 @@
dest: "{{ node_config_directory }}/zun-api/wsgi-zun.conf"
mode: "0660"
become: true
- when:
- - inventory_hostname in groups[service.group]
- - service.enabled | bool
+ when: service | service_enabled_and_mapped_to_host
notify:
- Restart zun-api container
@@ -95,7 +84,6 @@
become: true
when:
- zun_policy_file is defined
- - inventory_hostname in groups[item.value.group]
- with_dict: "{{ zun_services }}"
+ with_dict: "{{ zun_services | select_services_enabled_and_mapped_to_host }}"
notify:
- Restart {{ item.key }} container
diff --git a/ansible/roles/zun/tasks/precheck.yml b/ansible/roles/zun/tasks/precheck.yml
index 5b9f64d06..244f483b6 100644
--- a/ansible/roles/zun/tasks/precheck.yml
+++ b/ansible/roles/zun/tasks/precheck.yml
@@ -8,6 +8,7 @@
- name: Get container facts
become: true
kolla_container_facts:
+ action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- zun_api
diff --git a/doc/source/conf.py b/doc/source/conf.py
index dc5627d89..375c477b1 100644
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -130,10 +130,10 @@ else:
TESTED_RUNTIMES_GOVERNANCE_URL =\
'https://governance.openstack.org/tc/reference/runtimes/{}.html'.format(KOLLA_OPENSTACK_RELEASE)
-ANSIBLE_CORE_VERSION_MIN = '2.15'
-ANSIBLE_CORE_VERSION_MAX = '2.16'
-ANSIBLE_VERSION_MIN = '8'
-ANSIBLE_VERSION_MAX = '9'
+ANSIBLE_CORE_VERSION_MIN = '2.16'
+ANSIBLE_CORE_VERSION_MAX = '2.17'
+ANSIBLE_VERSION_MIN = '9'
+ANSIBLE_VERSION_MAX = '10'
GLOBAL_VARIABLE_MAP = {
'|ANSIBLE_CORE_VERSION_MIN|': ANSIBLE_CORE_VERSION_MIN,
diff --git a/doc/source/reference/message-queues/rabbitmq.rst b/doc/source/reference/message-queues/rabbitmq.rst
index 42980affa..ac5653952 100644
--- a/doc/source/reference/message-queues/rabbitmq.rst
+++ b/doc/source/reference/message-queues/rabbitmq.rst
@@ -163,3 +163,47 @@ additional steps needed to migrate from transient to durable queues.
.. code-block:: console
kolla-ansible deploy --tags <service-tags>
+
+SLURP
+~~~~~
+
+RabbitMQ has two major version releases per year but does not support jumping
+two versions in one upgrade. So if you want to perform a skip-level upgrade,
+you must first upgrade RabbitMQ to an intermediary version. To do this, Kolla
+provides multiple RabbitMQ versions in the odd OpenStack releases. To use the
+upgrade from Antelope to Caracal as an example, we start on RabbitMQ version
+3.11. In Antelope, you should upgrade to RabbitMQ version 3.12 with the command
+below. You can then proceed with the usual SLURP upgrade to Caracal (and
+therefore RabbitMQ version 3.13).
+
+.. warning::
+
+ This command should be run from the Antelope release.
+
+.. code-block:: console
+
+ kolla-ansible rabbitmq-upgrade 3.12
+
+RabbitMQ versions
+~~~~~~~~~~~~~~~~~
+
+Alternatively, you can set ``rabbitmq_image`` in your configuration
+``globals.yml`` for idempotence in deployments. As an example, Kolla ships
+versions 3.11, 3.12 and 3.13 of RabbitMQ in Antelope. By default, Antelope
+Kolla-Ansible will deploy version 3.11. If you wish to deploy a later version,
+you must override the image. if you want to use version 3.12 change
+``rabbitmq_image`` in ``globals.yml`` as follows:
+
+.. code-block:: yaml
+
+ rabbitmq_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/rabbitmq-3.12"
+
+You can then upgrade RabbitMQ with the usual command:
+
+.. code-block:: console
+
+ kolla-ansible upgrade --tags rabbitmq
+
+Note again that RabbitMQ does not support upgrades between more than one major
+version, so if you wish to upgrade to version 3.13 you must first upgrade to
+3.12.
diff --git a/doc/source/reference/networking/neutron.rst b/doc/source/reference/networking/neutron.rst
index c748c6d4e..8a627572d 100644
--- a/doc/source/reference/networking/neutron.rst
+++ b/doc/source/reference/networking/neutron.rst
@@ -20,13 +20,20 @@ Neutron external interface is used for communication with the external world,
for example provider networks, routers and floating IPs.
For setting up the neutron external interface modify
``/etc/kolla/globals.yml`` setting ``neutron_external_interface`` to the
-desired interface name. This interface is used by hosts in the ``network``
-group. It is also used by hosts in the ``compute`` group if
+desired interface name or comma-separated list of interface names. Its default
+value is ``eth1``. These external interfaces are used by hosts in the
+``network`` group. They are also used by hosts in the ``compute`` group if
``enable_neutron_provider_networks`` is set or DVR is enabled.
-The interface is plugged into a bridge (Open vSwitch or Linux Bridge, depending
-on the driver) defined by ``neutron_bridge_name``, which defaults to ``br-ex``.
-The default Neutron physical network is ``physnet1``.
+The external interfaces are each plugged into a bridge (Open vSwitch or Linux
+Bridge, depending on the driver) defined by ``neutron_bridge_name``, which
+defaults to ``br-ex``. When there are multiple external interfaces,
+``neutron_bridge_name`` should be a comma-separated list of the same length.
+
+The default Neutron physical network is ``physnet1``, or ``physnet1`` to
+``physnetN`` when there are multiple external network interfaces. This may be
+changed by setting ``neutron_physical_networks`` to a comma-separated list of
+networks of the same length.
Example: single interface
-------------------------
@@ -54,6 +61,30 @@ These two lists are "zipped" together, such that ``eth1`` is plugged into the
Ansible maps these interfaces to Neutron physical networks ``physnet1`` and
``physnet2`` respectively.
+Example: custom physical networks
+---------------------------------
+
+Sometimes we may want to customise the physical network names used. This may be
+to allow for not all hosts having access to all physical networks, or to use
+more descriptive names.
+
+For example, in an environment with a separate physical network for Ironic
+provisioning, controllers might have access to two physical networks:
+
+.. code-block:: yaml
+
+ neutron_external_interface: "eth1,eth2"
+ neutron_bridge_name: "br-ex1,br-ex2"
+ neutron_physical_network: "physnet1,physnet2"
+
+While compute nodes have access only to ``physnet2``.
+
+.. code-block:: yaml
+
+ neutron_external_interface: "eth1"
+ neutron_bridge_name: "br-ex1"
+ neutron_physical_network: "physnet2"
+
Example: shared interface
-------------------------
diff --git a/doc/source/reference/storage/cinder-guide-pure.rst b/doc/source/reference/storage/cinder-guide-pure.rst
index bd93ac48e..b38c1ea23 100644
--- a/doc/source/reference/storage/cinder-guide-pure.rst
+++ b/doc/source/reference/storage/cinder-guide-pure.rst
@@ -39,6 +39,20 @@ configure the ``FlashArray NVMe-RoCE`` Cinder driver in
The NVMe-RoCE driver is only supported from OpenStack Zed and later.
+To use the ``Pure Storage FlashArray NVMe-TCP`` Cinder backend, enable and
+configure the ``FlashArray NVMe-TCP`` Cinder driver in
+``/etc/kolla/globals.yml``.
+
+.. code-block:: yaml
+
+ enable_cinder_backend_pure_nvme_tcp: "yes"
+
+.. end
+
+.. note::
+
+ The NVMe-TCP driver is only supported from OpenStack 2023.2 (Bobcat) and later.
+
It is important to note that you cannot mix iSCSI and FC Pure Storage
FlashArray drivers in the same OpenStack cluster.
diff --git a/doc/source/reference/storage/cinder-guide.rst b/doc/source/reference/storage/cinder-guide.rst
index 49f16405c..55fc9f7d2 100644
--- a/doc/source/reference/storage/cinder-guide.rst
+++ b/doc/source/reference/storage/cinder-guide.rst
@@ -278,6 +278,9 @@ that appears in cinder.conf:
* - Pure Storage FlashArray for OpenStack
- cinder_backend_pure_roce_name
- Pure-FlashArray-roce
+ * - Pure Storage FlashArray for OpenStack
+ - cinder_backend_pure_nvme_tcp_name
+ - Pure-FlashArray-nvme-tcp
These are the names you use when
`configuring <https://docs.openstack.org/cinder/latest/admin/multi-backend.html#volume-type>`_
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index 065d9c9db..5788fac68 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -24,14 +24,6 @@
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes
-# This variable is used as "any_errors_fatal" setting for the setup (gather
-# facts) plays.
-# This is useful for weeding out failing hosts early to avoid late failures
-# due to missing facts (especially cross-host).
-# Do note this still supports host fact caching and it will not affect
-# scenarios with all facts cached (as there is no task to fail).
-#kolla_ansible_setup_any_errors_fatal: false
-
# This variable may be used to set the maximum failure percentage for all
# plays. More fine-grained control is possible via per-service variables, e.g.
# nova_max_fail_percentage. The default behaviour is to set a max fail
@@ -343,6 +335,7 @@ workaround_ansible_issue_8743: yes
#enable_cinder_backend_pure_iscsi: "no"
#enable_cinder_backend_pure_fc: "no"
#enable_cinder_backend_pure_roce: "no"
+#enable_cinder_backend_pure_nvme_tcp: "no"
#enable_cloudkitty: "no"
#enable_collectd: "no"
#enable_cyborg: "no"
diff --git a/lint-requirements.txt b/lint-requirements.txt
index 2abef3aee..1dd34e7f8 100644
--- a/lint-requirements.txt
+++ b/lint-requirements.txt
@@ -4,6 +4,7 @@ bandit>=1.1.0 # Apache-2.0
bashate>=0.5.1 # Apache-2.0
codespell<3 # GPLv2
doc8>=0.6.0 # Apache-2.0
-hacking>=3.0.1,<3.1.0 # Apache-2.0
+hacking>=3.0.1 # Apache-2.0
+pycodestyle>=2.11.0 # MIT
reno>=3.1.0 # Apache-2.0
yamllint>=1.22.0 #GPL3
diff --git a/releasenotes/notes/add-docker-image-name-prefix-1503a64978740808.yaml b/releasenotes/notes/add-docker-image-name-prefix-1503a64978740808.yaml
new file mode 100644
index 000000000..2864a2553
--- /dev/null
+++ b/releasenotes/notes/add-docker-image-name-prefix-1503a64978740808.yaml
@@ -0,0 +1,9 @@
+---
+features:
+ - |
+ Adds ``docker_image_name_prefix`` that allows to define
+ images prefix.
+fixes:
+ - |
+ Fixes `LP#2073541
+ <https://bugs.launchpad.net/kolla-ansible/+bug/2073541>`__
diff --git a/releasenotes/notes/add-parameter-fluentd-enable-watch-timer-08fbe65ba2b549e8.yaml b/releasenotes/notes/add-parameter-fluentd-enable-watch-timer-08fbe65ba2b549e8.yaml
new file mode 100644
index 000000000..a0e8316d4
--- /dev/null
+++ b/releasenotes/notes/add-parameter-fluentd-enable-watch-timer-08fbe65ba2b549e8.yaml
@@ -0,0 +1,11 @@
+---
+features:
+ - |
+ With the boolean parameter ``fluentd_enable_watch_timer`` it is
+ now possible to enable the additional watch timer of Fluentd.
+
+ The default value of ``fluentd_enable_watch_timer`` is set
+ to ``false``.
+
+ More details about the watch timer in Fluentd can be found at
+ https://docs.fluentd.org/input/tail#enable_watch_timer.
diff --git a/releasenotes/notes/bug-1993285-127fe764e461465a.yaml b/releasenotes/notes/bug-1993285-127fe764e461465a.yaml
new file mode 100644
index 000000000..068c6e73f
--- /dev/null
+++ b/releasenotes/notes/bug-1993285-127fe764e461465a.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+ - |
+ Fixes handling of openvswitch on ``manila-share`` nodes.
+ `LP#1993285 <https://launchpad.net/bugs/1993285>`__
diff --git a/releasenotes/notes/bug-2067999-5d009f15e1cc3185.yaml b/releasenotes/notes/bug-2067999-5d009f15e1cc3185.yaml
new file mode 100644
index 000000000..ef1c80441
--- /dev/null
+++ b/releasenotes/notes/bug-2067999-5d009f15e1cc3185.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+ - |
+ Fixes redundant copying of grafana custom config files.
+ `LP#2067999 <https://launchpad.net/bugs/2067999>`__
diff --git a/releasenotes/notes/bug-2073159-c54c773c72c8fb11.yaml b/releasenotes/notes/bug-2073159-c54c773c72c8fb11.yaml
new file mode 100644
index 000000000..15d708778
--- /dev/null
+++ b/releasenotes/notes/bug-2073159-c54c773c72c8fb11.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+ - |
+ Fixes behaviour of Change Password screen in Horizon until
+ `bug #2073639 <https://launchpad.net/bugs/2073639>`__ is resolved.
+ `LP#2073159 <https://launchpad.net/bugs/2073159>`__
diff --git a/releasenotes/notes/bug-2073678-45f31547395ef3c7.yaml b/releasenotes/notes/bug-2073678-45f31547395ef3c7.yaml
new file mode 100644
index 000000000..70206e4fe
--- /dev/null
+++ b/releasenotes/notes/bug-2073678-45f31547395ef3c7.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+ - |
+ Fixes busy libvirt's secret volume while secrets are changing.
+ `LP#2073678 <https://launchpad.net/bugs/2073678>`__
diff --git a/releasenotes/notes/fact-gathering-double-failure-4662ef2f54d58291.yaml b/releasenotes/notes/fact-gathering-double-failure-4662ef2f54d58291.yaml
new file mode 100644
index 000000000..fe0595cf4
--- /dev/null
+++ b/releasenotes/notes/fact-gathering-double-failure-4662ef2f54d58291.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+ - |
+ Fixes an issue during fact gathering when using the ``--limit`` argument
+ where a host that fails to gather facts could cause another host to fail
+ during delegated fact gathering.
diff --git a/releasenotes/notes/firewalld-immediate-c2abf09977c455a9.yaml b/releasenotes/notes/firewalld-immediate-c2abf09977c455a9.yaml
new file mode 100644
index 000000000..cd858cf48
--- /dev/null
+++ b/releasenotes/notes/firewalld-immediate-c2abf09977c455a9.yaml
@@ -0,0 +1,7 @@
+---
+features:
+ - |
+ Modifies public API firewalld rules to be applied immediately to a running
+ firewalld service. This requires firewalld to be running, but avoids
+ reloading firewalld, which is disruptive due to the way in which firewalld
+ builds its firewall chains.
diff --git a/releasenotes/notes/neutron-physical-networks-5b908bed9809c3b4.yaml b/releasenotes/notes/neutron-physical-networks-5b908bed9809c3b4.yaml
new file mode 100644
index 000000000..a62e40008
--- /dev/null
+++ b/releasenotes/notes/neutron-physical-networks-5b908bed9809c3b4.yaml
@@ -0,0 +1,6 @@
+---
+features:
+ - |
+ Adds a ``neutron_physical_networks`` variable for customising Neutron
+ physical network names. The default behaviour of using ``physnet1`` to
+ ``physnetN`` is unchanged.
diff --git a/releasenotes/notes/performance-improvements-42c34ebf4243312a.yaml b/releasenotes/notes/performance-improvements-42c34ebf4243312a.yaml
new file mode 100644
index 000000000..deafb0a47
--- /dev/null
+++ b/releasenotes/notes/performance-improvements-42c34ebf4243312a.yaml
@@ -0,0 +1,13 @@
+---
+features:
+ - |
+ Implement jinja filters for service dicts.
+ Using select_services_enabled_and_mapped_to_host
+ filter gets rid of some overhead caused by
+ ansible skipping items in tasks.
+ With bigger amount of hosts, this overhead
+ is non-insignificant.
+ Usage of service_enabled_and_mapped_to_host
+ filter is mostly cosmetic and has no effect
+ on the performance.
+ `Blueprint performance-improvements <https://blueprints.launchpad.net/kolla-ansible/+spec/performance-improvements>`__
diff --git a/releasenotes/notes/prometheus-template-fix-b971aad477a8fdc9.yaml b/releasenotes/notes/prometheus-template-fix-b971aad477a8fdc9.yaml
new file mode 100644
index 000000000..5aade4453
--- /dev/null
+++ b/releasenotes/notes/prometheus-template-fix-b971aad477a8fdc9.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+ - |
+ Fixed an issue with the ``prometheus.yml`` template which would break when
+ deploying alertmanager.
diff --git a/releasenotes/notes/pure-nvme-tcp-driver-added.yaml-db8e3496376e843c.yaml b/releasenotes/notes/pure-nvme-tcp-driver-added.yaml-db8e3496376e843c.yaml
new file mode 100644
index 000000000..b88617621
--- /dev/null
+++ b/releasenotes/notes/pure-nvme-tcp-driver-added.yaml-db8e3496376e843c.yaml
@@ -0,0 +1,5 @@
+---
+features:
+ - |
+ Added NVMe-TCP as a new transport for Pure Storage FlashArray
+ Cinder driver.
diff --git a/releasenotes/notes/rabbitmq-target-upgrade-command-d5f9d9fc27fa28f8.yaml b/releasenotes/notes/rabbitmq-target-upgrade-command-d5f9d9fc27fa28f8.yaml
new file mode 100644
index 000000000..4ba4ab951
--- /dev/null
+++ b/releasenotes/notes/rabbitmq-target-upgrade-command-d5f9d9fc27fa28f8.yaml
@@ -0,0 +1,6 @@
+---
+features:
+ - |
+ Added a command to upgrade to a target version of RabbitMQ. This is
+ required before a SLURP upgrade. See the docs for more details:
+ https://docs.openstack.org/kolla-ansible/latest/reference/message-queues/rabbitmq.html#slurp
diff --git a/releasenotes/notes/remove-any-errors-fatal-664fc2207074f0ef.yaml b/releasenotes/notes/remove-any-errors-fatal-664fc2207074f0ef.yaml
new file mode 100644
index 000000000..7060d884b
--- /dev/null
+++ b/releasenotes/notes/remove-any-errors-fatal-664fc2207074f0ef.yaml
@@ -0,0 +1,14 @@
+---
+upgrade:
+ - |
+ Support for failing execution early if fact collection fails on any of the
+ hosts by setting ``kolla_ansible_setup_any_errors_fatal`` to ``true`` has
+ been removed. This is due to Ansible's ``any_errors_fatal`` parameter not
+ being templated, resulting in the value always being interpreted as
+ ``true``, even though the default value of
+ ``kolla_ansible_setup_any_errors_fatal`` is ``false``.
+
+ Equivalent behaviour is possible by setting the maximum failure percentage
+ to 0. This may be done specifically for fact gathering using
+ ``gather_facts_max_fail_percentage`` or globally using
+ ``kolla_max_fail_percentage``.
diff --git a/releasenotes/notes/use_proper_ip_comparison-1ed77a21eb560079.yaml b/releasenotes/notes/use_proper_ip_comparison-1ed77a21eb560079.yaml
new file mode 100644
index 000000000..66e8581c5
--- /dev/null
+++ b/releasenotes/notes/use_proper_ip_comparison-1ed77a21eb560079.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+ - |
+ Fixes a bug where the IP address comparison was not done properly
+ for the variable ``kolla_same_external_internal_vip``.
+ Fix the comparison to use the ``ipaddr`` filter instead.
+ For details see `LP#2076889 <https://bugs.launchpad.net/kolla/+bug/2076889>`__.
diff --git a/releasenotes/notes/workaround-ovn-leader-election-f7f75e93e9300d96.yaml b/releasenotes/notes/workaround-ovn-leader-election-f7f75e93e9300d96.yaml
new file mode 100644
index 000000000..90a1fd5da
--- /dev/null
+++ b/releasenotes/notes/workaround-ovn-leader-election-f7f75e93e9300d96.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+ - |
+ Fixes an issue where OVN northbound or southbound database deployment could
+ fail when a new leader is elected. `LP#2059124
+ <https://bugs.launchpad.net/kolla-ansible/+bug/2059124>`__
diff --git a/requirements.txt b/requirements.txt
index dcbbd1f10..fc69b3729 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,14 +1,11 @@
-pbr!=2.1.0,>=2.0.0 # Apache-2.0
-
-# ini parsing
-oslo.config>=5.2.0 # Apache-2.0
-
-# YAML parsing
-PyYAML>=3.12 # MIT
+# Password hashing
+bcrypt>=3.0.0 # Apache-2.0
# password generation
cryptography>=2.1 # BSD/Apache-2.0
-oslo.utils>=3.33.0 # Apache-2.0
+
+# Hashicorp Vault
+hvac>=0.10.1 # Apache-2.0
# templating
Jinja2>=3 # BSD License (3 clause)
@@ -16,9 +13,16 @@ Jinja2>=3 # BSD License (3 clause)
# Ansible's json_query
jmespath>=0.9.3 # MIT
-# Hashicorp Vault
-hvac>=0.10.1
+# ini parsing
+oslo.config>=5.2.0 # Apache-2.0
+
+# password generation
+oslo.utils>=3.33.0 # Apache-2.0
# Password hashing
-bcrypt>=3.0.0 # Apache-2.0
passlib[bcrypt]>=1.0.0 # BSD
+
+pbr!=2.1.0,>=2.0.0 # Apache-2.0
+
+# YAML parsing
+PyYAML>=3.12 # MIT
diff --git a/roles/cephadm/templates/cephadm.yml.j2 b/roles/cephadm/templates/cephadm.yml.j2
index 2aee3f819..b56466c4f 100644
--- a/roles/cephadm/templates/cephadm.yml.j2
+++ b/roles/cephadm/templates/cephadm.yml.j2
@@ -2,8 +2,8 @@
---
service_type: host
hostname: {{ hostvars[host]['ansible_hostname'] }}
-addr: {{ hostvars[host]['ansible_vxlan0']['ipv4']['address'] }}
-labels:
+addr: {{ hostvars[host]['ansible_vxlan_0']['ipv4']['address'] }}
+labels:
- _admin
- mon
- mgr
diff --git a/roles/openstack-clients/defaults/main.yml b/roles/openstack-clients/defaults/main.yml
index 8ffa3fa74..d0cb7034d 100644
--- a/roles/openstack-clients/defaults/main.yml
+++ b/roles/openstack-clients/defaults/main.yml
@@ -18,8 +18,7 @@ openstack_clients_pip_packages:
enabled: "{{ scenario == 'scenario_nfv' }}"
- package: python-octaviaclient
enabled: "{{ scenario in ['octavia', 'ovn'] }}"
- # https://bugs.launchpad.net/python-openstackclient/+bug/2076229
- - package: "python-openstackclient<7"
+ - package: python-openstackclient
enabled: true
# python-openstackclient 6.6.0 didn't work with swift due to https://review.opendev.org/c/openstack/python-openstackclient/+/920001
# TODO: remove the simplejson once new package released on pypi.org.
@@ -35,3 +34,5 @@ openstack_clients_pip_packages:
openstack_clients_venv_base: "{{ ansible_user_dir }}"
openstack_clients_venv_name: "openstackclient-venv"
openstack_clients_venv_path: "{{ openstack_clients_venv_base }}/{{ openstack_clients_venv_name }}"
+
+openstack_clients_upper_constraints_file: "{{ ansible_env.HOME }}/src/opendev.org/openstack/requirements/upper-constraints.txt"
diff --git a/roles/openstack-clients/tasks/main.yml b/roles/openstack-clients/tasks/main.yml
index e2924c1b7..aafa855fb 100644
--- a/roles/openstack-clients/tasks/main.yml
+++ b/roles/openstack-clients/tasks/main.yml
@@ -1,6 +1,7 @@
---
- name: Setup OpenStack clients
ansible.builtin.pip:
+ extra_args: "-c {{ openstack_clients_upper_constraints_file }}"
name: "{{ item.package }}"
virtualenv: "{{ openstack_clients_venv_path }}"
virtualenv_command: "python3 -m venv"
diff --git a/tests/get_logs.sh b/tests/get_logs.sh
index e3dc1b7be..10f64aea5 100644
--- a/tests/get_logs.sh
+++ b/tests/get_logs.sh
@@ -16,10 +16,10 @@ copy_logs() {
exit 1
fi
- cp -rnL ${VOLUMES_DIR}/kolla_logs/_data/* ${LOG_DIR}/kolla/
- cp -rnL /etc/kolla/* ${LOG_DIR}/kolla_configs/
+ [ -d ${VOLUMES_DIR}/kolla_logs/_data ] && cp -rnL ${VOLUMES_DIR}/kolla_logs/_data/* ${LOG_DIR}/kolla/
+ [ -d /etc/kolla ] && cp -rnL /etc/kolla/* ${LOG_DIR}/kolla_configs/
# Don't save the IPA images.
- rm ${LOG_DIR}/kolla_configs/config/ironic/ironic-agent.{kernel,initramfs}
+ rm -f ${LOG_DIR}/kolla_configs/config/ironic/ironic-agent.{kernel,initramfs}
mkdir ${LOG_DIR}/system_configs/
cp -rL /etc/{hostname,hosts,host.conf,resolv.conf,nsswitch.conf,systemd} ${LOG_DIR}/system_configs/
# copy docker configs if used
@@ -39,10 +39,6 @@ copy_logs() {
if [ "$CONTAINER_ENGINE" = "docker" ]; then
journalctl --no-pager -u containerd.service > ${LOG_DIR}/system_logs/containerd.log
fi
- else
- if [ "$CONTAINER_ENGINE" = "docker" ]; then
- cp /var/log/upstart/docker.log ${LOG_DIR}/system_logs/docker.log
- fi
fi
cp -r /etc/sudoers.d ${LOG_DIR}/system_logs/
@@ -103,21 +99,22 @@ copy_logs() {
ps -eo user,pid,ppid,lwp,%cpu,%mem,size,rss,cmd > ${LOG_DIR}/system_logs/ps.txt
# container engine related information
- (${CONTAINER_ENGINE} info &&
- ${CONTAINER_ENGINE} images &&
- ${CONTAINER_ENGINE} ps -a &&
- ${CONTAINER_ENGINE} network ls &&
- ${CONTAINER_ENGINE} inspect $(${CONTAINER_ENGINE} ps -aq)) > ${LOG_DIR}/system_logs/${CONTAINER_ENGINE}-info.txt
+ [ `command -v ${CONTAINER_ENGINE}` ] &&
+ ( ${CONTAINER_ENGINE} info &&
+ ${CONTAINER_ENGINE} images &&
+ ${CONTAINER_ENGINE} ps -a &&
+ ${CONTAINER_ENGINE} network ls &&
+ ${CONTAINER_ENGINE} inspect $(${CONTAINER_ENGINE} ps -aq)) > ${LOG_DIR}/system_logs/${CONTAINER_ENGINE}-info.txt
# save dbus services
- dbus-send --system --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames > ${LOG_DIR}/system_logs/dbus-services.txt
+ [ `command -v dbus-send` ] && dbus-send --system --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames > ${LOG_DIR}/system_logs/dbus-services.txt
# cephadm related logs
if [ `command -v cephadm` ]; then
mkdir -p ${LOG_DIR}/ceph
- sudo cp /etc/ceph/ceph.conf ${LOG_DIR}/ceph
- sudo cp /var/run/ceph/*/cluster.yml ${LOG_DIR}/ceph/cluster.yml
- sudo cp /var/log/ceph/cephadm.log* ${LOG_DIR}/ceph/
+ [ -d /etc/ceph ] && sudo cp /etc/ceph/ceph.conf ${LOG_DIR}/ceph
+ [ -d /var/run/ceph ] && sudo cp /var/run/ceph/*/cluster.yml ${LOG_DIR}/ceph/cluster.yml
+ [ -d /var/log/ceph ] && sudo cp /var/log/ceph/cephadm.log* ${LOG_DIR}/ceph/
sudo cephadm shell -- ceph --connect-timeout 5 -s > ${LOG_DIR}/ceph/ceph_s.txt
sudo cephadm shell -- ceph --connect-timeout 5 osd tree > ${LOG_DIR}/ceph/ceph_osd_tree.txt
fi
diff --git a/tests/run-hashi-vault.yml b/tests/run-hashi-vault.yml
index 84b8f226b..2f25f1aa7 100644
--- a/tests/run-hashi-vault.yml
+++ b/tests/run-hashi-vault.yml
@@ -6,6 +6,7 @@
- name: Set facts for commonly used variables
set_fact:
kolla_ansible_src_dir: "{{ ansible_env.PWD }}/src/{{ zuul.project.canonical_hostname }}/openstack/kolla-ansible"
+ kolla_ansible_venv_path: "{{ ansible_env.HOME }}/kolla-ansible-venv"
upper_constraints_file: "{{ ansible_env.HOME }}/src/opendev.org/openstack/requirements/upper-constraints.txt"
pip_user_path_env:
PATH: "{{ ansible_env.HOME + '/.local/bin:' + ansible_env.PATH }}"
@@ -21,27 +22,40 @@
mode: 0777
become: true
- - name: Ensure python3-pip exists
- package:
- name: python3-pip
+ - name: Install Python3.12 on RHEL derivatives
+ dnf:
+ name:
+ - python3.12
+ - python3.12-devel
+ state: latest
+ when: ansible_facts.os_family == 'RedHat'
become: true
- # NOTE(mgoddard): We need a recent pip to install the latest cryptography
- # library. See https://github.com/pyca/cryptography/issues/5753
- - name: Install pip 19.1.1+
+ - name: Create Kolla Ansible venv
+ command:
+ cmd: "{{ 'python3.12' if ansible_facts.os_family == 'RedHat' else 'python3' }} -m venv {{ kolla_ansible_venv_path }}"
+ creates: "{{ kolla_ansible_venv_path }}"
+
+ - name: Ensure the latest tested pip
+ pip:
+ name: "pip==23.*"
+ state: latest
+ virtualenv: "{{ kolla_ansible_venv_path }}"
+
+ - name: Ensure the latest tested setuptools
pip:
- name: "pip>=19.1.1"
- executable: "pip3"
- extra_args: "--user"
+ name: "setuptools==67.2.0"
+ state: latest
+ virtualenv: "{{ kolla_ansible_venv_path }}"
- name: Install kolla-ansible and dependencies
pip:
- executable: "pip3"
- extra_args: "-c {{ upper_constraints_file }} --user"
+ extra_args: "-c {{ upper_constraints_file }}"
name:
- "{{ kolla_ansible_src_dir }}"
- "ansible-core{{ ansible_core_version_constraint }}"
- - "ansible{{ ansible_version_constraint }}"
+ - "ara[server]<1.7"
+ virtualenv: "{{ kolla_ansible_venv_path }}"
- name: Copy passwords.yml file
copy:
@@ -51,7 +65,7 @@
remote_src: true
- name: Generate passwords
- command: kolla-genpwd
+ command: "{{ kolla_ansible_venv_path }}/bin/kolla-genpwd"
# At this point we have generated all necessary configuration, and are
# ready to test Hashicorp Vault.
@@ -62,6 +76,7 @@
chdir: "{{ kolla_ansible_src_dir }}"
environment:
BASE_DISTRO: "{{ base_distro }}"
+ KOLLA_ANSIBLE_VENV_PATH: "{{ kolla_ansible_venv_path }}"
- name: Read template file
slurp:
diff --git a/tests/run.yml b/tests/run.yml
index 275907e14..a32cec0c4 100644
--- a/tests/run.yml
+++ b/tests/run.yml
@@ -243,9 +243,18 @@
state: directory
become: true
+ - name: Install Python3.12 on RHEL derivatives
+ dnf:
+ name:
+ - python3.12
+ - python3.12-devel
+ state: latest
+ when: ansible_facts.os_family == 'RedHat'
+ become: true
+
- name: Create Kolla Ansible venv
command:
- cmd: "python3 -m venv {{ kolla_ansible_venv_path }}"
+ cmd: "{{ 'python3.12' if ansible_facts.os_family == 'RedHat' else 'python3' }} -m venv {{ kolla_ansible_venv_path }}"
creates: "{{ kolla_ansible_venv_path }}"
- name: Ensure the latest tested pip
diff --git a/tests/templates/globals-default.j2 b/tests/templates/globals-default.j2
index 32617b88b..c34f1ed9f 100644
--- a/tests/templates/globals-default.j2
+++ b/tests/templates/globals-default.j2
@@ -5,10 +5,6 @@
ansible_python_interpreter: /usr/bin/python3
{% endif %}
-# NOTE(yoctozepto): In CI it makes sense to always try to fail
-# as early as possible.
-kolla_ansible_setup_any_errors_fatal: true
-
kolla_base_distro: "{{ base_distro }}"
network_interface: "{{ api_interface_name }}"
network_address_family: "{{ address_family }}"
diff --git a/tests/templates/neutron-server-overrides.j2 b/tests/templates/neutron-server-overrides.j2
index ca84372fd..f5af5e97a 100644
--- a/tests/templates/neutron-server-overrides.j2
+++ b/tests/templates/neutron-server-overrides.j2
@@ -1,2 +1,2 @@
[DEFAULT]
-global_physnet_mtu={{ ansible_vxlan0.mtu }}
+global_physnet_mtu={{ ansible_vxlan_1.mtu }}
diff --git a/tests/test-core-openstack.sh b/tests/test-core-openstack.sh
index 0bf4acef7..59b219cb2 100755
--- a/tests/test-core-openstack.sh
+++ b/tests/test-core-openstack.sh
@@ -441,6 +441,17 @@ function test_internal_dns_integration {
openstack server create --image cirros --flavor m1.tiny --network dns-test-network ${SERVER_NAME}
SERVER_ID=$(openstack server show ${SERVER_NAME} -f value -c id)
+ attempt=0
+ while [[ -z $(openstack port list --device-id ${SERVER_ID} -f value -c ID) ]]; do
+ echo "Port for server ${SERVER_NAME} not available yet"
+ attempt=$((attempt+1))
+ if [[ $attempt -eq 10 ]]; then
+ echo "ERROR: Port for server ${SERVER_NAME} failed to become available"
+ openstack port list --device-id ${SERVER_ID}
+ return 1
+ fi
+ sleep $attempt
+ done
PORT_ID=$(openstack port list --device-id ${SERVER_ID} -f value -c ID)
DNS_ASSIGNMENT=$(openstack port show ${PORT_ID} -f json -c dns_assignment)
diff --git a/tests/test-hashicorp-vault-passwords.sh b/tests/test-hashicorp-vault-passwords.sh
index e4c79c595..caa9ba6a4 100755
--- a/tests/test-hashicorp-vault-passwords.sh
+++ b/tests/test-hashicorp-vault-passwords.sh
@@ -54,6 +54,7 @@ function teardown {
function test_hashicorp_vault_passwords {
echo "Setting up development Vault server..."
+ source $KOLLA_ANSIBLE_VENV_PATH/bin/activate
install_vault
start_vault
test_vault
diff --git a/tests/test-magnum.sh b/tests/test-magnum.sh
index df4352c12..6d580a856 100755
--- a/tests/test-magnum.sh
+++ b/tests/test-magnum.sh
@@ -61,6 +61,17 @@ function test_designate {
openstack server create --image cirros --flavor m1.tiny --network tenant-dns-test ${SERVER_NAME}
SERVER_ID=$(openstack server show ${SERVER_NAME} -f value -c id)
+ attempt=0
+ while [[ -z $(openstack port list --device-id ${SERVER_ID} -f value -c ID) ]]; do
+ echo "Port for server ${SERVER_NAME} not available yet"
+ attempt=$((attempt+1))
+ if [[ $attempt -eq 10 ]]; then
+ echo "ERROR: Port for server ${SERVER_NAME} failed to become available"
+ openstack port list --device-id ${SERVER_ID}
+ return 1
+ fi
+ sleep $attempt
+ done
PORT_ID=$(openstack port list --device-id ${SERVER_ID} -f value -c ID)
openstack floating ip create public1 --port ${PORT_ID}
diff --git a/tests/test-octavia.sh b/tests/test-octavia.sh
index cc033ac5a..032230bbe 100644
--- a/tests/test-octavia.sh
+++ b/tests/test-octavia.sh
@@ -58,6 +58,17 @@ function test_octavia {
# Add a floating IP to the load balancer.
lb_fip=$(openstack floating ip create public1 -f value -c name)
lb_vip=$(openstack loadbalancer show lb -f value -c vip_address)
+ attempt=0
+ while [[ $(openstack port list --fixed-ip ip-address=$lb_vip -f value -c ID) == "" ]]; do
+ echo "Port for LB with VIP ip addr $lb_vip not available yet"
+ attempt=$((attempt+1))
+ if [[ $attempt -eq 10 ]]; then
+ echo "ERROR: Port for LB with VIP ip addr failed to become available"
+ openstack port list --fixed-ip ip-address=$lb_vip
+ return 1
+ fi
+ sleep $attempt
+ done
lb_port_id=$(openstack port list --fixed-ip ip-address=$lb_vip -f value -c ID)
openstack floating ip set $lb_fip --port $lb_port_id
@@ -124,6 +135,17 @@ function test_internal_dns_integration {
openstack server create --image cirros --flavor m1.tiny --network dns-test-network ${SERVER_NAME}
SERVER_ID=$(openstack server show ${SERVER_NAME} -f value -c id)
+ attempt=0
+ while [[ $(openstack port list --device-id ${SERVER_ID} -f value -c ID) == "" ]]; do
+ echo "Port for server ${SERVER_NAME} not available yet"
+ attempt=$((attempt+1))
+ if [[ $attempt -eq 10 ]]; then
+ echo "ERROR: Port for server ${SERVER_NAME} failed to become available"
+ openstack port list --device-id ${SERVER_ID}
+ return 1
+ fi
+ sleep $attempt
+ done
PORT_ID=$(openstack port list --device-id ${SERVER_ID} -f value -c ID)
DNS_ASSIGNMENT=$(openstack port show ${PORT_ID} -f json -c dns_assignment)
diff --git a/tests/test-ovn.sh b/tests/test-ovn.sh
index 307105c3c..f7aa74e68 100755
--- a/tests/test-ovn.sh
+++ b/tests/test-ovn.sh
@@ -74,6 +74,17 @@ function test_octavia {
echo "Add a floating IP to the load balancer."
lb_fip=$(openstack floating ip create public1 -f value -c name)
lb_vip=$(openstack loadbalancer show test_ovn_lb -f value -c vip_address)
+ attempt=0
+ while [[ $(openstack port list --fixed-ip ip-address=$lb_vip -f value -c ID) == "" ]]; do
+ echo "Port for LB with VIP ip addr $lb_vip not available yet"
+ attempt=$((attempt+1))
+ if [[ $attempt -eq 10 ]]; then
+ echo "ERROR: Port for LB with VIP ip addr failed to become available"
+ openstack port list --fixed-ip ip-address=$lb_vip
+ return 1
+ fi
+ sleep $attempt
+ done
lb_port_id=$(openstack port list --fixed-ip ip-address=$lb_vip -f value -c ID)
openstack floating ip set $lb_fip --port $lb_port_id
diff --git a/tests/upgrade.sh b/tests/upgrade.sh
index f897cabb6..45ea07dd5 100755
--- a/tests/upgrade.sh
+++ b/tests/upgrade.sh
@@ -12,40 +12,10 @@ function upgrade {
source $KOLLA_ANSIBLE_VENV_PATH/bin/activate
- kolla-ansible -i ${RAW_INVENTORY} -vvv prechecks --skip-tags rabbitmq-ha-precheck &> /tmp/logs/ansible/upgrade-prechecks
-
- # NOTE(mattcrees): As om_enable_rabbitmq_quorum_queues now defaults to
- # true in Bobcat, we need to perform a migration to durable queues.
- SERVICE_TAGS="heat,keystone,neutron,nova"
- if [[ $SCENARIO == "zun" ]] || [[ $SCENARIO == "cephadm" ]]; then
- SERVICE_TAGS+=",cinder"
- fi
- if [[ $SCENARIO == "scenario_nfv" ]]; then
- SERVICE_TAGS+=",barbican"
- fi
- if [[ $SCENARIO == "ironic" ]]; then
- SERVICE_TAGS+=",ironic"
- fi
- if [[ $SCENARIO == "masakari" ]]; then
- SERVICE_TAGS+=",masakari"
- fi
- if [[ $SCENARIO == "ovn" ]] || [[ $SCENARIO == "octavia" ]]; then
- SERVICE_TAGS+=",octavia"
- fi
- if [[ $SCENARIO == "magnum" ]]; then
- SERVICE_TAGS+=",magnum,designate"
- fi
- kolla-ansible -i ${RAW_INVENTORY} -vvv stop --tags $SERVICE_TAGS --yes-i-really-really-mean-it &> /tmp/logs/ansible/stop
- kolla-ansible -i ${RAW_INVENTORY} -vvv genconfig &> /tmp/logs/ansible/genconfig
- kolla-ansible -i ${RAW_INVENTORY} -vvv reconfigure --tags rabbitmq &> /tmp/logs/ansible/reconfigure-rabbitmq
- kolla-ansible -i ${RAW_INVENTORY} -vvv rabbitmq-reset-state &> /tmp/logs/ansible/rabbitmq-reset-state
-
+ kolla-ansible -i ${RAW_INVENTORY} -vvv prechecks &> /tmp/logs/ansible/upgrade-prechecks
kolla-ansible -i ${RAW_INVENTORY} -vvv pull &> /tmp/logs/ansible/pull-upgrade
kolla-ansible -i ${RAW_INVENTORY} -vvv upgrade &> /tmp/logs/ansible/upgrade
- # Check that all appropriate RabbitMQ queues are now quorum queues.
- kolla-ansible -i ${RAW_INVENTORY} -vvv prechecks --tags rabbitmq-ha-precheck &> /tmp/logs/ansible/rabbitmq-ha-precheck
-
kolla-ansible -i ${RAW_INVENTORY} -vvv post-deploy &> /tmp/logs/ansible/upgrade-post-deploy
kolla-ansible -i ${RAW_INVENTORY} -vvv validate-config &> /tmp/logs/ansible/validate-config
diff --git a/tools/kolla-ansible b/tools/kolla-ansible
index f2daa7f4e..976853cf5 100755
--- a/tools/kolla-ansible
+++ b/tools/kolla-ansible
@@ -7,8 +7,8 @@ set -o errexit
# do not use _PYTHON_BIN directly, use $(get_python_bin) instead
_PYTHON_BIN=""
-ANSIBLE_VERSION_MIN=2.15
-ANSIBLE_VERSION_MAX=2.16
+ANSIBLE_VERSION_MIN=2.16
+ANSIBLE_VERSION_MAX=2.17
function get_python_bin {
if [ -n "$_PYTHON_BIN" ]; then
@@ -199,6 +199,7 @@ Commands:
post-deploy Do post deploy on deploy node
pull Pull all images for containers (only pulls, no running container changes)
rabbitmq-reset-state Force reset the state of RabbitMQ
+ rabbitmq-upgrade <version> Upgrade to a specific version of RabbitMQ
reconfigure Reconfigure OpenStack service
stop Stop Kolla containers
certificates Generate self-signed certificate for TLS *For Development Only*
@@ -247,6 +248,7 @@ gather-facts
post-deploy
pull
rabbitmq-reset-state
+rabbitmq-upgrade
reconfigure
stop
certificates
@@ -572,6 +574,12 @@ EOF
ACTION="Force reset the state of RabbitMQ"
PLAYBOOK="${BASEDIR}/ansible/rabbitmq-reset-state.yml"
;;
+(rabbitmq-upgrade)
+ RMQ_VERSION="$2"
+ ACTION="Upgrade to a specific version of RabbitMQ"
+ PLAYBOOK="${BASEDIR}/ansible/rabbitmq-upgrade.yml"
+ EXTRA_OPTS="$EXTRA_OPTS -e rabbitmq_version_suffix=${RMQ_VERSION}"
+ ;;
(bash-completion)
bash_completion
exit 0
diff --git a/zuul.d/base.yaml b/zuul.d/base.yaml
index b6b3d043d..a439e7dad 100644
--- a/zuul.d/base.yaml
+++ b/zuul.d/base.yaml
@@ -7,18 +7,19 @@
# Use SLURP version (two releases back) on SLURP upgrades.
ansible_core_version_constraint: >-
{{ ansible_core_version_slurp if is_slurp else ansible_core_version_min if is_upgrade or ansible_facts.distribution != "Ubuntu" else ansible_core_version_max }}
- ansible_core_version_slurp: "==2.14.*"
- ansible_core_version_max: "==2.16.*"
- ansible_core_version_min: "==2.15.*"
+ ansible_core_version_slurp: "==2.16.*"
+ ansible_core_version_max: "==2.17.*"
+ ansible_core_version_min: "==2.16.*"
# Test latest ansible-core version on Ubuntu, minimum supported on others.
# Use SLURP version (two releases back) on SLURP upgrades.
# TODO(mnasiadka): Remove in D.
ansible_version_constraint: >-
{{ ansible_version_slurp if is_slurp else ansible_version_min if is_upgrade or ansible_facts.distribution != "Ubuntu" else ansible_version_max }}
- ansible_version_slurp: "==7.*"
- ansible_version_min: "==8.*"
- ansible_version_max: "==9.*"
- api_interface_name: vxlan0
+ ansible_version_slurp: "==9.*"
+ ansible_version_min: "==9.*"
+ ansible_version_max: "==10.*"
+ # NOTE(mgoddard): Test the use of interface names with dashes.
+ api_interface_name: "vxlan-0"
api_network_prefix: "192.0.2."
api_network_prefix_length: "24"
configure_swap_size: 0
@@ -27,11 +28,11 @@
is_slurp: false
kolla_internal_vip_address: "192.0.2.10"
le_enabled: false
- neutron_external_bridge_name: br0
+ neutron_external_bridge_name: br-0
neutron_external_interface_name: "veth-{{ neutron_external_bridge_name }}-ext"
neutron_external_network_prefix: "198.51.100."
neutron_external_network_prefix_length: "24"
- neutron_external_vxlan_interface_name: vxlan1
+ neutron_external_vxlan_interface_name: "vxlan-1"
neutron_tenant_network_dns_server: "8.8.8.8"
neutron_tenant_network_prefix: "203.0.113."
neutron_tenant_network_prefix_length: "24"