kayobe/ansible/overcloud-ipa-images.yml
Will Szumski 9a5d572a09 Bump up Ansible supported versions to 8.x/9.x
This change bumps up the maximum supported Ansible version to 9.x
(ansible-core 2.16.x) and minimum to 8.x. This synchronises Kayobe with
Kolla Ansible.

Notable changes
---------------

- Removed use of get_md5 when using stat module, See:
  d955fb1590

- Remove use of include (instead of import_tasks/include_tasks) which
  has now been removed. See:
  8db9bd7574

Change-Id: I2ea9b2ec58913722c4defffbeee88cc420dcbdab
2024-05-27 15:31:46 +00:00

111 lines
4.2 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_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_checksum: False
mime: False
register: image_cache_stat
- name: Ensure the image cache directory exists
file:
path: "{{ image_cache_path }}"
state: directory
owner: "{{ ansible_facts.user_uid }}"
group: "{{ ansible_facts.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: "{{ openstacksdk_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 }}"