baadf62635
The ironic-python-agent coreos images are unsupported and are anticipated to be removed from the tarballs.openstack.org site. In advance of this, we need to remove references to these images. Change-Id: Ifb402418d7962cf507b190e028a59b94ad5d46ac
314 lines
12 KiB
ReStructuredText
314 lines
12 KiB
ReStructuredText
=========================
|
|
Ironic Python Agent (IPA)
|
|
=========================
|
|
|
|
This section covers configuration of Ironic Python Agent (IPA) which is used by
|
|
Ironic and Ironic Inspector to deploy and inspect bare metal nodes. This is
|
|
used by the Bifrost services that run on the seed host, and also by Ironic and
|
|
Ironic Inspector services running in the overcloud for bare metal compute, if
|
|
enabled (``kolla_enable_ironic`` is ``true``). IPA configuration is typically
|
|
applied in ``${KAYOBE_CONFIG_PATH}/ipa.yml``. Consult the
|
|
:ironic-python-agent-doc:`IPA documentation <>` for full details of IPA usage
|
|
and configuration.
|
|
|
|
.. _configuration-ipa-build:
|
|
|
|
Ironic Python Agent (IPA) image build configuration
|
|
===================================================
|
|
|
|
.. note::
|
|
|
|
This section may be skipped if not building IPA images locally
|
|
(``ipa_build_images`` is ``false``).
|
|
|
|
The following options cover building of IPA images via Diskimage-builder (DIB).
|
|
Consult the :diskimage-builder-doc:`Diskimage-builder documentation <>` for
|
|
full details.
|
|
|
|
The default configuration builds a CentOS 7 ramdisk image which includes the
|
|
upstream IPA source code, and has a serial console enabled.
|
|
|
|
The images are built for Bifrost via ``kayobe seed deployment image build``,
|
|
and for Ironic in the overcloud (if enabled) via ``kayobe overcloud deployment
|
|
image build``.
|
|
|
|
``ipa_build_images``
|
|
Whether to build IPA images from source. Default is ``False``.
|
|
``ipa_build_source_url``
|
|
URL of IPA source repository. Default is
|
|
https://opendev.org/openstack/ironic-python-agent
|
|
``ipa_build_source_version``
|
|
Version of IPA source repository. Default is ``{{ openstack_branch }}``.
|
|
``ipa_build_dib_elements_default``
|
|
List of default Diskimage Builder (DIB) elements to use when building IPA
|
|
images. Default is ``["centos7", "enable-serial-console",
|
|
"ironic-agent"]``.
|
|
``ipa_build_dib_elements_extra``
|
|
List of additional Diskimage Builder (DIB) elements to use when building IPA
|
|
images. Default is empty.
|
|
``ipa_build_dib_elements``
|
|
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_env_default``
|
|
Dictionary of default environment variables to provide to Diskimage Builder
|
|
(DIB) during IPA image build. Default is
|
|
``{"DIB_REPOLOCATION_ironic_agent": "{{ ipa_build_source_url }}",
|
|
"DIB_REPOREF_ironic_agent": "{{ ipa_build_source_version }}"}``.
|
|
``ipa_build_dib_env_extra``
|
|
Dictionary of additional environment variables to provide to Diskimage
|
|
Builder (DIB) during IPA image build. Default is empty.
|
|
``ipa_build_dib_env``
|
|
Dictionary of environment variables to provide to Diskimage Builder (DIB)
|
|
during IPA image build. Default is a combination of
|
|
``ipa_build_dib_env_default`` and ``ipa_build_dib_env_extra``.
|
|
``ipa_build_dib_git_elements``
|
|
List of 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_packages``
|
|
List of DIB packages to install. Default is none.
|
|
|
|
Example: Building IPA images locally
|
|
------------------------------------
|
|
|
|
To build IPA images locally:
|
|
|
|
.. code-block:: yaml
|
|
:caption: ``ipa.yml``
|
|
|
|
ipa_build_images: true
|
|
|
|
Example: Installing IPA from a custom git repository
|
|
----------------------------------------------------
|
|
|
|
To install IPA from a custom git repository:
|
|
|
|
.. code-block:: yaml
|
|
:caption: ``ipa.yml``
|
|
|
|
ipa_source_url: https://git.example.com/ironic-python-agent
|
|
ipa_source_version: downstream
|
|
|
|
Example: Adding an element
|
|
--------------------------
|
|
|
|
In the following example, we extend the list of DIB elements to add the
|
|
:diskimage-builder-doc:`mellanox element <elements/mellanox/README>`, which can
|
|
be useful for inspecting hardware with Mellanox InfiniBand NICs.
|
|
|
|
.. code-block:: yaml
|
|
:caption: ``ipa.yml``
|
|
|
|
ipa_build_dib_elements_extra:
|
|
- "mellanox"
|
|
|
|
Example: Configuring a development user account
|
|
-----------------------------------------------
|
|
|
|
.. warning::
|
|
|
|
A development user account should not be used in production.
|
|
|
|
When debugging a failed deployment, it can sometimes be necessary to allow
|
|
access to the image via a preconfigured user account with a known password.
|
|
This can be achieved via the :diskimage-builder-doc:`devuser
|
|
<elements/devuser/README>` element.
|
|
|
|
This example shows how to add the ``devuser`` element, and configure a username
|
|
and password for an account that has passwordless sudo:
|
|
|
|
.. code-block:: yaml
|
|
:caption: ``ipa.yml``
|
|
|
|
ipa_build_dib_elements_extra:
|
|
- "devuser"
|
|
|
|
ipa_build_dib_env_extra:
|
|
DIB_DEV_USER_USERNAME: "devuser"
|
|
DIB_DEV_USER_PASSWORD: "correct horse battery staple"
|
|
DIB_DEV_USER_PWDLESS_SUDO: "yes"
|
|
|
|
Alternatively, the :diskimage-builder-doc:`dynamic-login element
|
|
<elements/dynamic-login/README>` can be used to authorize SSH keys by appending
|
|
them to the kernel arguments.
|
|
|
|
Further information on troubleshooting IPA can be found
|
|
:ironic-python-agent-doc:`here <admin/troubleshooting>`.
|
|
|
|
Example: Configuring custom DIB elements
|
|
----------------------------------------
|
|
|
|
Sometimes it is useful to use custom DIB elements that are not shipped with DIB
|
|
itself. This can be done by sharing them in a git repository.
|
|
|
|
.. code-block:: yaml
|
|
:caption: ``ipa.yml``
|
|
|
|
ipa_build_dib_elements_extra:
|
|
- "my-element"
|
|
|
|
ipa_build_dib_git_elements:
|
|
- repo: "https://git.example.com/custom-dib-elements"
|
|
local: "{{ source_checkout_path }}/custom-dib-elements"
|
|
version: "master"
|
|
elements_path: "elements"
|
|
|
|
In this example the ``master`` branch of
|
|
https://git.example.com/custom-dib-elements would have a top level ``elements``
|
|
directory, containing a ``my-element`` directory for the element.
|
|
|
|
Example: Installing a package
|
|
-----------------------------
|
|
|
|
It can be necessary to install additional packages in the IPA image. Rather
|
|
than needing to write a custom DIB element, we can use the
|
|
``ipa_build_dib_packages`` variable. For example, to install the
|
|
``biosdevname`` package:
|
|
|
|
.. code-block:: yaml
|
|
:caption: ``ipa.yml``
|
|
|
|
ipa_build_dib_packages:
|
|
- "biosdevname"
|
|
|
|
Ironic Python Agent (IPA) images configuration
|
|
==============================================
|
|
|
|
.. note::
|
|
|
|
If building IPA images locally (``ipa_build_images`` is ``true``) this
|
|
section can be skipped.
|
|
|
|
The following options configure the source of Ironic Python Agent images for
|
|
inspection and deployment. Consult the :ironic-python-agent-doc:`Ironic Python
|
|
Agent documentation <>` for full details.
|
|
|
|
``ipa_images_upstream_url_suffix``
|
|
Suffix of upstream Ironic deployment image files. Default is based on
|
|
``{{ openstack_branch }}``.
|
|
``ipa_images_kernel_name``
|
|
Name of Ironic deployment kernel image to register in Glance. Default is
|
|
``ipa.vmlinuz``.
|
|
``ipa_kernel_upstream_url``
|
|
URL of Ironic deployment kernel image to download. Default is
|
|
``https://tarballs.openstack.org/ironic-python-agent/dib/files/ipa-centos7{{
|
|
ipa_images_upstream_url_suffix }}.kernel``.
|
|
``ipa_kernel_checksum_url``
|
|
URL of checksum of Ironic deployment kernel image. Default is ``{{
|
|
ipa_kernel_upstream_url }}.{{ ipa_kernel_checksum_algorithm }}``.
|
|
``ipa_kernel_checksum_algorithm``
|
|
Algorithm of checksum of Ironic deployment kernel image. Default is
|
|
``sha256``.
|
|
``ipa_images_ramdisk_name``
|
|
Name of Ironic deployment ramdisk image to register in Glance. Default is
|
|
``ipa.initramfs``.
|
|
``ipa_ramdisk_upstream_url``
|
|
URL of Ironic deployment ramdisk image to download. Default is
|
|
``https://tarballs.openstack.org/ironic-python-agent/dib/files/ipa-centos7{{
|
|
ipa_images_upstream_url_suffix }}.initramfs``.
|
|
``ipa_ramdisk_checksum_url``
|
|
URL of checksum of Ironic deployment ramdisk image. Default is ``{{
|
|
ipa_ramdisk_upstream_url }}.{{ ipa_ramdisk_checksum_algorithm }}``.
|
|
``ipa_ramdisk_checksum_algorithm``
|
|
Algorithm of checksum of Ironic deployment ramdisk image. Default is
|
|
``sha256``.
|
|
|
|
Ironic Python Agent (IPA) deployment configuration
|
|
==================================================
|
|
|
|
The following options configure how IPA operates during deployment and
|
|
inspection.
|
|
|
|
``ipa_collect_lldp``
|
|
Whether to enable collection of LLDP TLVs. Default is ``True``.
|
|
``ipa_collectors_default``
|
|
.. note::
|
|
|
|
``extra-hardware`` is not currently included as it requires a ramdisk
|
|
with the ``hardware`` python module installed.
|
|
|
|
List of default inspection collectors to run. Default is ``["default",
|
|
"logs", "pci-devices"]``.
|
|
``ipa_collectors_extra``
|
|
List of additional inspection collectors to run. Default is none.
|
|
``ipa_collectors``
|
|
List of inspection collectors to run. Default is a combination of
|
|
``ipa_collectors_default`` and ``ipa_collectors_extra``.
|
|
``ipa_benchmarks_default``
|
|
List of default inspection benchmarks to run. Default is ``["cpu", "disk",
|
|
"ram"]``.
|
|
``ipa_benchmarks_extra``
|
|
List of extra inspection benchmarks to run. Default is none.
|
|
``ipa_benchmarks``
|
|
.. note::
|
|
|
|
The ``extra-hardware`` collector must be enabled in order to execute
|
|
benchmarks during inspection.
|
|
|
|
List of inspection benchmarks to run. Default is a combination of
|
|
``ipa_benchmarks_default`` and ``ipa_benchmarks_extra``.
|
|
``ipa_kernel_options_default``
|
|
List of default kernel parameters for Ironic python agent. Default includes
|
|
``ipa-collect-lldp``, ``ipa-inspection-collectors`` and
|
|
``ipa-inspection-benchmarks``, with arguments taken from
|
|
``ipa_collect_lldp``, ``ipa_collectors`` and ``ipa_benchmarks``.
|
|
``ipa_kernel_options_extra``
|
|
List of additional kernel parameters for Ironic python agent. Default is
|
|
none.
|
|
``ipa_kernel_options``
|
|
List of kernel parameters for Ironic python agent. Default is a combination
|
|
of ``ipa_kernel_options_default`` and ``ipa_kernel_options_extra``.
|
|
|
|
Example: Adding the ``extra-hardware`` collector
|
|
------------------------------------------------
|
|
|
|
The ``extra-hardware`` collector may be used to collect additional information
|
|
about hardware during inspection. It is also a requirement for running
|
|
benchmarks. This collector depends on the Python `hardware package
|
|
<https://pypi.org/project/hardware/>`__, which is not installed in IPA images
|
|
by default.
|
|
|
|
The following example enables the ``extra-hardware`` collector:
|
|
|
|
.. code-block:: yaml
|
|
:caption: ``ipa.yml``
|
|
|
|
ipa_collectors_extra:
|
|
- "extra-hardware"
|
|
|
|
The `StackHPC image elements
|
|
<https://github.com/stackhpc/stackhpc-image-elements>`__ git repository
|
|
provides an ``ipa-extra-hardware`` element which may be used to install this
|
|
package. It may be used as follows if building an IPA image locally:
|
|
|
|
.. code-block:: yaml
|
|
:caption: ``ipa.yml``
|
|
|
|
ipa_build_dib_elements_extra:
|
|
- "ipa-extra-hardware"
|
|
|
|
ipa_build_dib_git_elements:
|
|
- repo: "https://github.com/stackhpc/stackhpc-image-elements"
|
|
local: "{{ source_checkout_path }}/stackhpc-image-elements"
|
|
version: "master"
|
|
elements_path: "elements"
|
|
|
|
ipa_build_dib_env_extra:
|
|
# This is to workaround the fact that pip > 10 will produce an error if
|
|
# you try and uninstall a distuils installed package. Previous versions
|
|
# would remove the metadata only - leaving the code intact, see:
|
|
# https://bugs.launchpad.net/diskimage-builder/+bug/1768135
|
|
DIB_INSTALLTYPE_pip_and_virtualenv: package
|
|
|
|
Example: Passing additional kernel arguments to IPA
|
|
---------------------------------------------------
|
|
|
|
The following example shows how to pass additional kernel arguments to IPA:
|
|
|
|
.. code-block:: yaml
|
|
:caption: ``ipa.yml``
|
|
|
|
ipa_kernel_options_extra:
|
|
- "foo=bar"
|