diff options
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" |
