IPA: Switch to IPA builder and CentOS 8

Switches to use the IPA builder project for building IPA images.

Switches the IPA images used by default to CentOS 8 based image.

Changes the file extension of the IPA kernel image from vmlinuz to
kernel.

Story: 2007070
Task: 37953

Change-Id: I82fc455f41f48dacb453e135870dd776895d7c99
Story: 2006574
Task: 39485
This commit is contained in:
Mark Goddard 2020-06-11 12:15:00 +01:00
parent e75b4a7854
commit 20fb05bfb4
13 changed files with 109 additions and 45 deletions

View File

@ -86,7 +86,7 @@ kolla_bifrost_inspector_ipmi_password: "{{ ipmi_password }}"
kolla_bifrost_inspector_lldp_switch_port_interface: "{{ inspector_lldp_switch_port_interface_default }}" kolla_bifrost_inspector_lldp_switch_port_interface: "{{ inspector_lldp_switch_port_interface_default }}"
# Ironic inspector deployment kernel location. # Ironic inspector deployment kernel location.
kolla_bifrost_inspector_deploy_kernel: "http://{{ provision_oc_net_name | net_ip }}:8080/ipa.vmlinuz" kolla_bifrost_inspector_deploy_kernel: "http://{{ provision_oc_net_name | net_ip }}:8080/ipa.kernel"
# Ironic inspector deployment ramdisk location. # Ironic inspector deployment ramdisk location.
kolla_bifrost_inspector_deploy_ramdisk: "http://{{ provision_oc_net_name | net_ip }}:8080/ipa.initramfs" kolla_bifrost_inspector_deploy_ramdisk: "http://{{ provision_oc_net_name | net_ip }}:8080/ipa.initramfs"

View File

