Compare commits

...

5 Commits

Author SHA1 Message Date
Matt Anson
8b246c2316 Don't install biosdevname in arm64/aarch64 arches
Closes-Bug: #2105867
Change-Id: I57e494c6e01c45a5e102c575eaa6101a2b440868
2025-04-01 17:07:40 +01:00
satoshi-sh
a9964026d5 Convert README.md to README.rst
Fixed the formatting issue.

Change-Id: I906b5c37601675b578276fc4c50629450c03bd55
2025-03-27 20:29:44 +00:00
Zuul
aebdf6082d Merge "Create Podman DIB Element for container-based cleaning" 2025-03-26 23:06:59 +00:00
satoshi-sh
9b2277302d Create Podman DIB Element for container-based cleaning
Create ironic-python-agent-podman. It installs podman and create conf files for podman, ipa, and cleaning steps
Add explanation how to configure on README.rst

Partial-Bug: #2100556
Change-Id: Id78f0488b4aee34a2682f51d5e647ad81f9e505f
2025-03-26 19:17:15 +00:00
334fd79f97 Update master for stable/2025.1
Add file to the reno documentation build to show release notes for
stable/2025.1.

Use pbr instruction to increment the minor version number
automatically so that master versions are higher than the versions on
stable/2025.1.

Sem-Ver: feature
Change-Id: I8f985f9a4393cc12e3fa8e1e5bf213b10be5b586
2025-03-18 17:21:56 +00:00
10 changed files with 261 additions and 1 deletions
dib
releasenotes/source

@ -0,0 +1,191 @@
ironic-python-agent-podman
===========================
Adds Podman support and configuration files to ironic-python-agent-ramdisk.
Compatibility
-------------
This DIB element currently supports Debian-based images only. Additional
distribution support may be added in the future.
ironic-python-agent-config
--------------------------
**allow_arbitrary_containers**
- **Description:** Defines whether arbitrary containers are allowed. Set to true or false.
- **Environment Variable:** ``DIB_ALLOW_ARBITRARY_CONTAINERS``
- **Default:** ``false``
**allowed_containers**
- **Description:** Specifies a list of allowed container image URLs (ex "image1-url,image2-url").
- **Environment Variable:** ``DIB_ALLOWED_CONTAINERS``
- **Default:** Empty string (``""``)
**container_steps_file**
- **Description:** Specifies the path in the RAM to the YAML file containing container steps to be executed.
- **Environment Variable:** ``DIB_CONTAINER_STEPS_FILE``
- **Default:** ``/etc/ironic-python-agent.d/mysteps.yaml``
**runner**
- **Description:** Defines the container runtime to use, such as podman or docker.
- **Environment Variable:** ``DIB_RUNNER``
- **Default:** ``podman``
**pull_options**
- **Description:** Container pull options (e.g., --tls-verify=false).
- **Environment Variable:** ``DIB_PULL_OPTIONS``
- **Default:** ``--tls-verify=false``
**run_options**
- **Description:** Options passed when running the container (e.g., --rm --network=host).
- **Environment Variable:** ``DIB_RUN_OPTIONS``
- **Default:** ``--rm --network=host --tls-verify=false``
ironic-python-agent-podman
--------------------------
**podman_conf_file**
- **Description:** The path to the configuration file created in the RAM.
- **Environment Variable:** ``DIB_PODMAN_CONF_FILE``
- **Default:** ``/etc/containers/containers.conf``
ironic-python-agent-steps
--------------------------
**steps_file_path**
- **Description:** Path to the local step file to be copied to the RAM.
- **Environment Variable:** ``DIB_STEPS_FILE_PATH``
- **Default:** ``/etc/mysteps.yaml``
Example mysteps.yaml
--------------------
.. code-block:: yaml
steps:
- name: manage_container_cleanup
image: docker://172.24.4.1:5000/cleaning-image:latest
interface: deploy
reboot_requested: true
pull_options:
- --tls-verify=false
run_options:
- --rm
- --network=host
- --tls-verify=false
abortable: true
priority: 20
- name: manage_container_cleanup2
image: docker://172.24.4.1:5000/cleaning-image2:latest
interface: deploy
reboot_requested: true
pull_options:
- --tls-verify=false
run_options:
- --rm
- --network=host
- --tls-verify=false
abortable: true
priority: 10
Customization
-------------
You can override any of the default values by setting the corresponding
environment variables during the build process. This allows the configuration
to be dynamically adapted without modifying the script.
ironic-python-agent-podman
===========================
Adds Podman support and configuration files to ironic-python-agent-ramdisk.
Compatibility
-------------
This DIB element currently supports Debian-based images only. Additional
distribution support may be added in the future.
ironic-python-agent-config
--------------------------
**allow_arbitrary_containers**
- **Description:** Defines whether arbitrary containers are allowed. Set to true or false.
- **Environment Variable:** ``DIB_ALLOW_ARBITRARY_CONTAINERS``
- **Default:** ``false``
**allowed_containers**
- **Description:** Specifies a list of allowed container image URLs (ex "image1-url,image2-url").
- **Environment Variable:** ``DIB_ALLOWED_CONTAINERS``
- **Default:** Empty string (``""``)
**container_steps_file**
- **Description:** Specifies the path in the RAM to the YAML file containing container steps to be executed.
- **Environment Variable:** ``DIB_CONTAINER_STEPS_FILE``
- **Default:** ``/etc/ironic-python-agent.d/mysteps.yaml``
**runner**
- **Description:** Defines the container runtime to use, such as podman or docker.
- **Environment Variable:** ``DIB_RUNNER``
- **Default:** ``podman``
**pull_options**
- **Description:** Container pull options (e.g., --tls-verify=false).
- **Environment Variable:** ``DIB_PULL_OPTIONS``
- **Default:** ``--tls-verify=false``
**run_options**
- **Description:** Options passed when running the container (e.g., --rm --network=host).
- **Environment Variable:** ``DIB_RUN_OPTIONS``
- **Default:** ``--rm --network=host --tls-verify=false``
ironic-python-agent-podman
--------------------------
**podman_conf_file**
- **Description:** The path to the configuration file created in the RAM.
- **Environment Variable:** ``DIB_PODMAN_CONF_FILE``
- **Default:** ``/etc/containers/containers.conf``
ironic-python-agent-steps
--------------------------
**steps_file_path**
- **Description:** Path to the local step file to be copied to the RAM.
- **Environment Variable:** ``DIB_STEPS_FILE_PATH``
- **Default:** ``/etc/mysteps.yaml``
Example mysteps.yaml
--------------------
.. code-block:: yaml
steps:
- name: manage_container_cleanup
image: docker://172.24.4.1:5000/cleaning-image:latest
interface: deploy
reboot_requested: true
pull_options:
- --tls-verify=false
run_options:
- --rm
- --network=host
- --tls-verify=false
abortable: true
priority: 20
- name: manage_container_cleanup2
image: docker://172.24.4.1:5000/cleaning-image2:latest
interface: deploy
reboot_requested: true
pull_options:
- --tls-verify=false
run_options:
- --rm
- --network=host
- --tls-verify=false
abortable: true
priority: 10
Customization
-------------
You can override any of the default values by setting the corresponding
environment variables during the build process. This allows the configuration
to be dynamically adapted without modifying the script.

