388dfa369c
There are a few places where we have a play with one task that uses the group_by module to generate groups that are used in a subsequent play. These plays do not need to gather facts for their target hosts. In particular, the kolla-openstack.yml playbook should really be able to operate without access to remote hosts. This change also adds changed_when: false to all group_by tasks, since they show as changed but haven't really made any changes outside of Ansible. TrivialFix Change-Id: I18f67eda4e48058f3f402b9d0e692d6eeb02855f
113 lines
4.3 KiB
YAML
113 lines
4.3 KiB
YAML
---
|
|
- name: Check whether Ironic is enabled
|
|
hosts: controllers
|
|
gather_facts: False
|
|
tags:
|
|
- ipa-images
|
|
tasks:
|
|
- name: Create controllers group with ironic enabled
|
|
group_by:
|
|
key: "controllers_for_ipa_images_{{ kolla_enable_ironic | bool }}"
|
|
changed_when: false
|
|
|
|
- name: Ensure Ironic Python Agent (IPA) images are downloaded and registered
|
|
hosts: controllers_for_ipa_images_True[0]
|
|
tags:
|
|
- ipa-images
|
|
vars:
|
|
# These are the filenames generated by overcloud-ipa-build.yml.
|
|
ipa_image_name: "ipa"
|
|
ipa_images:
|
|
- "{{ ipa_image_name }}.kernel"
|
|
- "{{ ipa_image_name }}.initramfs"
|
|
pre_tasks:
|
|
- name: Validate OpenStack password authentication parameters
|
|
fail:
|
|
msg: >
|
|
Required OpenStack authentication parameter {{ item }} is
|
|
{% if item in openstack_auth %}empty{% else %}not present{% endif %}
|
|
in openstack_auth. Have you sourced the environment file?
|
|
when:
|
|
- openstack_auth_type == 'password'
|
|
- item not in openstack_auth or not openstack_auth[item]
|
|
with_items: "{{ openstack_auth_password_required_params }}"
|
|
tags:
|
|
- config-validation
|
|
|
|
- block:
|
|
- name: Check for the presence of locally built Ironic Python Agent (IPA) images
|
|
stat:
|
|
path: "{{ image_cache_path }}/{{ ipa_image_name }}/{{ item }}"
|
|
get_md5: False
|
|
get_checksum: False
|
|
mime: False
|
|
with_items: "{{ ipa_images }}"
|
|
register: ipa_image_stat
|
|
|
|
- name: Validate the presence of locally built Ironic Python Agent (IPA) images
|
|
fail:
|
|
msg: >
|
|
Expected locally built Ironic Python Agent (IPA) image
|
|
{{ item.item }} was not present in {{ image_cache_path }}.
|
|
with_items: "{{ ipa_image_stat.results }}"
|
|
when: not item.stat.exists
|
|
when: ipa_build_images | bool
|
|
tags:
|
|
- config-validation
|
|
|
|
- name: Set fact containing the Ironic Python Agent (IPA) image URLs
|
|
set_fact:
|
|
# Don't pass the kernel and ramdisk image URLs if using built images.
|
|
ipa_images_kernel_url: "{{ ipa_kernel_upstream_url }}"
|
|
ipa_images_kernel_checksum_url: "{{ ipa_kernel_checksum_url }}"
|
|
ipa_images_kernel_checksum_algorithm: "{{ ipa_kernel_checksum_algorithm }}"
|
|
ipa_images_ramdisk_url: "{{ ipa_ramdisk_upstream_url }}"
|
|
ipa_images_ramdisk_checksum_url: "{{ ipa_ramdisk_checksum_url }}"
|
|
ipa_images_ramdisk_checksum_algorithm: "{{ ipa_ramdisk_checksum_algorithm }}"
|
|
when: not ipa_build_images | bool
|
|
|
|
- name: Check whether the image cache directory exists
|
|
stat:
|
|
path: "{{ image_cache_path }}"
|
|
get_md5: False
|
|
get_checksum: False
|
|
mime: False
|
|
register: image_cache_stat
|
|
|
|
- name: Ensure the image cache directory exists
|
|
file:
|
|
path: "{{ image_cache_path }}"
|
|
state: directory
|
|
owner: "{{ ansible_user_uid }}"
|
|
group: "{{ ansible_user_gid }}"
|
|
become: True
|
|
when: >-
|
|
not image_cache_stat.stat.exists or
|
|
not image_cache_stat.stat.writeable
|
|
|
|
- name: Ensure locally built Ironic Python Agent (IPA) images are copied
|
|
copy:
|
|
src: "{{ image_cache_path }}/{{ ipa_image_name }}/{{ item.src }}"
|
|
dest: "{{ image_cache_path }}/{{ ipa_image_name }}/{{ item.dest }}"
|
|
remote_src: True
|
|
with_items:
|
|
- src: "{{ ipa_images[0] }}"
|
|
dest: "{{ ipa_images_kernel_name }}"
|
|
- src: "{{ ipa_images[1] }}"
|
|
dest: "{{ ipa_images_ramdisk_name }}"
|
|
when:
|
|
- ipa_build_images | bool
|
|
- item.src != item.dest
|
|
roles:
|
|
- role: ipa-images
|
|
os_openstacksdk_install_epel: "{{ dnf_install_epel }}"
|
|
os_openstacksdk_state: latest
|
|
ipa_images_venv: "{{ virtualenv_path }}/openstacksdk"
|
|
ipa_images_upper_constraints_file: "{{ pip_upper_constraints_file }}"
|
|
ipa_images_openstack_auth_type: "{{ openstack_auth_type }}"
|
|
ipa_images_openstack_auth: "{{ openstack_auth }}"
|
|
ipa_images_openstack_auth_env: "{{ openstack_auth_env }}"
|
|
ipa_images_openstack_cacert: "{{ openstack_cacert }}"
|
|
ipa_images_openstack_interface: "{{ openstack_interface }}"
|
|
ipa_images_cache_path: "{{ image_cache_path }}/{{ ipa_image_name }}"
|