@ -13,19 +13,27 @@ ipa_build_source_url: "https://opendev.org/openstack/ironic-python-agent"
# Version of IPA source repository. Default is {{ openstack_branch }}. # Version of IPA source repository. Default is {{ openstack_branch }}.
ipa_build_source_version: "{{ openstack_branch }}" ipa_build_source_version: "{{ openstack_branch }}"
# TODO(mgoddard): Use CentOS 8. # URL of IPA builder source repository.
ipa_builder_source_url: "https://opendev.org/openstack/ironic-python-agent-builder"
# Version of IPA builder source repository. Default is master.
ipa_builder_source_version: master
# List of default Diskimage Builder (DIB) elements to use when building IPA # List of default Diskimage Builder (DIB) elements to use when building IPA
# images. # images. Default is ["centos", "enable-serial-console",
# "ironic-python-agent-ramdisk"].
ipa_build_dib_elements_default: ipa_build_dib_elements_default:
- centos7 - centos
- enable-serial-console - enable-serial-console
- ironic-agent - ironic-python-agent-ramdisk
# List of additional Diskimage Builder (DIB) elements to use when building IPA # List of additional Diskimage Builder (DIB) elements to use when building IPA
# images. # images. Default is none.
ipa_build_dib_elements_extra: [] ipa_build_dib_elements_extra: []
# List of Diskimage Builder (DIB) elements to use when building IPA images. # List of Diskimage Builder (DIB) elements to use when building IPA images.
# Default is combination of ipa_build_dib_elements_default and
# ipa_build_dib_elements_extra.
ipa_build_dib_elements: > ipa_build_dib_elements: >
{{ ipa_build_dib_elements_default + {{ ipa_build_dib_elements_default +
ipa_build_dib_elements_extra }} ipa_build_dib_elements_extra }}
@ -46,9 +54,23 @@ ipa_build_dib_env: >
{{ ipa_build_dib_env_default | {{ ipa_build_dib_env_default |
combine(ipa_build_dib_env_extra) }} combine(ipa_build_dib_env_extra) }}
# List of default git repositories containing Diskimage Builder (DIB) elements.
# See stackhpc.os-images role for usage. Default is one item for IPA builder.
ipa_build_dib_git_elements_default:
- repo: "{{ ipa_builder_source_url }}"
local: "{{ source_checkout_path }}/ironic-python-agent-builder"
version: "{{ ipa_builder_source_version }}"
elements_path: "dib"
# List of additional git repositories containing Diskimage Builder (DIB)
# elements. See stackhpc.os-images role for usage. Default is empty.
ipa_build_dib_git_elements_extra: []
# List of git repositories containing Diskimage Builder (DIB) elements. See # List of git repositories containing Diskimage Builder (DIB) elements. See
# stackhpc.os-images role for usage. # stackhpc.os-images role for usage. Default is a combination of
ipa_build_dib_git_elements: [] # ipa_build_dib_git_elements_default and ipa_build_dib_git_elements_extra.
ipa_build_dib_git_elements: >-
{{ ipa_build_dib_git_elements_default + ipa_build_dib_git_elements_extra }}
# List of DIB packages to install. Default is none. # List of DIB packages to install. Default is none.
ipa_build_dib_packages: [] ipa_build_dib_packages: []
@ -61,10 +83,10 @@ ipa_build_dib_packages: []
ipa_images_upstream_url_suffix: "-{{ openstack_branch | replace('/', '-') }}" ipa_images_upstream_url_suffix: "-{{ openstack_branch | replace('/', '-') }}"
# Name of Ironic deployment kernel image to register in Glance. # Name of Ironic deployment kernel image to register in Glance.
ipa_images_kernel_name: "ipa.vmlinuz" ipa_images_kernel_name: "ipa.kernel"
# URL of Ironic deployment kernel image to download. # URL of Ironic deployment kernel image to download.
ipa_kernel_upstream_url: "https://tarballs.openstack.org/ironic-python-agent/dib/files/ipa-centos7{{ ipa_images_upstream_url_suffix }}.kernel" ipa_kernel_upstream_url: "https://tarballs.openstack.org/ironic-python-agent/dib/files/ipa-centos8{{ ipa_images_upstream_url_suffix }}.kernel"
# URL of checksum of Ironic deployment kernel image. # URL of checksum of Ironic deployment kernel image.
ipa_kernel_checksum_url: "{{ ipa_kernel_upstream_url }}.{{ ipa_kernel_checksum_algorithm }}" ipa_kernel_checksum_url: "{{ ipa_kernel_upstream_url }}.{{ ipa_kernel_checksum_algorithm }}"
@ -76,7 +98,7 @@ ipa_kernel_checksum_algorithm: "sha256"
ipa_images_ramdisk_name: "ipa.initramfs" ipa_images_ramdisk_name: "ipa.initramfs"
# URL of Ironic deployment ramdisk image to download. # URL of Ironic deployment ramdisk image to download.
ipa_ramdisk_upstream_url: "https://tarballs.openstack.org/ironic-python-agent/dib/files/ipa-centos7{{ ipa_images_upstream_url_suffix }}.initramfs" ipa_ramdisk_upstream_url: "https://tarballs.openstack.org/ironic-python-agent/dib/files/ipa-centos8{{ ipa_images_upstream_url_suffix }}.initramfs"
# URL of checksum of Ironic deployment ramdisk image. # URL of checksum of Ironic deployment ramdisk image.
ipa_ramdisk_checksum_url: "{{ ipa_ramdisk_upstream_url }}.{{ ipa_ramdisk_checksum_algorithm }}" ipa_ramdisk_checksum_url: "{{ ipa_ramdisk_upstream_url }}.{{ ipa_ramdisk_checksum_algorithm }}"

View File

@ -20,7 +20,7 @@
# These are the filenames generated by overcloud-ipa-build.yml. # These are the filenames generated by overcloud-ipa-build.yml.
ipa_image_name: "ipa" ipa_image_name: "ipa"
ipa_images: ipa_images:
- "{{ ipa_image_name }}.vmlinuz" - "{{ ipa_image_name }}.kernel"
- "{{ ipa_image_name }}.initramfs" - "{{ ipa_image_name }}.initramfs"
tasks: tasks:
- block: - block:

View File

@ -17,7 +17,7 @@
# These are the filenames generated by overcloud-ipa-build.yml. # These are the filenames generated by overcloud-ipa-build.yml.
ipa_image_name: "ipa" ipa_image_name: "ipa"
ipa_images: ipa_images:
- "{{ ipa_image_name }}.vmlinuz" - "{{ ipa_image_name }}.kernel"
- "{{ ipa_image_name }}.initramfs" - "{{ ipa_image_name }}.initramfs"
pre_tasks: pre_tasks:
- name: Validate OpenStack password authentication parameters - name: Validate OpenStack password authentication parameters

View File

