kayobe/ansible/overcloud-ipa-images.yml
Mark Goddard 2de3a2c578 Switch from shade to openstacksdk
Upstream Ansible OpenStack modules now use openstacksdk rather than shade.
Switch local Ansible modules to follow suit. Also switch to use the
stackhpc.os_openstacksdk role from stackhpc.os-shade.

The stackhpc.os-shade role is removed during 'kayobe control host upgrade'.

Change-Id: Id3894c3c36ef99f00ed463de6a3457e11733d6b7
Story: 2007294
Task: 38759
2020-02-20 15:28:56 +00:00

112 lines
4.2 KiB
YAML

---
- name: Check whether Ironic is enabled
hosts: controllers
tags:
- ipa-images
tasks:
- name: Create controllers group with ironic enabled
group_by:
key: "controllers_for_ipa_images_{{ kolla_enable_ironic | bool }}"
- name: Ensure Ironic Python Agent (IPA) images are downloaded and registered
hosts: controllers_for_ipa_images_True[0]
gather_facts: False
tags:
- ipa-images
vars:
# These are the filenames generated by overcloud-ipa-build.yml.
ipa_image_name: "ipa"
ipa_images:
- "{{ ipa_image_name }}.vmlinuz"
- "{{ 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: "{{ yum_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 }}"