Compare commits
121 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8b246c2316 | ||
![]() |
a9964026d5 | ||
![]() |
aebdf6082d | ||
![]() |
9b2277302d | ||
334fd79f97 | |||
![]() |
72a02b7b68 | ||
![]() |
4dba6f4ef2 | ||
![]() |
4a9f329f69 | ||
![]() |
0b3f3dc110 | ||
![]() |
36b5e11de6 | ||
![]() |
f340ae3100 | ||
![]() |
142834e41b | ||
![]() |
46a8e0104e | ||
![]() |
2cab2e4143 | ||
![]() |
ef33cc89e7 | ||
d6008a941d | |||
![]() |
8a27cf7167 | ||
![]() |
ac07c360a5 | ||
a23d3d0328 | |||
![]() |
e29375da7e | ||
![]() |
a106110fcf | ||
![]() |
6c3a8f174f | ||
![]() |
76e2a71d58 | ||
![]() |
6a767738f4 | ||
![]() |
f92befe127 | ||
811c63b3b7 | |||
6fdaa6fabc | |||
![]() |
711899e575 | ||
4b48bc311f | |||
53030729dd | |||
![]() |
1d2877e872 | ||
![]() |
dfd24a946e | ||
![]() |
99adeec0d7 | ||
efe4b0d7f2 | |||
![]() |
1e5a1166dc | ||
![]() |
800c6040fb | ||
![]() |
a00debaadd | ||
![]() |
beabe8591c | ||
![]() |
1458cbabd4 | ||
![]() |
da3fccba48 | ||
![]() |
a48825d260 | ||
![]() |
bdbbc53885 | ||
![]() |
0b05bfc1bb | ||
![]() |
e392a47c13 | ||
![]() |
bf7fa6a615 | ||
![]() |
2a1c289cc5 | ||
![]() |
9da0cf41d4 | ||
![]() |
055c999af9 | ||
![]() |
123c430db2 | ||
![]() |
572b780345 | ||
![]() |
095707537e | ||
![]() |
eeeaa42b79 | ||
![]() |
112157b1a9 | ||
![]() |
32fe65295b | ||
![]() |
9aaf0ded2f | ||
![]() |
732852f31f | ||
3311c9b541 | |||
![]() |
7c2e1b341d | ||
![]() |
ab1992b528 | ||
![]() |
b5974ad713 | ||
![]() |
d2b8115631 | ||
![]() |
241d14cd24 | ||
![]() |
612ce753c5 | ||
![]() |
1c1b8cf663 | ||
![]() |
e118104f98 | ||
![]() |
4969f5a1f4 | ||
![]() |
f99b3da74b | ||
![]() |
607ecace37 | ||
![]() |
8cad404502 | ||
![]() |
5cb6910043 | ||
![]() |
f997078c99 | ||
![]() |
aa1757438d | ||
![]() |
cee31aad80 | ||
![]() |
59d79f6ccd | ||
![]() |
1949d5c09b | ||
![]() |
cb216b6cd8 | ||
fee1da74ee | |||
![]() |
49367bc9d6 | ||
![]() |
9416e82903 | ||
943b80c1a3 | |||
![]() |
ddbd6594d5 | ||
![]() |
a63bb7081c | ||
![]() |
9d5ce06ac0 | ||
![]() |
020c4b3495 | ||
![]() |
f5ef66e413 | ||
![]() |
57f50f7e10 | ||
![]() |
43f2eae773 | ||
![]() |
3272b5478b | ||
![]() |
cd3408613a | ||
![]() |
d543aa8bf4 | ||
![]() |
e5bf43c791 | ||
835f6483d2 | |||
![]() |
ab25ed462d | ||
![]() |
46e396af7b | ||
![]() |
86649a0cba | ||
![]() |
65fc08446f | ||
![]() |
dbe9995015 | ||
![]() |
94171f104c | ||
![]() |
8fd98f24b6 | ||
![]() |
86c1757da5 | ||
![]() |
578d27c142 | ||
![]() |
30415b17a9 | ||
![]() |
462dced261 | ||
![]() |
8315c5d91f | ||
![]() |
bb6a4769ac | ||
![]() |
a08dcb4c36 | ||
![]() |
bdb387bb84 | ||
![]() |
66206d0b27 | ||
![]() |
811d9ff9e5 | ||
![]() |
32d19e3c8f | ||
![]() |
c48f3141f6 | ||
![]() |
a594bc0451 | ||
![]() |
8400b618a2 | ||
![]() |
b1af22174b | ||
![]() |
4d474c7471 | ||
![]() |
9dd67d4e86 | ||
![]() |
349e00e7cc | ||
![]() |
44b95bc047 | ||
![]() |
de007a80af | ||
![]() |
09640d3d0f | ||
bffece3c14 |
README.rstsetup.cfgsetup.py
dib
burn-in
element/ironic-python-agent-podman
extra-hardware
ironic-python-agent-ramdisk
element-deps
environment.d
install.d/ironic-python-agent-ramdisk-source-install
package-installs.yamlpkg-mappost-install.d
source-repository-ironic-libstatic
etc/systemd/system
usr/local/bin
ironic-python-agent-tls
ironic-ramdisk-base
multipath-io
doc/source
ironic_python_agent_builder
playbooks/ironic-python-agent-build-image
releasenotes
notes
centos9-0f925822a2ab9e0a.yamlclean-var-tmp-with-dib-builds-cd31a2cf70a7f935.yamlcreate-ramdisk-random-devices-263f78a2ef40dbe2.yamldebian-9a4fa6b2d3ef96d0.yamldebian-arm64-fc3cc4949e3100d9.yamldebian-ipa-cb5975e436cba525.yamldhcp-predictible-ifnames-b2a1d9e6471b6819.yamllzma-compression-level-1ca346ba8d5b905a.yamlmultipath-0eb6a4f3b2ee22a3.yamlnetwork-manager-auto-dhcp-all-interfaces-rhel-centos-relese-gt-7-0c2054d0067c6e93.yamlno-suse-e15d8384c423251c.yamlpython2-removal-dee895550b1959af.yamlremove-PYOPTIMIZE_TINYIPA-ebde63911d140209.yamltinycore13-caba5a4998bdd628.yaml
source
roles
ipa-build-dib-image
ipa-build-tinyipa-image/tasks
tinyipa
add-ssh-tinyipa.shbuild-tinyipa.sh
tox.inibuild_files
bootlocal.shbuildreqs.lstbuildreqs_python2.lstbuildreqs_python3.lstfakeunamefinalreqs.lstfinalreqs_python2.lstfinalreqs_python3.lst
common.shfinalise-tinyipa.shzuul.d
@ -8,7 +8,7 @@ based on `Ironic Python Agent`_.
|
||||
* Free software: Apache license
|
||||
* Documentation: https://docs.openstack.org/ironic-python-agent-builder
|
||||
* Source: https://opendev.org/openstack/ironic-python-agent-builder
|
||||
* Bugs: https://storyboard.openstack.org/#!/project/948
|
||||
* Bugs: https://bugs.launchpad.net/ironic-python-agent-builder
|
||||
* Release Notes: https://docs.openstack.org/releasenotes/ironic-python-agent-builder/
|
||||
|
||||
.. _Ironic Python Agent: https://docs.openstack.org/ironic-python-agent
|
||||
|
6
dib/burn-in/README.rst
Normal file
6
dib/burn-in/README.rst
Normal file
@ -0,0 +1,6 @@
|
||||
=================================
|
||||
Ironic Python Agent (IPA) Burn In
|
||||
=================================
|
||||
|
||||
This element adds packages needed to run burn-in tasks
|
||||
to the Ironic Python Agent (IPA) ramdisk.
|
1
dib/burn-in/element-deps
Normal file
1
dib/burn-in/element-deps
Normal file
@ -0,0 +1 @@
|
||||
package-installs
|
7
dib/burn-in/package-installs.yaml
Normal file
7
dib/burn-in/package-installs.yaml
Normal file
@ -0,0 +1,7 @@
|
||||
fio:
|
||||
fio-engine-libaio:
|
||||
when:
|
||||
- IPA_DISTRO_FAMILY = rh
|
||||
- DIB_RELEASE != 7
|
||||
- DIB_RELEASE != 8
|
||||
stress-ng:
|
191
dib/element/ironic-python-agent-podman/README.rst
Normal file
191
dib/element/ironic-python-agent-podman/README.rst
Normal file
@ -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.
|
2
dib/element/ironic-python-agent-podman/element-deps
Normal file
2
dib/element/ironic-python-agent-podman/element-deps
Normal file
@ -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
|
10
dib/element/ironic-python-agent-podman/pre-finalise.d/10-ipa-podman-config
Executable file
10
dib/element/ironic-python-agent-podman/pre-finalise.d/10-ipa-podman-config
Executable file
@ -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"
|
17
dib/element/ironic-python-agent-podman/pre-finalise.d/20-ipa-config
Executable file
17
dib/element/ironic-python-agent-podman/pre-finalise.d/20-ipa-config
Executable 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"
|
10
dib/element/ironic-python-agent-podman/pre-finalise.d/30-ipa-steps
Executable file
10
dib/element/ironic-python-agent-podman/pre-finalise.d/30-ipa-steps
Executable file
@ -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
|
@ -19,3 +19,5 @@ doing a source-based installation:
|
||||
* ``DIB_IPA_HARDWARE_VERSION`` the version of the ``hardware`` package to
|
||||
install when ``DIB_IPA_HARDWARE_PACKAGE`` is unset. If unset, the latest
|
||||
version will be installed.
|
||||
* ``DIB_IPA_HARDWARE_RDO`` set to ``0`` to prevent the latest RDO package repositories
|
||||
being installed on CentOS-9-Stream (ignored when ``DIB_YUM_REPO_CONF`` is set).
|
||||
|
14
dib/extra-hardware/environment.d/10-enable-rdo-deps.bash
Executable file
14
dib/extra-hardware/environment.d/10-enable-rdo-deps.bash
Executable file
@ -0,0 +1,14 @@
|
||||
|
||||
if [[ "${DISTRO_NAME}${DIB_RELEASE}" =~ "centos9" ]]; then
|
||||
|
||||
if [ -n "${DIB_YUM_REPO_CONF:-}" ] ; then
|
||||
# Always disable if DIB_YUM_REPO_CONF is defined
|
||||
export DIB_IPA_HARDWARE_RDO=0
|
||||
else
|
||||
# Default to enabled, but overridable by the host
|
||||
export DIB_IPA_HARDWARE_RDO=${DIB_IPA_HARDWARE_RDO:-1}
|
||||
fi
|
||||
else
|
||||
# Always disable if not centos-9
|
||||
export DIB_IPA_HARDWARE_RDO=0
|
||||
fi
|
@ -1,5 +1,10 @@
|
||||
ethtool:
|
||||
fio:
|
||||
fio-engine-libaio:
|
||||
when:
|
||||
- IPA_DISTRO_FAMILY = rh
|
||||
- DIB_RELEASE != 7
|
||||
- DIB_RELEASE != 8
|
||||
hdparm:
|
||||
infiniband-diags:
|
||||
lldpad:
|
||||
@ -8,5 +13,5 @@ smartmontools:
|
||||
sysbench:
|
||||
|
||||
biosdevname:
|
||||
not-arch: ppc64,ppc64el,ppc64le
|
||||
not-arch: aarch64,arm64,ppc64,ppc64el,ppc64le
|
||||
when: IPA_DISTRO_FAMILY = rh
|
||||
|
9
dib/extra-hardware/pre-install.d/10-enable-rdo-deps
Executable file
9
dib/extra-hardware/pre-install.d/10-enable-rdo-deps
Executable file
@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
# It enables RDO deps repo when DIB_IPA_HARDWARE_RDO=1
|
||||
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
if [ ${DIB_IPA_HARDWARE_RDO:-0} -ne 0 ]; then
|
||||
curl -o /etc/yum.repos.d/dlrn-deps.repo https://trunk.rdoproject.org/centos9-master/dlrn-deps.repo
|
||||
fi
|
@ -3,7 +3,7 @@ dhcp-all-interfaces
|
||||
ibft-interfaces
|
||||
install-static
|
||||
package-installs
|
||||
pip-and-virtualenv
|
||||
ensure-venv
|
||||
pkg-map
|
||||
source-repositories
|
||||
svc-map
|
||||
|
@ -1,5 +1,10 @@
|
||||
# IPA is built with non-free firmware by default.
|
||||
export DIB_DEBIAN_COMPONENTS=${DIB_DEBIAN_COMPONENTS:-main,contrib,non-free}
|
||||
DIB_DEBIAN_NON_FREE=non-free-firmware
|
||||
if [[ "$DIB_RELEASE" == "bullseye" ]]; then
|
||||
# Starting with bookworm, firmware is in a separate repository
|
||||
DIB_DEBIAN_NON_FREE=non-free
|
||||
fi
|
||||
export DIB_DEBIAN_COMPONENTS=${DIB_DEBIAN_COMPONENTS:-main,contrib,$DIB_DEBIAN_NON_FREE}
|
||||
|
||||
if [[ $DIB_DEBIAN_COMPONENTS =~ non-free ]]; then
|
||||
export IPA_DEBIAN_NONFREE=true
|
||||
|
@ -1,4 +1,4 @@
|
||||
export IPA_REMOVE_FIRMWARE=${IPA_REMOVE_FIRMWARE:-amdgpu,netronome,qcom,ti-communication,ti-keystone,ueagle-atm,rsi,mrvl,brcm,mediatek,ath10k,rtlwifi}
|
||||
export IPA_REMOVE_FIRMWARE=${IPA_REMOVE_FIRMWARE:-amdgpu,netronome,qcom,ti-communication,ti-keystone,ueagle-atm,rsi,mrvl,brcm,mediatek,ath10k,rtlwifi,rtw88,rtw89,libertas,ath11k}
|
||||
|
||||
# NOTE(TheJulia): List of what each item represents for future context
|
||||
# amdgpu == AMD/ATI Radeon/Vega/Raven firmware for drivers
|
||||
@ -13,3 +13,7 @@ export IPA_REMOVE_FIRMWARE=${IPA_REMOVE_FIRMWARE:-amdgpu,netronome,qcom,ti-commu
|
||||
# mediatek == Mediatek wifi and SoC (think chromebook) firmware
|
||||
# ath10k == Qualcom Atheros 10k firmware
|
||||
# rtlwifi == Realtek Wifi firmware
|
||||
# rtw88 == Realtek wireless
|
||||
# rtw89 == Realtek wireless
|
||||
# libertas == Marvell libertas wifi
|
||||
# auth11k == Qualcomm atheros WLAN
|
||||
|
@ -1,10 +1,13 @@
|
||||
# TODO(dtantsur): verify if opensuse can be added here
|
||||
if [[ $DISTRO_NAME =~ (fedora|centos|centos7|rhel|rhel7) ]]; then
|
||||
if [[ $DISTRO_NAME =~ (fedora|centos|rhel) ]]; then
|
||||
export IPA_DISTRO_FAMILY=rh
|
||||
else
|
||||
export IPA_DISTRO_FAMILY=other
|
||||
fi
|
||||
|
||||
if [[ ${DISTRO_NAME} =~ (centos|rhel) ]]; then
|
||||
export DIB_DHCP_NETWORK_MANAGER_AUTO=${DIB_DHCP_NETWORK_MANAGER_AUTO:-true}
|
||||
fi
|
||||
|
||||
# NOTE(rpittau) force Python version to 3 for debian
|
||||
if [[ $DISTRO_NAME =~ debian ]]; then
|
||||
DIB_PYTHON_VERSION=3
|
||||
|
@ -10,36 +10,13 @@ export LC_ALL=C.UTF-8
|
||||
|
||||
SCRIPTDIR=$(dirname $0)
|
||||
IPADIR=/tmp/ironic-python-agent
|
||||
IRLIBDIR=/tmp/ironic-lib
|
||||
UPPER_CONSTRAINTS=/tmp/requirements/upper-constraints.txt
|
||||
VENVDIR=/opt/ironic-python-agent
|
||||
# 19.1.1 is required for cryptography.
|
||||
REQUIRED_PIP_STR="19.1.1"
|
||||
REQUIRED_PIP_TUPLE="(19, 1, 1)"
|
||||
|
||||
IPA_PYTHON_VERSION=$DIB_PYTHON_VERSION
|
||||
IPA_PYTHON="$DIB_PYTHON"
|
||||
|
||||
case "$DISTRO_NAME" in
|
||||
centos7|rhel7)
|
||||
# NOTE(dtantsur): C.UTF-8 doesn't seem to exist in CentOS 7
|
||||
export LC_ALL=en_US.UTF-8
|
||||
|
||||
if grep -q 'Python :: 3 :: Only' $IPADIR/setup.cfg; then
|
||||
echo "WARNING: using Python 3 on CentOS 7, this is not recommended"
|
||||
${YUM:-yum} install -y python3 python3-devel
|
||||
IPA_PYTHON=python3
|
||||
IPA_PYTHON_VERSION=3
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# create the virtual environment using the default python
|
||||
if [ $IPA_PYTHON_VERSION == 3 ]; then
|
||||
$IPA_PYTHON -m venv $VENVDIR
|
||||
else
|
||||
$IPA_PYTHON -m virtualenv $VENVDIR
|
||||
fi
|
||||
python3 -m venv $VENVDIR
|
||||
REQUIRED_PIP_STR="21.3.1"
|
||||
REQUIRED_PIP_TUPLE="(21, 3, 1)"
|
||||
|
||||
HAS_PIP=$($VENVDIR/bin/python -c \
|
||||
"import pip; print(tuple(map(int, pip.__version__.split('.'))) >= $REQUIRED_PIP_TUPLE)")
|
||||
@ -52,7 +29,7 @@ fi
|
||||
# NOTE(rpittau): if we want to keep compatibility with Python 2.x, we need to
|
||||
# upgrade setuptools in the virtualenv as the default installed has issues
|
||||
# when parsing requirements.
|
||||
if [ "$DISTRO_NAME" == "opensuse" ] || [ $IPA_PYTHON_VERSION == 2 ]; then
|
||||
if [ "$DISTRO_NAME" == "opensuse" ]; then
|
||||
$VENVDIR/bin/pip install -U setuptools
|
||||
fi
|
||||
|
||||
@ -68,12 +45,6 @@ $VENVDIR/bin/pip install -c $UPPER_CONSTRAINTS $IPADIR
|
||||
ln -s $VENVDIR/bin/ironic-python-agent /usr/local/bin/
|
||||
ln -s $VENVDIR/bin/ironic-collect-introspection-data /usr/local/bin/
|
||||
|
||||
# install ironic-lib from source if requested
|
||||
if [ ${IRONIC_LIB_FROM_SOURCE:-false} == "true" ]; then
|
||||
$VENVDIR/bin/pip install -c $UPPER_CONSTRAINTS -r $IRLIBDIR/requirements.txt
|
||||
$VENVDIR/bin/pip install $IRLIBDIR
|
||||
fi
|
||||
|
||||
case "$DIB_INIT_SYSTEM" in
|
||||
upstart)
|
||||
install -D -g root -o root -m 0755 ${SCRIPTDIR}/ironic-python-agent.conf /etc/init/ironic-python-agent.conf
|
||||
|
@ -3,6 +3,7 @@ Description=Ironic Python Agent
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
ConditionPathExists=!/etc/.rescued
|
||||
ExecStartPre=/sbin/modprobe vfat
|
||||
ExecStart=/usr/local/bin/ironic-python-agent --config-dir /etc/ironic-python-agent.d/
|
||||
Restart=always
|
||||
|
@ -27,6 +27,8 @@ e2fsprogs:
|
||||
nvme-cli:
|
||||
# This provides iscsistart which is required for iBFT support
|
||||
open-iscsi:
|
||||
# smartctl is required for ATA secure erase.
|
||||
smartmontools:
|
||||
|
||||
libffi-dev:
|
||||
build-only: true
|
||||
@ -57,6 +59,11 @@ amd64-microcode:
|
||||
- DISTRO_NAME = debian
|
||||
- IPA_DEBIAN_NONFREE = true
|
||||
|
||||
# Packages needed by Debian
|
||||
# bsdextrautils provides the 'hexdump' command used by IPA.
|
||||
bsdextrautils:
|
||||
when: DISTRO_NAME = debian
|
||||
|
||||
# Packages that should not normally be present on IPA images
|
||||
cloud-init:
|
||||
phase: post-install.d
|
||||
|
@ -11,10 +11,16 @@
|
||||
"python": "python",
|
||||
"python-dev": "python-devel"
|
||||
}
|
||||
},
|
||||
"debian": {
|
||||
"bullseye": {
|
||||
"lshw": "lshw/bullseye-backports"
|
||||
}
|
||||
}
|
||||
},
|
||||
"family": {
|
||||
"redhat": {
|
||||
"genisoimage": "xorriso",
|
||||
"libffi-dev": "libffi-devel",
|
||||
"libssl-dev": "openssl-devel",
|
||||
"open-iscsi": "iscsi-initiator-utils",
|
||||
|
@ -7,6 +7,7 @@ set -eu
|
||||
set -o pipefail
|
||||
|
||||
DIB_IPA_ENABLE_RESCUE=${DIB_IPA_ENABLE_RESCUE:-true}
|
||||
DIB_IPA_ENABLE_SYSTEMD_NETWORKD=${DIB_IPA_ENABLE_SYSTEMD_NETWORKD:-true}
|
||||
|
||||
if $DIB_IPA_ENABLE_RESCUE; then
|
||||
# Make sure rescue works
|
||||
@ -30,6 +31,7 @@ case "$DIB_INIT_SYSTEM" in
|
||||
if $DIB_IPA_ENABLE_RESCUE; then
|
||||
systemctl enable ironic-agent-create-rescue-user.path
|
||||
fi
|
||||
systemctl enable ironic-agent-resolve-config-drive.service
|
||||
# NOTE(rpittau) disable caching remote package index to prevent
|
||||
# delays due to failures.
|
||||
# This is a new service for dnf-based systems (e.g. Centos8) to speed
|
||||
@ -42,6 +44,34 @@ case "$DIB_INIT_SYSTEM" in
|
||||
systemctl disable dnf-makecache.timer
|
||||
fi
|
||||
fi
|
||||
|
||||
# NOTE(drannou) debian by default is using networking instead of
|
||||
# systemd-networkd. In some usecase like rescue, we need IPA to
|
||||
# re-launch dhclient when modifications are made on the interface.
|
||||
# The easiest way to manage that is to activate systemd-networkd.
|
||||
if $DIB_IPA_ENABLE_SYSTEMD_NETWORKD; then
|
||||
if [[ $DISTRO_NAME =~ debian ]] ; then
|
||||
rm /etc/network/interfaces
|
||||
rm -rf /etc/network/interfaces.d
|
||||
echo "[Match]
|
||||
Name=en*
|
||||
|
||||
[Network]
|
||||
DHCP=yes" > /etc/systemd/network/99-dhcp.network
|
||||
|
||||
systemctl enable systemd-networkd
|
||||
fi
|
||||
fi
|
||||
if [ -e /usr/lib/systemd/system/glean-early.service ]; then
|
||||
# Disable Glean-early start
|
||||
# Under normal circumstances, glean-early attempts to mount a config
|
||||
# drive, configure ssh and a hostname. We only need the mount, and we
|
||||
# trigger that in ironic-agent-resolve-config-drive.service.
|
||||
# This is largely because glean uses /mnt/config by default,
|
||||
# where as cloud-init uses a random folder name.
|
||||
systemctl disable glean-early.service || true
|
||||
rm /usr/lib/systemd/system/glean-early.service
|
||||
fi
|
||||
;;
|
||||
sysv)
|
||||
update-rc.d iptables disable
|
||||
@ -51,3 +81,10 @@ case "$DIB_INIT_SYSTEM" in
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Blocks out userdata from being acted upon by cloud-init if present.
|
||||
if [[ -x /etc/cloud/cloud.cfg.d ]]; then
|
||||
cat > /etc/cloud/cloud.cfg.d/94-ironic-python-agent-disable-userdata.cfg <<EOF
|
||||
allow_userdata: false
|
||||
EOF
|
||||
fi
|
||||
|
@ -21,11 +21,20 @@ done
|
||||
|
||||
# TODO(dtantsur): implement the same for debian-based systems
|
||||
case "$DISTRO_NAME" in
|
||||
fedora|centos|centos7|rhel|rhel7)
|
||||
fedora|centos|rhel)
|
||||
${YUM:-yum} remove -y postfix gcc make
|
||||
# Remove webkit... Save ~26MB. This is a ramdisk, not a web browser.
|
||||
${YUM:-yum} remove -y webkit2gtk3-jsc libproxy-webkitgtk4 || true
|
||||
# Remove polkit... Save ~23 MB. This is a ramdisk, not a desktop.
|
||||
${YUM:-yum} remove -y polkit polkit-libs PackageKit polkit-pkla-compat || true
|
||||
|
||||
${YUM:-yum} clean all
|
||||
# Rebuilding the rpm database after removing packages will reduce
|
||||
# its size
|
||||
rpm --rebuilddb
|
||||
;;
|
||||
esac
|
||||
|
||||
# NOTE(TheJulia): remove any excess temporary files from /var/tmp
|
||||
# In particular, dracut may leave some items we don't need/want.
|
||||
rm -r -f /var/tmp/*
|
||||
|
@ -1 +0,0 @@
|
||||
ironic-lib git /tmp/ironic-lib https://opendev.org/openstack/ironic-lib
|
13
dib/ironic-python-agent-ramdisk/static/etc/systemd/system/ironic-agent-resolve-config-drive.service
Normal file
13
dib/ironic-python-agent-ramdisk/static/etc/systemd/system/ironic-agent-resolve-config-drive.service
Normal file
@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Ironic agent config drive setup
|
||||
Wants=network-pre.target
|
||||
Before=network-pre.target
|
||||
After=local-fs.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/bash /usr/local/bin/ironic-python-agent-resolve-configdrive.sh
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
@ -5,5 +5,13 @@ set -o pipefail
|
||||
|
||||
echo "Adding rescue user with root privileges..."
|
||||
crypted_pass=$(</etc/ipa-rescue-config/ipa-rescue-password)
|
||||
useradd -m rescue -G wheel -p $crypted_pass
|
||||
|
||||
# 'rescue' user should belong to sudo group
|
||||
# on RH based it's wheel, on Debian based it's sudo
|
||||
sudo_group=wheel
|
||||
if [ "$(grep -Ei 'debian|ubuntu' /etc/*release)" ] ; then
|
||||
sudo_group=sudo
|
||||
fi
|
||||
|
||||
useradd -m rescue -G $sudo_group -p $crypted_pass
|
||||
echo "rescue ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/rescue
|
||||
|
47
dib/ironic-python-agent-ramdisk/static/usr/local/bin/ironic-python-agent-resolve-configdrive.sh
Executable file
47
dib/ironic-python-agent-ramdisk/static/usr/local/bin/ironic-python-agent-resolve-configdrive.sh
Executable file
@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
echo "Resolving the configuration drive for Ironic."
|
||||
|
||||
PATH=/bin:/usr/bin:/sbin:/usr/sbin
|
||||
|
||||
# Inspired by/based on glean-early.sh
|
||||
# https://opendev.org/opendev/glean/src/branch/master/glean/init/glean-early.sh
|
||||
|
||||
# NOTE(TheJulia): We care about iso images, and would expect lower case as a
|
||||
# result. In the case of VFAT partitions, they would be upper case.
|
||||
CONFIG_DRIVE_LABEL="config-2"
|
||||
|
||||
# Identify the number of devices
|
||||
device_count=$(lsblk -o PATH,LABEL | grep $CONFIG_DRIVE_LABEL | wc -l)
|
||||
|
||||
# Identify if we have an a publisher id set
|
||||
publisher_id=""
|
||||
if grep -q "ir_pub_id" /proc/cmdline; then
|
||||
publisher_id=$(cat /proc/cmdline | sed -e 's/^.*ir_pub_id=//' -e 's/ .*$//')
|
||||
fi
|
||||
|
||||
if [ $device_count -lt 1 ]; then
|
||||
# Nothing to do here, exit!
|
||||
exit 0
|
||||
else
|
||||
# We have *something* to do here.
|
||||
mkdir -p /mnt/config
|
||||
if [[ "${publisher_id}" != "" ]]; then
|
||||
# We need to enumerate through the devices, and obtain the
|
||||
for device in $(lsblk -o PATH,LABEL|grep config-2|cut -f1 -d" "); do
|
||||
device_id=$(udevadm info --query=property --property=ID_FS_PUBLISHER_ID $device | sed s/ID_FS_PUBLISHER_ID=//)
|
||||
if [[ "${publisher_id,,}" == "${device_id,,}" ]]; then
|
||||
# SUCCESS! Valid device! Do it!
|
||||
echo "Device ${device} matches the ${publisher_id}. Mounting..."
|
||||
mount -t iso9660 -o ro,mode=0700 "${device}" /mnt/config || true
|
||||
# We've mounted the device, the world is happy.
|
||||
exit 0
|
||||
else
|
||||
echo "Did not identify $device as a valid ISO for Ironic."
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
@ -7,7 +7,7 @@ If enabled without any environment variables set to modify configuration,
|
||||
this element will enable TLS API support in IPA with a self-signed certificate
|
||||
and key created at build time.
|
||||
|
||||
Optionally, you can provide your own SSL certifiate and key, and optionally
|
||||
Optionally, you can provide your own SSL certificate and key, and optionally
|
||||
ca, via the following environment variables. They should be set to an
|
||||
accessible path on the build systems filesystem. If set, they will be copied
|
||||
into the built ramdisk, and IPA will be configured to use them.
|
||||
|
@ -24,6 +24,20 @@ echo "#disabled" > ./tmp/fstab.new
|
||||
sudo mv ./tmp/fstab.new ./etc/fstab
|
||||
sudo ln -s ./sbin/init ./
|
||||
|
||||
# NOTE(TheJulia): Make a random and urandom entry to handle
|
||||
# long standing systemd bug cases where it may, depending on
|
||||
# underlying OS config/version, try to open the random number
|
||||
# generator before initializing.
|
||||
# This class of issue has appeared frequently with systemd,
|
||||
# https://github.com/systemd/systemd/issues/4167 is a commonly
|
||||
# referenced example of this behavior.
|
||||
if ! [ -a ./dev/random ]; then
|
||||
sudo mknod ./dev/random c 1 8
|
||||
fi
|
||||
if ! [ -a ./dev/urandom ]; then
|
||||
sudo mknod ./dev/urandom c 1 9
|
||||
fi
|
||||
|
||||
# Note(JayF): to anyone trying to make this more configurable in the future,
|
||||
# there are significant hurdles around shell quoting if you try to put these
|
||||
# find commands into variables for making them more configurable.
|
||||
@ -64,7 +78,7 @@ else
|
||||
-path './usr/src/kernels/*' -prune -o \
|
||||
-path './var/cache/*' -prune -o \
|
||||
-path './var/log/*' -prune -o \
|
||||
-name '*.pyc' -prune -o \
|
||||
-name '*.pyc' ! -path '*encodings/*' -prune -o \
|
||||
-name '*.pyo' -prune -o \
|
||||
-print | sudo cpio -o -H newc | ${DIB_IPA_COMPRESS_CMD} > ${IMAGE_PATH}.initramfs
|
||||
fi
|
||||
@ -72,5 +86,12 @@ fi
|
||||
select_boot_kernel_initrd $TARGET_ROOT
|
||||
sudo cp $BOOTDIR/$KERNEL ${IMAGE_PATH}.kernel
|
||||
sudo chown $USER: ${IMAGE_PATH}.kernel
|
||||
if [[ -n "$DIB_CHECKSUM" && "$DIB_CHECKSUM" != "0" ]]; then
|
||||
pushd $(dirname ${IMAGE_PATH})
|
||||
[[ "$DIB_CHECKSUM" == "1" ]] && DIB_CHECKSUM="md5,sha256"
|
||||
[[ "$DIB_CHECKSUM" == *md5* ]] && md5sum ${IMAGE_NAME}.initramfs ${IMAGE_NAME}.kernel > ${IMAGE_NAME}.md5
|
||||
[[ "$DIB_CHECKSUM" == *sha256* ]] && sha256sum ${IMAGE_NAME}.initramfs ${IMAGE_NAME}.kernel > ${IMAGE_NAME}.sha256
|
||||
popd
|
||||
fi
|
||||
# Output image sizes for debugging
|
||||
sudo ls -lh ${IMAGE_PATH}.*
|
||||
|
1
dib/ironic-ramdisk-base/environment.d/10-checksum.bash
Normal file
1
dib/ironic-ramdisk-base/environment.d/10-checksum.bash
Normal file
@ -0,0 +1 @@
|
||||
export DIB_CHECKSUM=${DIB_CHECKSUM:-0}
|
6
dib/multipath-io/README.md
Normal file
6
dib/multipath-io/README.md
Normal file
@ -0,0 +1,6 @@
|
||||
============
|
||||
multipath-io
|
||||
============
|
||||
Updates the ironic agent, installing multipath and iscsi packages,
|
||||
and enabling needed modules by default, to execute a modprobe for
|
||||
the needed drivers before it is started.
|
2
dib/multipath-io/element-deps
Normal file
2
dib/multipath-io/element-deps
Normal file
@ -0,0 +1,2 @@
|
||||
install-static
|
||||
package-installs
|
2
dib/multipath-io/package-installs.yaml
Normal file
2
dib/multipath-io/package-installs.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
iscsi-initiator-utils:
|
||||
device-mapper-multipath:
|
9
dib/multipath-io/static/etc/modules-load.d/iscsi.conf
Normal file
9
dib/multipath-io/static/etc/modules-load.d/iscsi.conf
Normal file
@ -0,0 +1,9 @@
|
||||
qla4xxx
|
||||
cxgb3i
|
||||
cxgb4i
|
||||
bnx2i
|
||||
be2iscsi
|
||||
iscsi_boot_sysfs
|
||||
iscsi_ibft
|
||||
iscsi_tcp
|
||||
target_core_mod
|
@ -4,14 +4,13 @@ diskimage-builder images
|
||||
Images built using diskimage-builder_ are recommended for production use on
|
||||
real hardware. The recommended distributions are:
|
||||
|
||||
* CentOS 8 (regular and stream)
|
||||
* Debian Buster (``debian-minimal`` element)
|
||||
* CentOS Stream 9
|
||||
* Debian Bookworm (``debian-minimal`` element)
|
||||
|
||||
The following should work but receive only limited testing and support:
|
||||
|
||||
* CentOS 7 (using Python 3.6)
|
||||
* openSUSE Leap 15.1
|
||||
* Ubuntu 20.04 Focal
|
||||
* Debian Bullseye (``debian-minimal`` element)
|
||||
|
||||
Building
|
||||
--------
|
||||
@ -29,13 +28,13 @@ You can add other diskimage-builder_ elements via the ``-e`` flag:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
ironic-python-agent-builder -e <extra-element> --release 8 centos-minimal
|
||||
ironic-python-agent-builder -e <extra-element> --release 9-stream centos
|
||||
|
||||
You can specify the base name of the target images:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
ironic-python-agent-builder -o my-ipa --release 8 centos-minimal
|
||||
ironic-python-agent-builder -o my-ipa --release 9-stream centos
|
||||
|
||||
You can specify the arch of the target image by setting ``ARCH`` environment
|
||||
variable (default is amd64):
|
||||
@ -43,7 +42,7 @@ variable (default is amd64):
|
||||
.. code-block:: shell
|
||||
|
||||
export ARCH=aarch64
|
||||
ironic-python-agent-builder -o my-ipa --release 8-stream centos
|
||||
ironic-python-agent-builder -o my-ipa --release 9-stream centos
|
||||
|
||||
... with diskimage-builder
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@ -74,9 +73,9 @@ for example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
export DIB_RELEASE=8
|
||||
export DIB_RELEASE=9-stream
|
||||
disk-image-create -o ironic-python-agent \
|
||||
ironic-python-agent-ramdisk centos-minimal
|
||||
ironic-python-agent-ramdisk centos
|
||||
|
||||
To use a specific branch of ironic-python-agent, use:
|
||||
|
||||
@ -85,14 +84,6 @@ To use a specific branch of ironic-python-agent, use:
|
||||
export DIB_REPOREF_ironic_python_agent=origin/stable/queens
|
||||
export DIB_REPOREF_requirements=origin/stable/queens
|
||||
|
||||
To build ironic-lib from source, do:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
export IRONIC_LIB_FROM_SOURCE=true
|
||||
# Optionally:
|
||||
#export DIB_REPOREF_ironic_lib=<branch>
|
||||
|
||||
To build image for architectures other than amd64, you can either set the
|
||||
``ARCH`` environment variable or use ``-a`` to specify the target
|
||||
architecture:
|
||||
@ -106,8 +97,9 @@ ISO Images
|
||||
~~~~~~~~~~
|
||||
|
||||
Additionally, the IPA ramdisk can be packaged inside of an ISO for use with
|
||||
some virtual media drivers. Use the ``iso-image-create`` utility, passing it
|
||||
the initrd and the kernel, for example:
|
||||
some virtual media drivers. Use the ``iso-image-create`` script in
|
||||
``ironic-python-agent-builder`` repository, passing it the initrd and the
|
||||
kernel, for example:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
@ -168,7 +160,7 @@ required for instance image or deploy image.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
ironic-python-agent-builder -e stable-interface-names --release 8 centos-minimal
|
||||
ironic-python-agent-builder -e stable-interface-names --release 9-stream centos
|
||||
|
||||
|
||||
.. _diskimage-builder: https://docs.openstack.org/diskimage-builder
|
||||
@ -186,7 +178,7 @@ unlikely to be encountered. If you want to override this, change the
|
||||
of directories or files under ``/usr/lib/firmware``.
|
||||
Set it to an empty string to disable firmware removal.
|
||||
|
||||
Fimrware removed:
|
||||
Firmware removed:
|
||||
|
||||
* ``amdgpu``
|
||||
* ``netronome``
|
||||
@ -275,7 +267,7 @@ Adds TLS support to ironic-python-agent-ramdisk.
|
||||
By default this element will enable TLS API support in IPA with a self-signed
|
||||
certificate and key created at build time.
|
||||
|
||||
Optionally, you can provide your own SSL certifiate and key, and optionally
|
||||
Optionally, you can provide your own SSL certificate and key, and optionally
|
||||
CA, via the following environment variables. They should be set to an
|
||||
accessible path on the build systems filesystem. If set, they will be copied
|
||||
into the built ramdisk, and IPA will be configured to use them.
|
||||
|
@ -154,18 +154,6 @@ If you want to collect BIOS given names of NICs in the inventory, set
|
||||
|
||||
export TINYIPA_REQUIRE_BIOSDEVNAME=true
|
||||
|
||||
Using ironic-lib from source
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
ironic-lib_ contains important parts of the provisioning logic. If you would
|
||||
like to build an IPA image with your local checkout of ironic-lib_, export
|
||||
the following variable:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
export IRONIC_LIB_SOURCE=/absolute/path/to/ironic-lib/checkout
|
||||
|
||||
|
||||
.. _Ironic Python Agent: https://docs.openstack.org/ironic-python-agent
|
||||
.. _TinyCoreLinux: http://tinycorelinux.net
|
||||
.. _ironic-lib: https://opendev.org/openstack/ironic-lib
|
||||
|
6
doc/source/conf.py
Executable file → Normal file
6
doc/source/conf.py
Executable file → Normal file
@ -37,7 +37,7 @@ source_suffix = '.rst'
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
copyright = u'2017, OpenStack Developers'
|
||||
copyright = '2017, OpenStack Developers'
|
||||
|
||||
# openstackdocstheme options
|
||||
openstackdocs_repo_name = 'openstack/ironic-python-agent-builder'
|
||||
@ -72,8 +72,8 @@ htmlhelp_basename = 'ironic-python-agent-builderdoc'
|
||||
latex_documents = [
|
||||
('index',
|
||||
'doc-ironic-python-agent-builder.tex',
|
||||
u'Ironic Python Agent Builder Documentation',
|
||||
u'OpenStack Developers', 'manual'),
|
||||
'Ironic Python Agent Builder Documentation',
|
||||
'OpenStack Developers', 'manual'),
|
||||
]
|
||||
|
||||
# Example configuration for intersphinx: refer to the Python standard library.
|
||||
|
@ -3,3 +3,22 @@
|
||||
===========================
|
||||
|
||||
.. include:: ../../../CONTRIBUTING.rst
|
||||
|
||||
Testing changes in DIB images
|
||||
=============================
|
||||
|
||||
Testing a local ironic-python-agent change in :doc:`/admin/dib` requires
|
||||
rebuilding an image with the following procedure.
|
||||
|
||||
#. Make sure your changes are committed to your local repository. DIB needs to
|
||||
know a branch name to use (``my-test-branch`` in the example below).
|
||||
|
||||
#. Build an image as described in :doc:`/admin/dib`, providing a location of
|
||||
your local repository and the branch name, for example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
DIB_REPOLOCATION_ironic_python_agent=/home/user/path/to/repo \
|
||||
DIB_REPOREF_ironic_python_agent=my-test-branch \
|
||||
ironic-python-agent-builder -o my-ipa --release 9-stream centos
|
||||
|
||||
|
@ -80,7 +80,11 @@ def main():
|
||||
os.environ['DIB_REPOREF_requirements'] = args.branch
|
||||
if args.lzma:
|
||||
os.environ['DIB_IPA_COMPRESS_CMD'] = \
|
||||
'xz --format=lzma --compress --stdout'
|
||||
'xz --format=lzma --compress --stdout -9'
|
||||
# Enable checksum generation by default
|
||||
if 'DIB_CHECKSUM' not in os.environ:
|
||||
os.environ['DIB_CHECKSUM'] = 'sha256'
|
||||
|
||||
extra_args = shlex.split(args.extra_args) if args.extra_args else []
|
||||
if args.verbose:
|
||||
extra_args.append("-x")
|
||||
|
@ -0,0 +1,7 @@
|
||||
- hosts: all
|
||||
|
||||
tasks:
|
||||
|
||||
- name: Collect disk usage info
|
||||
shell: "df > {{ zuul_output_dir }}/logs/df.txt"
|
||||
become: yes
|
@ -1,4 +1,8 @@
|
||||
- hosts: all
|
||||
|
||||
environment:
|
||||
PIP_BREAK_SYSTEM_PACKAGES: 1
|
||||
|
||||
roles:
|
||||
- ensure-pip
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
- hosts: all
|
||||
|
||||
environment:
|
||||
PIP_BREAK_SYSTEM_PACKAGES: 1
|
||||
|
||||
tasks:
|
||||
|
||||
- name: Create a target directory for raw images
|
||||
|
5
releasenotes/notes/centos9-0f925822a2ab9e0a.yaml
Normal file
5
releasenotes/notes/centos9-0f925822a2ab9e0a.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
CentOS 7 and 8 are no longer supported since OpenStack dropped support
|
||||
for Python 3.6. Please use CentOS 9 (Stream) instead.
|
@ -0,0 +1,7 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Fixes excess files being housed in /var/tmp inside of a ramdisk image
|
||||
which may, in some cases, result in a much larger ramdisk than expected.
|
||||
Files and folders in /var/tmp within a ramdisk are now removed prior to
|
||||
the ramdisk being packaged as part of a DIB based image build.
|
@ -0,0 +1,9 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Fixes issues with ramdisks potentially crashing when starting due to
|
||||
systemd attempting to access a random number generator before udevd has
|
||||
been launched. Depending on the mode of operation and underlying
|
||||
and configuration, i.e. in FIPS mode, the system could have crashed as
|
||||
a result. We will now always create the character devices devices, which
|
||||
can be used early in the boot sequence.
|
4
releasenotes/notes/debian-9a4fa6b2d3ef96d0.yaml
Normal file
4
releasenotes/notes/debian-9a4fa6b2d3ef96d0.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Fixes building images for Debian Bullseye and Bookworm.
|
4
releasenotes/notes/debian-arm64-fc3cc4949e3100d9.yaml
Normal file
4
releasenotes/notes/debian-arm64-fc3cc4949e3100d9.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
other:
|
||||
- |
|
||||
We now build and publish diskimage-builder debian based image on arm64.
|
4
releasenotes/notes/debian-ipa-cb5975e436cba525.yaml
Normal file
4
releasenotes/notes/debian-ipa-cb5975e436cba525.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
other:
|
||||
- |
|
||||
Debian images are now published using Bookworm instead of Bullseye.
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Add support for TinyIPA predictible device names in dhcp.sh script by changing
|
||||
Add support for TinyIPA predictable device names in dhcp.sh script by changing
|
||||
of NETDEVICES variable. It will support any device from /proc/net/dev starting
|
||||
with e or p letter.
|
||||
|
@ -0,0 +1,4 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Changes lzma compression level to 9 for smaller images.
|
6
releasenotes/notes/multipath-0eb6a4f3b2ee22a3.yaml
Normal file
6
releasenotes/notes/multipath-0eb6a4f3b2ee22a3.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Adds a new element ``multipath-io`` for configuring setups
|
||||
using multipath.
|
||||
|
14
releasenotes/notes/network-manager-auto-dhcp-all-interfaces-rhel-centos-relese-gt-7-0c2054d0067c6e93.yaml
Normal file
14
releasenotes/notes/network-manager-auto-dhcp-all-interfaces-rhel-centos-relese-gt-7-0c2054d0067c6e93.yaml
Normal file
@ -0,0 +1,14 @@
|
||||
---
|
||||
other:
|
||||
- |
|
||||
On RHEL and CentOS 8 and later the *dhcp-all-interfaces* diskimage-builder
|
||||
element is now configured to only apply NetworkManager configuration by
|
||||
default. The *dhcp-all-interfaces* service will not be enabled.
|
||||
To re-enable the *dhcp-all-interfaces* service, set
|
||||
``DIB_DHCP_NETWORK_MANAGER_AUTO=false`` in the environment.
|
||||
|
||||
NetworkManager is quite capable to do automatic interface configuration.
|
||||
NetworkManager will by default try to auto-configure any interface with
|
||||
no configuration, it will use DHCP for IPv4 and Router Advertisements to
|
||||
decide how to initialize IPv6.
|
||||
|
4
releasenotes/notes/no-suse-e15d8384c423251c.yaml
Normal file
4
releasenotes/notes/no-suse-e15d8384c423251c.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
Support for openSUSE Leap 15.* has been removed.
|
10
releasenotes/notes/python2-removal-dee895550b1959af.yaml
Normal file
10
releasenotes/notes/python2-removal-dee895550b1959af.yaml
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
Support for python2 in ironic-python-agent was dropped in the Ussuri release
|
||||
however it was still possible to build (non-functional) python2 images for
|
||||
CentOS 7. This python2 support is now dropped from the image build also. As
|
||||
part of this change, the `pip-and-virtualenv` element is not longer a
|
||||
dependency, so any custom elements which depend on this element will need to
|
||||
either include it explicitly or migrate to the recommended `ensure-venv`
|
||||
element.
|
@ -1,8 +1,8 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Removes support for ``PYOPTIMIZE_TINYIPA``, which now casues the TinyIPA
|
||||
image to be approximately 5 MB larger. This was due to an incompatability
|
||||
Removes support for ``PYOPTIMIZE_TINYIPA``, which now causes the TinyIPA
|
||||
image to be approximately 5 MB larger. This was due to an incompatibility
|
||||
with the ``oslo.privsep`` library dependency on ``pycparser`` which cannot
|
||||
load into precompiled python programs where the original source embedded
|
||||
documentation is not present.
|
||||
|
4
releasenotes/notes/tinycore13-caba5a4998bdd628.yaml
Normal file
4
releasenotes/notes/tinycore13-caba5a4998bdd628.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
The tinyipa image is now built using tinycore 13.x
|
6
releasenotes/source/2023.1.rst
Normal file
6
releasenotes/source/2023.1.rst
Normal file
@ -0,0 +1,6 @@
|
||||
===========================
|
||||
2023.1 Series Release Notes
|
||||
===========================
|
||||
|
||||
.. release-notes::
|
||||
:branch: unmaintained/2023.1
|
6
releasenotes/source/2023.2.rst
Normal file
6
releasenotes/source/2023.2.rst
Normal file
@ -0,0 +1,6 @@
|
||||
===========================
|
||||
2023.2 Series Release Notes
|
||||
===========================
|
||||
|
||||
.. release-notes::
|
||||
:branch: stable/2023.2
|
6
releasenotes/source/2024.1.rst
Normal file
6
releasenotes/source/2024.1.rst
Normal file
@ -0,0 +1,6 @@
|
||||
===========================
|
||||
2024.1 Series Release Notes
|
||||
===========================
|
||||
|
||||
.. release-notes::
|
||||
:branch: stable/2024.1
|
6
releasenotes/source/2024.2.rst
Normal file
6
releasenotes/source/2024.2.rst
Normal file
@ -0,0 +1,6 @@
|
||||
===========================
|
||||
2024.2 Series Release Notes
|
||||
===========================
|
||||
|
||||
.. release-notes::
|
||||
:branch: stable/2024.2
|
6
releasenotes/source/2025.1.rst
Normal file
6
releasenotes/source/2025.1.rst
Normal file
@ -0,0 +1,6 @@
|
||||
===========================
|
||||
2025.1 Series Release Notes
|
||||
===========================
|
||||
|
||||
.. release-notes::
|
||||
:branch: stable/2025.1
|
@ -52,8 +52,8 @@ source_suffix = '.rst'
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'Ironic Python Agent Builder Release Notes'
|
||||
copyright = u'2017, OpenStack Developers'
|
||||
project = 'Ironic Python Agent Builder Release Notes'
|
||||
copyright = '2017, OpenStack Developers'
|
||||
|
||||
# openstackdocstheme options
|
||||
openstackdocs_repo_name = 'openstack/ironic-python-agent-builder'
|
||||
@ -212,8 +212,8 @@ latex_elements = {
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
('index', 'ironic_python_agent_builderReleaseNotes.tex',
|
||||
u'Ironic Python Agent Builder Release Notes Documentation',
|
||||
u'OpenStack Foundation', 'manual'),
|
||||
'Ironic Python Agent Builder Release Notes Documentation',
|
||||
'OpenStack Foundation', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
@ -243,8 +243,8 @@ latex_documents = [
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
('index', 'ironic_python_agent_builderrereleasenotes',
|
||||
u'Ironic Python Agent Builder Release Notes Documentation',
|
||||
[u'OpenStack Foundation'], 1)
|
||||
'Ironic Python Agent Builder Release Notes Documentation',
|
||||
['OpenStack Foundation'], 1)
|
||||
]
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
@ -258,8 +258,8 @@ man_pages = [
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
('index', 'ironic_python_agent_builder ReleaseNotes',
|
||||
u'Ironic Python Agent Builder Release Notes Documentation',
|
||||
u'OpenStack Foundation', 'ironic_python_agent_builderReleaseNotes',
|
||||
'Ironic Python Agent Builder Release Notes Documentation',
|
||||
'OpenStack Foundation', 'ironic_python_agent_builderReleaseNotes',
|
||||
'Release notes for Ironic Python Agent Builder.',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
@ -6,4 +6,12 @@ Ironic Python Agent Builder Release Notes
|
||||
:maxdepth: 1
|
||||
|
||||
unreleased
|
||||
2025.1
|
||||
2024.2
|
||||
2024.1
|
||||
2023.2
|
||||
2023.1
|
||||
zed
|
||||
yoga
|
||||
xena
|
||||
wallaby
|
||||
|
@ -3,4 +3,4 @@ Wallaby Series Release Notes
|
||||
============================
|
||||
|
||||
.. release-notes::
|
||||
:branch: stable/wallaby
|
||||
:branch: unmaintained/wallaby
|
||||
|
6
releasenotes/source/xena.rst
Normal file
6
releasenotes/source/xena.rst
Normal file
@ -0,0 +1,6 @@
|
||||
=========================
|
||||
Xena Series Release Notes
|
||||
=========================
|
||||
|
||||
.. release-notes::
|
||||
:branch: unmaintained/xena
|
6
releasenotes/source/yoga.rst
Normal file
6
releasenotes/source/yoga.rst
Normal file
@ -0,0 +1,6 @@
|
||||
=========================
|
||||
Yoga Series Release Notes
|
||||
=========================
|
||||
|
||||
.. release-notes::
|
||||
:branch: unmaintained/yoga
|
6
releasenotes/source/zed.rst
Normal file
6
releasenotes/source/zed.rst
Normal file
@ -0,0 +1,6 @@
|
||||
========================
|
||||
Zed Series Release Notes
|
||||
========================
|
||||
|
||||
.. release-notes::
|
||||
:branch: unmaintained/zed
|
@ -8,4 +8,5 @@ ipa_raw_dir: '{{ ansible_user_dir }}/src/opendev.org/openstack/ironic-python-age
|
||||
ipa_tar_dir: '{{ ansible_user_dir }}/src/opendev.org/openstack/ironic-python-agent/UPLOAD_TAR'
|
||||
dib_extra_args:
|
||||
dib_from_source: true
|
||||
dib_no_tmpfs: 0
|
||||
extra_elements: ["dynamic-login"]
|
||||
|
@ -26,13 +26,3 @@
|
||||
become: true
|
||||
when: dib_from_source
|
||||
|
||||
# NOTE(dtantsur): work around the issue in older DIB versions when some
|
||||
# elements try to use the default Python instead of the one DIB is using,
|
||||
# failing with "No module named yaml"
|
||||
- name: Install PyYAML in Python 2
|
||||
pip:
|
||||
name: PyYAML
|
||||
extra_args: -c "{{ ansible_user_dir }}/{{ zuul.projects['opendev.org/openstack/requirements'].src_dir }}/upper-constraints.txt"
|
||||
executable: pip2
|
||||
become: true
|
||||
ignore_errors: true
|
||||
|
@ -1,6 +1,6 @@
|
||||
- name: Default to CentOS 8
|
||||
- name: Default to CentOS Stream 9
|
||||
set_fact:
|
||||
image_release: 8
|
||||
image_release: 9-stream
|
||||
when:
|
||||
- image_distro in ["centos-minimal", "centos"]
|
||||
- not image_release
|
||||
@ -35,6 +35,11 @@
|
||||
environment:
|
||||
# Increase from the default value of 30
|
||||
DIB_DHCP_TIMEOUT: 60
|
||||
# Use or not tmpfs to build the image, default to use it.
|
||||
# As images become bigger and bigger, in the future we may
|
||||
# decide to switch to not use it by default since we have
|
||||
# enough disk space.
|
||||
DIB_NO_TMPFS: '{{ dib_no_tmpfs }}'
|
||||
# Use repositories checked out by Zuul (combined with -b HEAD above)
|
||||
DIB_REPOLOCATION_ironic_python_agent: '{{ ipa_source_path }}'
|
||||
DIB_REPOLOCATION_requirements: '{{ requirements_path }}'
|
||||
|
@ -13,7 +13,6 @@
|
||||
environment:
|
||||
BRANCH_PATH: '{{ ipa_branch_path }}'
|
||||
IPA_SOURCE_DIR: '{{ ansible_user_dir }}/src/opendev.org/openstack/ironic-python-agent'
|
||||
when: "'ussuri' not in ipa_branch_path"
|
||||
|
||||
- name: Move resulting files
|
||||
shell: |
|
||||
|
@ -23,3 +23,8 @@ packages =
|
||||
# TODO(dtantsur): figure out a sane way to distribute tinyipa scripts
|
||||
data_files =
|
||||
share/ironic-python-agent-builder/dib = dib/*
|
||||
|
||||
[codespell]
|
||||
quiet-level = 4
|
||||
# Words to ignore:
|
||||
# ignore-words-list = example
|
1
setup.py
1
setup.py
@ -17,4 +17,5 @@ import setuptools
|
||||
|
||||
setuptools.setup(
|
||||
setup_requires=['pbr>=2.0.0'],
|
||||
py_modules=[],
|
||||
pbr=True)
|
||||
|
@ -11,7 +11,7 @@
|
||||
#
|
||||
# By default, id_rsa or id_dsa keys of the user performing the build
|
||||
# are baked into the image as authorized_keys for 'tc' user.
|
||||
# To supply different public ssh key, befor running this script set
|
||||
# To supply different public ssh key, before running this script set
|
||||
# SSH_PUBLIC_KEY environment variable to point to absolute path to the key.
|
||||
#
|
||||
# This script produces "ansible-<tinyipa-ramdisk-name>" ramdisk that can serve
|
||||
|
@ -6,16 +6,78 @@ source ${WORKDIR}/common.sh
|
||||
|
||||
IRONIC_LIB_SOURCE=${IRONIC_LIB_SOURCE:-}
|
||||
|
||||
TC_RELEASE="12.x"
|
||||
QEMU_RELEASE="v4.2.0"
|
||||
TC_RELEASE="15.x"
|
||||
QEMU_RELEASE="5.2.0"
|
||||
LSHW_RELEASE="B.02.18"
|
||||
BIOSDEVNAME_RELEASE="0.7.2"
|
||||
IPMITOOL_GIT_HASH="710888479332a46bad78f3d736eff0cbdefd2d1b"
|
||||
IPMITOOL_GIT_HASH="19d78782d795d0cf4ceefe655f616210c9143e62"
|
||||
|
||||
CHROOT_CMD="sudo chroot $BUILDDIR /usr/bin/env -i PATH=$CHROOT_PATH http_proxy=$http_proxy https_proxy=$https_proxy no_proxy=$no_proxy"
|
||||
|
||||
function clone_single_branch {
|
||||
git clone --branch $3 --depth=1 $1 $2
|
||||
DOWNLOAD_RETRY_MAX=${DOWNLOAD_RETRY_MAX:-5}
|
||||
DOWNLOAD_RETRY_DELAY=${DOWNLOAD_RETRY_DELAY:-10}
|
||||
|
||||
function download_with_retry() {
|
||||
local source_url=$1
|
||||
local destination_path=$2
|
||||
local attempts=1
|
||||
|
||||
declare -A tar_flags=(
|
||||
["tar.gz"]="z"
|
||||
["tgz"]="z"
|
||||
["tar.bz2"]="j"
|
||||
["tbz2"]="j"
|
||||
["tar.xz"]="J"
|
||||
["txz"]="J"
|
||||
)
|
||||
|
||||
echo "Downloading $source_url to $destination_path"
|
||||
while [ $attempts -le $DOWNLOAD_RETRY_MAX ]; do
|
||||
for ext in "${!tar_flags[@]}"; do
|
||||
if [[ "$source_url" =~ \.${ext}$ ]]; then
|
||||
mkdir -p "$destination_path"
|
||||
if wget --timeout=30 --tries=3 -O - "$source_url" | tar -x${tar_flags[$ext]} -C "$destination_path" --strip-components=1 -f -; then
|
||||
echo "Successfully downloaded $source_url on attempt $attempts"
|
||||
return 0
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ ! "$source_url" =~ \.tar\.[a-z]+$ ]]; then
|
||||
if wget --timeout=30 --tries=3 "$source_url" -O "${destination_path}"; then
|
||||
echo "Successfully downloaded $source_url on attempt $attempts"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Download attempt $attempts failed for $source_url, retrying in $DOWNLOAD_RETRY_DELAY seconds..."
|
||||
sleep $DOWNLOAD_RETRY_DELAY
|
||||
attempts=$((attempts + 1))
|
||||
done
|
||||
|
||||
echo "Failed to download $source_url after $DOWNLOAD_RETRY_MAX attempts"
|
||||
return 1
|
||||
}
|
||||
|
||||
function tce_load_with_retry() {
|
||||
local package=$1
|
||||
local attempts=1
|
||||
|
||||
echo "Loading package $package with tce-load"
|
||||
while [ $attempts -le $DOWNLOAD_RETRY_MAX ]; do
|
||||
if sudo chroot --userspec=$TC:$STAFF $BUILDDIR /usr/bin/env -i PATH=$CHROOT_PATH http_proxy=$http_proxy https_proxy=$https_proxy no_proxy=$no_proxy tce-load -wci $package; then
|
||||
echo "Successfully loaded $package on attempt $attempts"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "tce-load attempt $attempts failed for $package, retrying in $DOWNLOAD_RETRY_DELAY seconds..."
|
||||
sleep $DOWNLOAD_RETRY_DELAY
|
||||
attempts=$((attempts + 1))
|
||||
done
|
||||
|
||||
echo "Failed to load $package with tce-load after $DOWNLOAD_RETRY_MAX attempts"
|
||||
return 1
|
||||
}
|
||||
|
||||
echo "Building tinyipa:"
|
||||
@ -37,12 +99,12 @@ fi
|
||||
choose_tc_mirror
|
||||
|
||||
cd $WORKDIR/build_files
|
||||
wget -N $TINYCORE_MIRROR_URL/$TC_RELEASE/x86_64/release/distribution_files/corepure64.gz
|
||||
wget -N $TINYCORE_MIRROR_URL/$TC_RELEASE/x86_64/release/distribution_files/vmlinuz64
|
||||
download_with_retry "$TINYCORE_MIRROR_URL/$TC_RELEASE/x86_64/release/distribution_files/corepure64.gz" "corepure64.gz"
|
||||
download_with_retry "$TINYCORE_MIRROR_URL/$TC_RELEASE/x86_64/release/distribution_files/vmlinuz64" "vmlinuz64"
|
||||
cd $WORKDIR
|
||||
|
||||
########################################################
|
||||
# Build Required Python Dependecies in a Build Directory
|
||||
# Build Required Python Dependencies in a Build Directory
|
||||
########################################################
|
||||
|
||||
# Make directory for building in
|
||||
@ -55,13 +117,13 @@ mkdir "$BUILDDIR"
|
||||
sudo sh -c "echo $TINYCORE_MIRROR_URL > $BUILDDIR/opt/tcemirror"
|
||||
|
||||
# Download Qemu-utils, Biosdevname and IPMItool source
|
||||
clone_single_branch "https://github.com/qemu/qemu.git" "${BUILDDIR}/tmp/qemu" "$QEMU_RELEASE"
|
||||
clone_single_branch "https://github.com/lyonel/lshw.git" "${BUILDDIR}/tmp/lshw" "$LSHW_RELEASE"
|
||||
download_with_retry "https://download.qemu.org/qemu-${QEMU_RELEASE}.tar.xz" "${BUILDDIR}/tmp/qemu"
|
||||
download_with_retry "https://github.com/lyonel/lshw/archive/refs/tags/${LSHW_RELEASE}.tar.gz" "${BUILDDIR}/tmp/lshw"
|
||||
if $TINYIPA_REQUIRE_BIOSDEVNAME; then
|
||||
wget -N -O - https://linux.dell.com/biosdevname/biosdevname-${BIOSDEVNAME_RELEASE}/biosdevname-${BIOSDEVNAME_RELEASE}.tar.gz | tar -xz -C "${BUILDDIR}/tmp" -f -
|
||||
download_with_retry "https://linux.dell.com/biosdevname/biosdevname-${BIOSDEVNAME_RELEASE}/biosdevname-${BIOSDEVNAME_RELEASE}.tar.gz" "${BUILDDIR}/tmp/biosdevname"
|
||||
fi
|
||||
if $TINYIPA_REQUIRE_IPMITOOL; then
|
||||
git clone https://github.com/ipmitool/ipmitool.git "${BUILDDIR}/tmp/ipmitool-src"
|
||||
git clone https://codeberg.org/IPMITool/ipmitool.git "${BUILDDIR}/tmp/ipmitool-src"
|
||||
cd "${BUILDDIR}/tmp/ipmitool-src"
|
||||
git reset $IPMITOOL_GIT_HASH --hard
|
||||
cd -
|
||||
@ -76,23 +138,12 @@ cd $IPA_SOURCE_DIR
|
||||
rm -rf *.egg-info
|
||||
pwd
|
||||
|
||||
PYTHON_COMMAND="python"
|
||||
if [[ $USE_PYTHON3 == "True" ]]; then
|
||||
PYTHON_COMMAND="python3"
|
||||
fi
|
||||
PYTHON_COMMAND="python3"
|
||||
$PYTHON_COMMAND setup.py sdist --dist-dir "$BUILDDIR/tmp/localpip" --quiet
|
||||
|
||||
ls $BUILDDIR/tmp/localpip || true
|
||||
cp requirements.txt $BUILDDIR/tmp/ipa-requirements.txt
|
||||
|
||||
if [ -n "$IRONIC_LIB_SOURCE" ]; then
|
||||
pushd $IRONIC_LIB_SOURCE
|
||||
rm -rf *.egg-info
|
||||
$PYTHON_COMMAND setup.py sdist --dist-dir "$BUILDDIR/tmp/localpip" --quiet
|
||||
cp requirements.txt $BUILDDIR/tmp/ironic-lib-requirements.txt
|
||||
popd
|
||||
fi
|
||||
|
||||
if [ -n "$PYTHON_EXTRA_SOURCES_DIR_LIST" ]; then
|
||||
IFS="," read -ra PKGDIRS <<< "$PYTHON_EXTRA_SOURCES_DIR_LIST"
|
||||
for PKGDIR in "${PKGDIRS[@]}"; do
|
||||
@ -108,9 +159,6 @@ if [ -n "$PYTHON_EXTRA_SOURCES_DIR_LIST" ]; then
|
||||
fi
|
||||
|
||||
$WORKDIR/generate_tox_constraints.sh upper-constraints.txt
|
||||
if [ -n "$IRONIC_LIB_SOURCE" ]; then
|
||||
sed -i '/ironic-lib/d' upper-constraints.txt $BUILDDIR/tmp/ipa-requirements.txt
|
||||
fi
|
||||
cp upper-constraints.txt $BUILDDIR/tmp/upper-constraints.txt
|
||||
echo Using upper-constraints:
|
||||
cat upper-constraints.txt
|
||||
@ -145,39 +193,29 @@ $CHROOT_CMD mkdir -m777 /etc/sysconfig/tcedir
|
||||
$CHROOT_CMD touch /etc/sysconfig/tcuser
|
||||
$CHROOT_CMD chmod a+rwx /etc/sysconfig/tcuser
|
||||
|
||||
mkdir $BUILDDIR/tmp/overides
|
||||
cp $WORKDIR/build_files/fakeuname $BUILDDIR/tmp/overides/uname
|
||||
mkdir $BUILDDIR/tmp/overrides
|
||||
cp $WORKDIR/build_files/fakeuname $BUILDDIR/tmp/overrides/uname
|
||||
|
||||
sudo cp $WORKDIR/build_files/ntpdate $BUILDDIR/bin/ntpdate
|
||||
|
||||
PY_REQS="buildreqs_python2.lst"
|
||||
if [[ $USE_PYTHON3 == "True" ]]; then
|
||||
PY_REQS="buildreqs_python3.lst"
|
||||
fi
|
||||
PY_REQS="buildreqs_python3.lst"
|
||||
|
||||
# NOTE(rpittau) change ownership of the tce info dir to prevent writing issues
|
||||
sudo chown $TC:$STAFF $BUILDDIR/usr/local/tce.installed
|
||||
|
||||
while read line; do
|
||||
sudo chroot --userspec=$TC:$STAFF $BUILDDIR /usr/bin/env -i PATH=$CHROOT_PATH http_proxy=$http_proxy https_proxy=$https_proxy no_proxy=$no_proxy tce-load -wci $line
|
||||
tce_load_with_retry "$line"
|
||||
done < <(paste $WORKDIR/build_files/$PY_REQS $WORKDIR/build_files/buildreqs.lst)
|
||||
|
||||
PIP_COMMAND="pip"
|
||||
TINYIPA_PYTHON_EXE="python"
|
||||
if [[ $USE_PYTHON3 == "True" ]]; then
|
||||
PIP_COMMAND="pip3"
|
||||
TINYIPA_PYTHON_EXE="python3"
|
||||
fi
|
||||
TINYIPA_PYTHON_EXE="python3.9"
|
||||
|
||||
PIP_COMMAND="$TINYIPA_PYTHON_EXE -m pip"
|
||||
|
||||
# Build python wheels
|
||||
$CHROOT_CMD ${TINYIPA_PYTHON_EXE} -m ensurepip
|
||||
$CHROOT_CMD ${PIP_COMMAND} install --upgrade pip==${PIP_VERSION} wheel
|
||||
$CHROOT_CMD ${PIP_COMMAND} install pbr
|
||||
$CHROOT_CMD ${PIP_COMMAND} wheel -c /tmp/upper-constraints.txt --wheel-dir /tmp/wheels -r /tmp/ipa-requirements.txt
|
||||
if [ -n "$IRONIC_LIB_SOURCE" ]; then
|
||||
$CHROOT_CMD ${PIP_COMMAND} wheel -c /tmp/upper-constraints.txt --wheel-dir /tmp/wheels -r /tmp/ironic-lib-requirements.txt
|
||||
$CHROOT_CMD ${PIP_COMMAND} wheel -c /tmp/upper-constraints.txt --no-index --pre --wheel-dir /tmp/wheels --find-links=/tmp/localpip --find-links=/tmp/wheels ironic-lib
|
||||
fi
|
||||
|
||||
if [ -n "$PYTHON_EXTRA_SOURCES_DIR_LIST" ]; then
|
||||
IFS="," read -ra PKGDIRS <<< "$PYTHON_EXTRA_SOURCES_DIR_LIST"
|
||||
@ -196,7 +234,7 @@ ls -1 $BUILDDIR/tmp/wheels
|
||||
|
||||
# Build qemu-utils
|
||||
rm -rf $WORKDIR/build_files/qemu-utils.tcz
|
||||
$CHROOT_CMD /bin/sh -c "cd /tmp/qemu && ./configure --disable-system --disable-user --disable-linux-user --disable-bsd-user --disable-guest-agent --disable-blobs --python=/usr/local/bin/$TINYIPA_PYTHON_EXE && make && make install DESTDIR=/tmp/qemu-utils"
|
||||
$CHROOT_CMD /bin/sh -c "cd /tmp/qemu && CFLAGS=-Wno-error ./configure --disable-system --disable-user --disable-linux-user --disable-bsd-user --disable-guest-agent --disable-blobs --enable-tools --python=/usr/local/bin/$TINYIPA_PYTHON_EXE && make && make install DESTDIR=/tmp/qemu-utils"
|
||||
find $BUILDDIR/tmp/qemu-utils/ -type f -executable | xargs file | awk -F ':' '/ELF/ {print $1}' | sudo xargs strip
|
||||
cd $WORKDIR/build_files && mksquashfs $BUILDDIR/tmp/qemu-utils qemu-utils.tcz && md5sum qemu-utils.tcz > qemu-utils.tcz.md5.txt
|
||||
# Create qemu-utils.tcz.dep
|
||||
|
@ -2,7 +2,7 @@
|
||||
# put other system startup commands here
|
||||
|
||||
#exec > /tmp/installlogs 2>&1
|
||||
set -x
|
||||
set -ux
|
||||
|
||||
echo "Starting bootlocal script:"
|
||||
date
|
||||
@ -24,7 +24,7 @@ fi
|
||||
# Maybe save some RAM?
|
||||
#rm -rf /tmp/builtin
|
||||
|
||||
# Install IPA and dependecies
|
||||
# Install IPA and dependencies
|
||||
if ! type "ironic-python-agent" > /dev/null ; then
|
||||
PIP_COMMAND="pip"
|
||||
if hash pip3 2>/dev/null; then
|
||||
@ -67,6 +67,11 @@ configure_dhcp_network
|
||||
|
||||
mkdir -p /etc/ironic-python-agent.d/
|
||||
|
||||
if [ -d /sys/firmware/efi ] ; then
|
||||
echo "Make efivars available"
|
||||
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
|
||||
fi
|
||||
|
||||
# Run IPA
|
||||
echo "Starting Ironic Python Agent:"
|
||||
date
|
||||
|
@ -11,15 +11,16 @@ gdisk.tcz
|
||||
git.tcz
|
||||
glib2-dev.tcz
|
||||
hdparm.tcz
|
||||
ipv6-netfilter-5.10.3-tinycore64.tcz
|
||||
ipv6-netfilter-6.6.8-tinycore64.tcz
|
||||
libpci-dev.tcz
|
||||
libtool-dev.tcz
|
||||
libtool.tcz
|
||||
ninja.tcz
|
||||
parted.tcz
|
||||
pciutils.tcz
|
||||
pixman-dev.tcz
|
||||
raid-dm-5.10.3-tinycore64.tcz
|
||||
scsi-5.10.3-tinycore64.tcz
|
||||
raid-dm-6.6.8-tinycore64.tcz
|
||||
scsi-6.6.8-tinycore64.tcz
|
||||
udev-lib.tcz
|
||||
util-linux.tcz
|
||||
zlib_base-dev.tcz
|
||||
zlib_base-dev.tcz
|
||||
|
@ -1,2 +0,0 @@
|
||||
python.tcz
|
||||
python-dev.tcz
|
@ -1,2 +1,2 @@
|
||||
python3.6.tcz
|
||||
python3.6-dev.tcz
|
||||
python3.9.tcz
|
||||
python3.9-dev.tcz
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
S="Linux"
|
||||
N="box"
|
||||
R="5.10.3-tinycore64"
|
||||
R="6.6.8-tinycore64"
|
||||
P="unknown"
|
||||
V="#2017 SMP"
|
||||
M="x86_64"
|
||||
|
@ -4,22 +4,22 @@ dmidecode.tcz
|
||||
dosfstools.tcz
|
||||
efibootmgr.tcz
|
||||
efivar.tcz
|
||||
filesystems-5.10.3-tinycore64.tcz
|
||||
filesystems-6.6.8-tinycore64.tcz
|
||||
file.tcz
|
||||
gdisk.tcz
|
||||
glib2.tcz
|
||||
haveged.tcz
|
||||
hdparm.tcz
|
||||
iproute2.tcz
|
||||
ipv6-netfilter-5.10.3-tinycore64.tcz
|
||||
ipv6-netfilter-6.6.8-tinycore64.tcz
|
||||
libxml2.tcz
|
||||
mdadm.tcz
|
||||
ntpclient.tcz
|
||||
parted.tcz
|
||||
pciutils.tcz
|
||||
popt.tcz
|
||||
raid-dm-5.10.3-tinycore64.tcz
|
||||
scsi-5.10.3-tinycore64.tcz
|
||||
raid-dm-6.6.8-tinycore64.tcz
|
||||
scsi-6.6.8-tinycore64.tcz
|
||||
smartmontools.tcz
|
||||
udev-lib.tcz
|
||||
util-linux.tcz
|
||||
util-linux.tcz
|
||||
|
@ -1 +0,0 @@
|
||||
python.tcz
|
@ -1,2 +1,2 @@
|
||||
python3.6.tcz
|
||||
expat2.tcz
|
||||
python3.9.tcz
|
||||
expat2.tcz
|
||||
|
@ -5,11 +5,10 @@ source ${WORKDIR}/tc-mirror.sh
|
||||
|
||||
BUILDDIR="$WORKDIR/tinyipabuild"
|
||||
|
||||
PIP_VERSION="20.2.2"
|
||||
PIP_VERSION="21.3.1"
|
||||
|
||||
TINYIPA_REQUIRE_BIOSDEVNAME=${TINYIPA_REQUIRE_BIOSDEVNAME:-false}
|
||||
TINYIPA_REQUIRE_IPMITOOL=${TINYIPA_REQUIRE_IPMITOOL:-true}
|
||||
USE_PYTHON3=${USE_PYTHON3:-True}
|
||||
|
||||
# PYTHON_EXTRA_SOURCES_DIR_LIST is a csv list of python package dirs to include
|
||||
PYTHON_EXTRA_SOURCES_DIR_LIST=${PYTHON_EXTRA_SOURCES_DIR_LIST:-}
|
||||
@ -25,7 +24,7 @@ export BRANCH_EXT
|
||||
TC=1001
|
||||
STAFF=50
|
||||
|
||||
CHROOT_PATH="/tmp/overides:/usr/local/sbin:/usr/local/bin:/apps/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
CHROOT_PATH="/tmp/overrides:/usr/local/sbin:/usr/local/bin:/apps/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
CHROOT_CMD="sudo chroot $DST_DIR /usr/bin/env -i PATH=$CHROOT_PATH http_proxy=$http_proxy https_proxy=$https_proxy no_proxy=$no_proxy"
|
||||
TC_CHROOT_CMD="sudo chroot --userspec=$TC:$STAFF $DST_DIR /usr/bin/env -i PATH=$CHROOT_PATH http_proxy=$http_proxy https_proxy=$https_proxy no_proxy=$no_proxy"
|
||||
|
||||
|
@ -85,15 +85,12 @@ if $TINYIPA_REQUIRE_IPMITOOL; then
|
||||
cp $WORKDIR/build_files/ipmitool.* $FINALDIR/tmp/builtin/optional
|
||||
fi
|
||||
|
||||
mkdir $FINALDIR/tmp/overides
|
||||
cp $WORKDIR/build_files/fakeuname $FINALDIR/tmp/overides/uname
|
||||
mkdir $FINALDIR/tmp/overrides
|
||||
cp $WORKDIR/build_files/fakeuname $FINALDIR/tmp/overrides/uname
|
||||
|
||||
sudo cp $WORKDIR/build_files/ntpdate $FINALDIR/bin/ntpdate
|
||||
sudo chmod 755 $FINALDIR/bin/ntpdate
|
||||
PY_REQS="finalreqs_python2.lst"
|
||||
if [[ $USE_PYTHON3 == "True" ]]; then
|
||||
PY_REQS="finalreqs_python3.lst"
|
||||
fi
|
||||
PY_REQS="finalreqs_python3.lst"
|
||||
|
||||
# NOTE(rpittau) change ownership of the tce info dir to prevent writing issues
|
||||
sudo chown $TC:$STAFF $FINALDIR/usr/local/tce.installed
|
||||
@ -140,12 +137,8 @@ fi
|
||||
# Ensure tinyipa picks up installed kernel modules
|
||||
$CHROOT_CMD depmod -a `$WORKDIR/build_files/fakeuname -r`
|
||||
|
||||
PIP_COMMAND="pip"
|
||||
TINYIPA_PYTHON_EXE="python"
|
||||
if [[ $USE_PYTHON3 == "True" ]]; then
|
||||
PIP_COMMAND="pip3"
|
||||
TINYIPA_PYTHON_EXE="python3"
|
||||
fi
|
||||
PIP_COMMAND="pip3"
|
||||
TINYIPA_PYTHON_EXE="python3"
|
||||
|
||||
# Install pip
|
||||
# NOTE(rpittau): pip MUST be the same version used in the build script or
|
||||
@ -188,7 +181,7 @@ sudo sed -i '/# Main/a NOZSWAP=1' "$FINALDIR/etc/init.d/tc-config"
|
||||
# Place ipv6 modprobe config so the kernel support loads.
|
||||
sudo cp "$WORKDIR/build_files/modprobe.conf" "$FINALDIR/etc/modproble.conf"
|
||||
|
||||
# NOTE(rpittau): workaorund for hwclock
|
||||
# NOTE(rpittau): workaround for hwclock
|
||||
# The adjtime file used by hwclock in tinycore is /var/lib/hwclock/adjtime
|
||||
# but for some reason (bug?) the file is not created when hwclock is
|
||||
# invoked, causing hwclock to fail when using certain options, for example
|
||||
@ -228,6 +221,10 @@ for target in *; do
|
||||
fi
|
||||
done
|
||||
popd
|
||||
# symlink bash to sh if /bin/sh is not there
|
||||
if [ ! -f "$FINALDIR/bin/sh" ]; then
|
||||
$CHROOT_CMD ln -sf "/bin/bash" "/bin/sh"
|
||||
fi
|
||||
set -x
|
||||
|
||||
# Rebuild build directory into gz file
|
||||
|
15
tox.ini
15
tox.ini
@ -1,7 +1,6 @@
|
||||
[tox]
|
||||
minversion = 3.18.0
|
||||
envlist = pep8
|
||||
skipsdist = True
|
||||
ignore_basepython_conflict = true
|
||||
|
||||
[testenv]
|
||||
@ -16,10 +15,10 @@ deps =
|
||||
|
||||
[testenv:pep8]
|
||||
deps =
|
||||
hacking>=3.1.0,<4.0.0 # Apache-2.0
|
||||
hacking~=6.1.0 # Apache-2.0
|
||||
flake8-import-order>=0.17.1 # LGPLv3
|
||||
doc8>=0.6.0 # Apache-2.0
|
||||
pycodestyle>=2.0.0,<2.7.0 # MIT
|
||||
pycodestyle>=2.0.0,<3.0.0 # MIT
|
||||
commands =
|
||||
flake8 ironic_python_agent_builder
|
||||
doc8 doc/source README.rst CONTRIBUTING.rst
|
||||
@ -53,3 +52,13 @@ application-import-names = ironic_python_agent_builder
|
||||
# [H210] Require 'autospec', 'spec', or 'spec_set' in mock.patch/mock.patch.object calls
|
||||
# [H904] Delay string interpolations at logging calls.
|
||||
enable-extensions=H106,H203,H204,H205,H210,H904
|
||||
|
||||
|
||||
[testenv:codespell]
|
||||
description =
|
||||
Run codespell to check spelling
|
||||
deps = codespell
|
||||
# note(JayF): {posargs} lets us run `tox -ecodespell -- -w` to get codespell
|
||||
# to correct spelling issues in our code it's aware of.
|
||||
commands =
|
||||
codespell {posargs}
|
@ -1,9 +1,12 @@
|
||||
- job:
|
||||
name: ironic-python-agent-build-image-base
|
||||
parent: publish-openstack-artifacts
|
||||
nodeset: ubuntu-noble
|
||||
pre-run: playbooks/ironic-python-agent-build-image/pre.yaml
|
||||
run: playbooks/ironic-python-agent-build-image/run.yaml
|
||||
post-run: playbooks/ironic-python-agent-build-image/post.yaml
|
||||
post-run:
|
||||
- playbooks/ironic-python-agent-build-image/post.yaml
|
||||
- playbooks/ironic-python-agent-build-image/extra-logs.yaml
|
||||
timeout: 1800
|
||||
required-projects:
|
||||
- openstack/requirements
|
||||
@ -20,25 +23,15 @@
|
||||
image_type: 'tinyipa'
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-build-image-dib-centos7
|
||||
parent: ironic-python-agent-build-image-base
|
||||
override-branch: stable/train
|
||||
required-projects:
|
||||
- openstack/diskimage-builder
|
||||
vars:
|
||||
image_type: 'dib'
|
||||
image_distro: 'centos7'
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-build-image-dib-centos8
|
||||
name: ironic-python-agent-build-image-dib-centos9
|
||||
parent: ironic-python-agent-build-image-base
|
||||
required-projects:
|
||||
- openstack/diskimage-builder
|
||||
vars:
|
||||
image_type: 'dib'
|
||||
image_distro: 'centos'
|
||||
image_release: '8-stream'
|
||||
image_target_name: 'centos8'
|
||||
image_release: '9-stream'
|
||||
image_target_name: 'centos9'
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-build-image-dib-debian
|
||||
@ -48,14 +41,15 @@
|
||||
vars:
|
||||
image_type: 'dib'
|
||||
image_distro: 'debian-minimal'
|
||||
image_release: 'buster'
|
||||
image_release: 'bookworm'
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-check-image-base
|
||||
parent: base
|
||||
nodeset: ubuntu-focal
|
||||
nodeset: ubuntu-noble
|
||||
pre-run: playbooks/ironic-python-agent-build-image/pre.yaml
|
||||
run: playbooks/ironic-python-agent-build-image/run.yaml
|
||||
post-run: playbooks/ironic-python-agent-build-image/extra-logs.yaml
|
||||
timeout: 1800
|
||||
required-projects:
|
||||
- openstack/requirements
|
||||
@ -78,42 +72,6 @@
|
||||
vars:
|
||||
image_type: 'tinyipa'
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-check-image-dib-centos7
|
||||
parent: ironic-python-agent-check-image-base
|
||||
override-branch: stable/train
|
||||
required-projects:
|
||||
- openstack/diskimage-builder
|
||||
vars:
|
||||
image_type: 'dib'
|
||||
image_distro: 'centos7'
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-check-image-dib-centos7-python3
|
||||
parent: ironic-python-agent-check-image-base
|
||||
required-projects:
|
||||
- openstack/diskimage-builder
|
||||
vars:
|
||||
image_type: 'dib'
|
||||
image_distro: 'centos7'
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-check-image-dib-centos8
|
||||
parent: ironic-python-agent-check-image-base
|
||||
required-projects:
|
||||
- openstack/diskimage-builder
|
||||
vars:
|
||||
image_type: 'dib'
|
||||
image_distro: 'centos'
|
||||
image_release: '8-stream'
|
||||
image_target_name: 'centos8'
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-check-image-dib-centos8-extra
|
||||
parent: ironic-python-agent-check-image-dib-centos8
|
||||
vars:
|
||||
extra_elements: ["extra-hardware"]
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-check-image-dib-centos9
|
||||
parent: ironic-python-agent-check-image-base
|
||||
@ -131,15 +89,6 @@
|
||||
vars:
|
||||
extra_elements: ["extra-hardware"]
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-check-image-dib-opensuse
|
||||
parent: ironic-python-agent-check-image-base
|
||||
required-projects:
|
||||
- openstack/diskimage-builder
|
||||
vars:
|
||||
image_type: 'dib'
|
||||
image_distro: 'opensuse'
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-check-image-dib-debian
|
||||
parent: ironic-python-agent-check-image-base
|
||||
@ -148,7 +97,27 @@
|
||||
vars:
|
||||
image_type: 'dib'
|
||||
image_distro: 'debian-minimal'
|
||||
image_release: 'buster'
|
||||
image_release: 'bookworm'
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-check-image-dib-debian-bullseye
|
||||
parent: ironic-python-agent-check-image-dib-debian
|
||||
vars:
|
||||
image_release: 'bullseye'
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-check-image-dib-debian-arm64
|
||||
parent: ironic-python-agent-check-image-dib-debian
|
||||
nodeset: debian-bullseye-arm64
|
||||
vars:
|
||||
image_target_name: debian-arm64
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-build-image-dib-debian-arm64
|
||||
parent: ironic-python-agent-build-image-dib-debian
|
||||
nodeset: debian-bullseye-arm64
|
||||
vars:
|
||||
image_target_name: debian-arm64
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-check-image-dib-debian-extra
|
||||
@ -164,30 +133,20 @@
|
||||
vars:
|
||||
image_type: 'dib'
|
||||
image_distro: 'ubuntu'
|
||||
image_release: 'focal'
|
||||
image_release: 'noble'
|
||||
dib_no_tmpfs: '1'
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-build-image-tinyipa-ussuri
|
||||
parent: ironic-python-agent-build-image-tinyipa
|
||||
nodeset: ubuntu-bionic
|
||||
required-projects:
|
||||
- name: openstack/ironic-python-agent-builder
|
||||
override-checkout: 2.2.0
|
||||
- job:
|
||||
name: ironic-python-agent-check-image-tinyipa-ussuri
|
||||
parent: ironic-python-agent-check-image-tinyipa
|
||||
nodeset: ubuntu-bionic
|
||||
required-projects:
|
||||
- name: openstack/ironic-python-agent-builder
|
||||
override-checkout: 2.2.0
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-test-image-tinyipa-ussuri
|
||||
parent: ironic-python-agent-check-image-tinyipa-ussuri
|
||||
required-projects:
|
||||
- name: openstack/ironic-python-agent
|
||||
override-checkout: stable/ussuri
|
||||
- name: openstack/requirements
|
||||
override-checkout: stable/ussuri
|
||||
name: ironic-python-agent-check-image-dib-ubuntu-arm64
|
||||
parent: ironic-python-agent-check-image-dib-ubuntu
|
||||
nodeset: ubuntu-noble-arm64
|
||||
vars:
|
||||
ipa_branch_path: "stable-ussuri"
|
||||
image_target_name: ubuntu-arm64
|
||||
|
||||
|
||||
- job:
|
||||
name: ironic-python-agent-builder-tox-codespell
|
||||
parent: openstack-tox
|
||||
timeout: 7200
|
||||
vars:
|
||||
tox_envlist: codespell
|
||||
|
@ -9,25 +9,23 @@
|
||||
- ironic-standalone-ipa-src
|
||||
- ipa-tempest-bios-ipmi-direct-tinyipa-src
|
||||
- ironic-python-agent-check-image-tinyipa
|
||||
- ironic-python-agent-check-image-dib-centos8
|
||||
- ironic-python-agent-check-image-dib-centos8-extra
|
||||
- ironic-python-agent-check-image-dib-centos7
|
||||
- ironic-python-agent-check-image-dib-centos9
|
||||
- ironic-python-agent-check-image-dib-centos9-extra
|
||||
- ironic-python-agent-check-image-dib-debian
|
||||
- ironic-python-agent-check-image-dib-debian-arm64
|
||||
- ironic-python-agent-check-image-dib-debian-extra
|
||||
# Non-voting jobs
|
||||
- ironic-python-agent-check-image-dib-centos7-python3:
|
||||
- ironic-python-agent-check-image-dib-debian-bullseye:
|
||||
voting: false
|
||||
- ironic-python-agent-check-image-dib-ubuntu:
|
||||
voting: false
|
||||
- ironic-python-agent-check-image-dib-opensuse:
|
||||
- ironic-python-agent-check-image-dib-ubuntu-arm64:
|
||||
voting: false
|
||||
- ipa-tempest-bios-ipmi-direct-src:
|
||||
voting: false
|
||||
- ipa-tempest-ironic-inspector-src:
|
||||
voting: false
|
||||
- tripleo-buildimage-ironic-python-agent-centos-8:
|
||||
voting: false
|
||||
- ironic-python-agent-test-image-tinyipa-ussuri:
|
||||
- ironic-python-agent-builder-tox-codespell:
|
||||
voting: false
|
||||
gate:
|
||||
jobs:
|
||||
@ -35,23 +33,19 @@
|
||||
- ironic-standalone-ipa-src
|
||||
- ipa-tempest-bios-ipmi-direct-tinyipa-src
|
||||
- ironic-python-agent-check-image-tinyipa
|
||||
- ironic-python-agent-check-image-dib-centos8
|
||||
- ironic-python-agent-check-image-dib-centos8-extra
|
||||
- ironic-python-agent-check-image-dib-centos7
|
||||
- ironic-python-agent-check-image-dib-centos9
|
||||
- ironic-python-agent-check-image-dib-centos9-extra
|
||||
- ironic-python-agent-check-image-dib-debian
|
||||
- ironic-python-agent-check-image-dib-debian-arm64
|
||||
- ironic-python-agent-check-image-dib-debian-extra
|
||||
post:
|
||||
jobs:
|
||||
- publish-openstack-python-branch-tarball
|
||||
- ironic-python-agent-build-image-tinyipa:
|
||||
branches: master
|
||||
- ironic-python-agent-build-image-dib-centos8:
|
||||
- ironic-python-agent-build-image-dib-centos9:
|
||||
branches: master
|
||||
- ironic-python-agent-build-image-dib-debian:
|
||||
branches: master
|
||||
experimental:
|
||||
jobs:
|
||||
- ironic-python-agent-check-image-dib-centos9:
|
||||
voting: false
|
||||
- ironic-python-agent-check-image-dib-centos9-extra:
|
||||
voting: false
|
||||
- ironic-python-agent-build-image-dib-debian-arm64:
|
||||
branches: master
|
||||
|
Loading…
x
Reference in New Issue
Block a user