@ -46,21 +46,6 @@ ipa_kernel_upstream_url: "{{ kolla_bifrost_ipa_kernel_upstream_url }}"
# URL of checksum of Ironic Python Agent (IPA) kernel image. # URL of checksum of Ironic Python Agent (IPA) kernel image.
ipa_kernel_upstream_checksum_url: "{{ kolla_bifrost_ipa_kernel_checksum_url }}" ipa_kernel_upstream_checksum_url: "{{ kolla_bifrost_ipa_kernel_checksum_url }}"
# NOTE(mgoddard): In bifrost 7.1.0, the default for ipa_kernel and
# ipa_kernel_url was changed from .vmlinuz to .kernel. This broke our inspector
# rule which uses .vmlinuz when setting driver_info.deploy_kernel. It will also
# break existing nodes if the IPA kernel is updated e.g. following an upgrade.
# Use the old value of .vmlinuz here.
# TODO(mgoddard): Remove these when we use IPA builder.
{# Using double jinja escaping here since this will be templated by kayobe #}
{# and kolla ansible, then interpreted as Ansible variables by Bifrost. #}
{{ '{% raw %}' }}
{% raw %}
ipa_kernel: "{{http_boot_folder}}/ipa.vmlinuz"
ipa_kernel_url: "{{ ipa_file_protocol }}://{{ hostvars[inventory_hostname]['ansible_' + ans_network_interface]['ipv4']['address'] }}:{{file_url_port}}/ipa.vmlinuz"
{% endraw %}
{{ '{% endraw %}' }}
# Algorithm of checksum of Ironic Python Agent (IPA) kernel image. # Algorithm of checksum of Ironic Python Agent (IPA) kernel image.
ipa_kernel_upstream_checksum_algo: "{{ kolla_bifrost_ipa_kernel_checksum_algorithm }}" ipa_kernel_upstream_checksum_algo: "{{ kolla_bifrost_ipa_kernel_checksum_algorithm }}"

View File

@ -9,7 +9,7 @@
vars: vars:
ipa_image_name: "ipa" ipa_image_name: "ipa"
ipa_images: ipa_images:
- "{{ ipa_image_name }}.vmlinuz" - "{{ ipa_image_name }}.kernel"
- "{{ ipa_image_name }}.initramfs" - "{{ ipa_image_name }}.initramfs"
ipa_image_force_rebuild: false ipa_image_force_rebuild: false
tasks: tasks:

View File

@ -13,8 +13,8 @@
# images. # images.
- ipa.initramfs - ipa.initramfs
- ipa.initramfs.sha256 - ipa.initramfs.sha256
- ipa.vmlinuz - ipa.kernel
- ipa.vmlinuz.sha256 - ipa.kernel.sha256
register: find_result register: find_result
become: true become: true

View File

@ -31,7 +31,7 @@ nova_flavors:
physnet_mappings: physnet_mappings:
physnet1: breth1 physnet1: breth1
deploy_kernel: ipa.vmlinuz deploy_kernel: ipa.kernel
deploy_ramdisk: ipa.initramfs deploy_ramdisk: ipa.initramfs
# Use a custom socket path to avoid a conflict with the nova_libvirt kolla # Use a custom socket path to avoid a conflict with the nova_libvirt kolla

View File

@ -223,7 +223,7 @@ The following options configure the Ironic Inspector service in the
``${KAYOBE_CONFIG_PATH}/inspector.yml``. ``${KAYOBE_CONFIG_PATH}/inspector.yml``.
``kolla_bifrost_inspector_deploy_kernel`` ``kolla_bifrost_inspector_deploy_kernel``
Ironic inspector deployment kernel location. Default is ``http://{{ Ironic inspector deployment kernel location. Default is ``http://{{
provision_oc_net_name | net_ip }}:8080/ipa.vmlinuz``. provision_oc_net_name | net_ip }}:8080/ipa.kernel``.
``kolla_bifrost_inspector_deploy_ramdisk`` ``kolla_bifrost_inspector_deploy_ramdisk``
Ironic inspector deployment ramdisk location. Default is ``http://{{ Ironic inspector deployment ramdisk location. Default is ``http://{{
provision_oc_net_name | net_ip }}:8080/ipa.initramfs``. provision_oc_net_name | net_ip }}:8080/ipa.initramfs``.

View File