@ -0,0 +1,2 @@
ironic-python-agent-ramdisk
package-installs

@ -0,0 +1,21 @@
# Podman Config
PODMAN_CONF_INSIDEDIR=/etc/containers
export PODMAN_CONF_FILE=${DIB_IPA_PODMAN_CONF_FILE:-$TMP_BUILD_DIR/mnt/$PODMAN_CONF_INSIDEDIR/containers.conf}
# Ipa Config
IPA_CONF_INSIDEDIR=/etc/ironic-python-agent.d
export IPA_CONFFILE=$TMP_BUILD_DIR/mnt/$IPA_CONF_INSIDEDIR/ironic_python_agent.conf
export ALLOW_ARBITRARY_CONTAINERS="${DIB_ALLOW_ARBITRARY_CONTAINERS:-false}"
export ALLOWED_CONTAINERS="${DIB_ALLOWED_CONTAINERS:-""}"
export CONTAINER_STEPS_FILE="${DIB_CONTAINER_STEPS_FILE:-/etc/ironic-python-agent.d/mysteps.yaml}"
export RUNNER="${DIB_RUNNER:-podman}"
export PULL_OPTIONS="${DIB_PULL_OPTIONS:---tls-verify=false}"
export RUN_OPTIONS="${DIB_RUN_OPTIONS:---rm --network=host --tls-verify=false}"
# Steps Config
STEPS_INSIDEDIR=/etc/ironic-python-agent.d
export STEPS_FILE=$TMP_BUILD_DIR/mnt/$STEPS_INSIDEDIR/mysteps.yaml
export STEPS_FILE_PATH="${DIB_STEPS_FILE_PATH:-/etc/mysteps.yaml}"

@ -0,0 +1,2 @@
podman:
phase: install.d

@ -0,0 +1,10 @@
#!/bin/bash
# Ensure the directory exists
sudo mkdir -p $(dirname $PODMAN_CONF_FILE)
# Create Podman configuration file inside the ramdisk with sudo tee
echo "[engine]
no_pivot_root = true" | sudo tee $PODMAN_CONF_FILE > /dev/null
echo "Podman configuration written to $PODMAN_CONF_FILE"

@ -0,0 +1,17 @@
#!/bin/bash
# Ensure the directory exists
sudo mkdir -p $(dirname $IPA_CONFFILE)
# Write the configuration inside the ramdisk
cat <<EOF | sudo tee $IPA_CONFFILE
[container]
allow_arbitrary_containers="$ALLOW_ARBITRARY_CONTAINERS"
allowed_containers="$ALLOWED_CONTAINERS"
container_steps_file="$CONTAINER_STEPS_FILE"
runner="$RUNNER"
pull_options="$PULL_OPTIONS"
run_options="$RUN_OPTIONS"
EOF
echo "Ironic Python Agent config written to $IPA_CONFFILE"

@ -0,0 +1,10 @@
#!/bin/bash
# Copy the YAML file to the ramdisk location
if [[ -f $STEPS_FILE_PATH ]]; then
sudo cp $STEPS_FILE_PATH $STEPS_FILE
echo "Local mysteps.yaml copied to ramdisk: $STEPS_FILE"
else
echo "No valid mysteps.yaml file found at $STEPS_FILE_PATH. Please provide a valid file or check the default path."
exit 1
fi

@ -13,5 +13,5 @@ smartmontools:
sysbench:
biosdevname:
not-arch: ppc64,ppc64el,ppc64le
not-arch: aarch64,arm64,ppc64,ppc64el,ppc64le
when: IPA_DISTRO_FAMILY = rh

@ -0,0 +1,6 @@
===========================
2025.1 Series Release Notes
===========================
.. release-notes::
:branch: stable/2025.1

@ -6,6 +6,7 @@ Ironic Python Agent Builder Release Notes
:maxdepth: 1
unreleased
2025.1
2024.2
2024.1
2023.2