@ -39,10 +39,15 @@ image build``.
https://opendev.org/openstack/ironic-python-agent https://opendev.org/openstack/ironic-python-agent
``ipa_build_source_version`` ``ipa_build_source_version``
Version of IPA source repository. Default is ``{{ openstack_branch }}``. Version of IPA source repository. Default is ``{{ openstack_branch }}``.
``ipa_builder_source_url``
URL of IPA builder source repository. Default is
https://opendev.org/openstack/ironic-python-agent-builder
``ipa_builder_source_version``
Version of IPA builder source repository. Default is ``master``.
``ipa_build_dib_elements_default`` ``ipa_build_dib_elements_default``
List of default Diskimage Builder (DIB) elements to use when building IPA List of default Diskimage Builder (DIB) elements to use when building IPA
images. Default is ``["centos7", "enable-serial-console", images. Default is ``["centos", "enable-serial-console",
"ironic-agent"]``. "ironic-python-agent-ramdisk"]``.
``ipa_build_dib_elements_extra`` ``ipa_build_dib_elements_extra``
List of additional Diskimage Builder (DIB) elements to use when building IPA List of additional Diskimage Builder (DIB) elements to use when building IPA
images. Default is empty. images. Default is empty.
@ -62,10 +67,21 @@ image build``.
Dictionary of environment variables to provide to Diskimage Builder (DIB) Dictionary of environment variables to provide to Diskimage Builder (DIB)
during IPA image build. Default is a combination of during IPA image build. Default is a combination of
``ipa_build_dib_env_default`` and ``ipa_build_dib_env_extra``. ``ipa_build_dib_env_default`` and ``ipa_build_dib_env_extra``.
``ipa_build_dib_git_elements_default``
List of default git repositories containing Diskimage Builder (DIB)
elements. See `stackhpc.os-images
<https://galaxy.ansible.com/stackhpc/os-images>`__ role for usage. Default
is one item for IPA builder.
``ipa_build_dib_git_elements_extra``
List of additional git repositories containing Diskimage Builder (DIB)
elements. See `stackhpc.os-images
<https://galaxy.ansible.com/stackhpc/os-images>`__ role for usage. Default
is none.
``ipa_build_dib_git_elements`` ``ipa_build_dib_git_elements``
List of git repositories containing Diskimage Builder (DIB) elements. See List of git repositories containing Diskimage Builder (DIB) elements. See
`stackhpc.os-images <https://galaxy.ansible.com/stackhpc/os-images>`__ role `stackhpc.os-images <https://galaxy.ansible.com/stackhpc/os-images>`__ role
for usage. Default is none. for usage. Default is combination of ``ipa_build_dib_git_elements_default``
and ``ipa_build_dib_git_elements_extra``.
``ipa_build_dib_packages`` ``ipa_build_dib_packages``
List of DIB packages to install. Default is none. List of DIB packages to install. Default is none.
@ -189,10 +205,10 @@ Agent documentation <>` for full details.
``{{ openstack_branch }}``. ``{{ openstack_branch }}``.
``ipa_images_kernel_name`` ``ipa_images_kernel_name``
Name of Ironic deployment kernel image to register in Glance. Default is Name of Ironic deployment kernel image to register in Glance. Default is
``ipa.vmlinuz``. ``ipa.kernel``.
``ipa_kernel_upstream_url`` ``ipa_kernel_upstream_url``
URL of Ironic deployment kernel image to download. Default is URL of Ironic deployment kernel image to download. Default is
``https://tarballs.openstack.org/ironic-python-agent/dib/files/ipa-centos7{{ ``https://tarballs.openstack.org/ironic-python-agent/dib/files/ipa-centos8{{
ipa_images_upstream_url_suffix }}.kernel``. ipa_images_upstream_url_suffix }}.kernel``.
``ipa_kernel_checksum_url`` ``ipa_kernel_checksum_url``
URL of checksum of Ironic deployment kernel image. Default is ``{{ URL of checksum of Ironic deployment kernel image. Default is ``{{
@ -205,7 +221,7 @@ Agent documentation <>` for full details.
``ipa.initramfs``. ``ipa.initramfs``.
``ipa_ramdisk_upstream_url`` ``ipa_ramdisk_upstream_url``
URL of Ironic deployment ramdisk image to download. Default is URL of Ironic deployment ramdisk image to download. Default is
``https://tarballs.openstack.org/ironic-python-agent/dib/files/ipa-centos7{{ ``https://tarballs.openstack.org/ironic-python-agent/dib/files/ipa-centos8{{
ipa_images_upstream_url_suffix }}.initramfs``. ipa_images_upstream_url_suffix }}.initramfs``.
``ipa_ramdisk_checksum_url`` ``ipa_ramdisk_checksum_url``
URL of checksum of Ironic deployment ramdisk image. Default is ``{{ URL of checksum of Ironic deployment ramdisk image. Default is ``{{

View File

@ -13,15 +13,24 @@
# Version of IPA source repository. Default is {{ openstack_branch }}. # Version of IPA source repository. Default is {{ openstack_branch }}.
#ipa_build_source_version: #ipa_build_source_version:
# URL of IPA builder source repository.
#ipa_builder_source_url:
# Version of IPA builder source repository. Default is master.
#ipa_build_source_version:
# List of default Diskimage Builder (DIB) elements to use when building IPA # List of default Diskimage Builder (DIB) elements to use when building IPA
# images. # images. Default is ["centos", "enable-serial-console",
# "ironic-python-agent-ramdisk"].
#ipa_build_dib_elements_default: #ipa_build_dib_elements_default:
# List of additional Diskimage Builder (DIB) elements to use when building IPA # List of additional Diskimage Builder (DIB) elements to use when building IPA
# images. # images. Default is none.
#ipa_build_dib_elements_extra: #ipa_build_dib_elements_extra:
# List of Diskimage Builder (DIB) elements to use when building IPA images. # List of Diskimage Builder (DIB) elements to use when building IPA images.
# Default is combination of ipa_build_dib_elements_default and
# ipa_build_dib_elements_extra.
#ipa_build_dib_elements: #ipa_build_dib_elements:
# Dictionary of default environment variables to provide to Diskimage Builder # Dictionary of default environment variables to provide to Diskimage Builder
@ -36,8 +45,17 @@
# during IPA image build. # during IPA image build.
#ipa_build_dib_env: #ipa_build_dib_env:
# List of default git repositories containing Diskimage Builder (DIB) elements.
# See stackhpc.os-images role for usage. Default is one item for IPA builder.
#ipa_build_dib_git_elements_default:
# List of additional git repositories containing Diskimage Builder (DIB)
# elements. See stackhpc.os-images role for usage. Default is empty.
#ipa_build_dib_git_elements_extra:
# List of git repositories containing Diskimage Builder (DIB) elements. See # List of git repositories containing Diskimage Builder (DIB) elements. See
# stackhpc.os-images role for usage. # stackhpc.os-images role for usage. Default is a combination of
# ipa_build_dib_git_elements_default and ipa_build_dib_git_elements_extra.
#ipa_build_dib_git_elements: #ipa_build_dib_git_elements:
# List of DIB packages to install. Default is none. # List of DIB packages to install. Default is none.

View File

@ -27,10 +27,9 @@
- name: Ensure test Tenks cluster is deployed - name: Ensure test Tenks cluster is deployed
shell: shell:
# Pass absolute source directory, since otherwise the `chdir` will # Pass absolute source directory, since otherwise the `chdir` will
# cause this to fail. Don't use previous_kayobe_source_dir as # cause this to fail.
# tenks-deploy-compute.sh does not exist there.
cmd: dev/tenks-deploy-compute.sh '{{ tenks_src_dir }}' &> {{ logs_dir }}/ansible/tenks-deploy cmd: dev/tenks-deploy-compute.sh '{{ tenks_src_dir }}' &> {{ logs_dir }}/ansible/tenks-deploy
chdir: "{{ kayobe_src_dir }}" chdir: "{{ previous_kayobe_src_dir }}"
environment: environment:
KAYOBE_CONFIG_SOURCE_PATH: "{{ previous_kayobe_config_src_dir }}" KAYOBE_CONFIG_SOURCE_PATH: "{{ previous_kayobe_config_src_dir }}"

View File

@ -0,0 +1,24 @@
---
upgrade:
- |
Changes Ironic Python Agent (IPA) image builds to use `IPA builder
<https://docs.openstack.org/ironic-python-agent-builder/latest/>`__.
The following variables have been added to configure the IPA builder source
location: ``ipa_builder_source_url``, ``ipa_builder_source_version``. See
`story 2007070 <https://storyboard.openstack.org/#!/story/2007070>`__ for
details.
- |
Adds new variables to allow extension of the list of Disk Image Builder
(DIB) git repositories available when building Ironic Python Agent (IPA)
images: ``ipa_build_dib_git_elements_default`` and
``ipa_build_dib_git_elements_extra``. The existing
``ipa_build_dib_git_elements`` variable is a concatenation of these.
By default there is now one git repository configured for IPA builder, and
use of ``ipa_build_dib_git_elements`` should typically be replaced with
``ipa_build_dib_git_elements_extra`` to avoid losing this default.
- |
The file extension used for the Ironic Python Agent (IPA) kernel image has
changed from ``vmlinuz`` to ``kernel``, in line with upstream changes in
Ironic. This affects both Bifrost running on the seed and Ironic running in
the overcloud for bare metal compute. If building images locally, this
should be done prior to upgrading services.