aboutsummaryrefslogtreecommitdiff
path: root/docker/ironic/ironic-pxe
AgeCommit message (Collapse)AuthorFilesLines
2026-07-06Migrate to pyproject.tomlMichal Nasiadka3-162/+0
[tool.setuptools.data-files] does not support recursive directory installation. The old setup.cfg [files] worked because PBR's FilesConfig.expand_globs() used os.walk() to expand docker/*, but this hook is not triggered by the pbr.build PEP-517 backend. Move docker/ into kolla/ and use [tool.setuptools.package-data] instead. Update kolla_worker._get_images_dir() to check the kolla package directory first so both editable and regular installs work. Change-Id: I4fc452c03740ef22ebbb4e8d0d86c4f4783e2d09 Signed-off-by: Michal Nasiadka <mnasiadka@gmail.com>
2026-06-24kolla-build: fix build-date LABEL invalidating Docker layer cacheMichal Nasiadka1-1/+1
The build-date label was rendered into a LABEL instruction on line 3 of every Dockerfile template, immediately after FROM. Because Docker invalidates the cache for a changed instruction and all subsequent layers, a date change caused a full rebuild of every image on each new calendar day, even when nothing else had changed. Fix this by removing build-date from the Dockerfile templates and applying it as a --label argument at build time via image.labels. Labels passed on the build command line are not part of the Dockerfile cache key, so the date is still recorded in the image metadata without affecting layer caching. Change-Id: I8ef0d85bab1a999a4d09f7cbf0c088ca00fdcf77 Signed-off-by: Michal Nasiadka <mnasiadka@gmail.com>
2026-05-08ironic-pxe: Remove httpd setup callMichal Nasiadka1-2/+0
We're not using ironic-pxe as ironic-http anymore and kolla_httpd_setup has been removed from base. Change-Id: Id25e39cee9fd64d147301a39528aa8525bd682c2 Signed-off-by: Michal Nasiadka <mnasiadka@gmail.com>
2026-01-22Fix ironic-pxe syslinux-tftpboot on aarch64 Rocky LinuxBartosz Bezak1-6/+1
Closes-Bug: #2138872 Change-Id: I6e30b749488a0ef2f247adf182db40cda8fa8ca4 Signed-off-by: Bartosz Bezak <bartosz@stackhpc.com>
2025-10-07ironic: Remove ipxe.efi handling for EL10Michal Nasiadka1-6/+1
RHEL removed ipxe.efi - see [1]. [1]: https://issues.redhat.com/browse/RHEL-37610 Change-Id: I142257d6537ceeff23cb2cb34e64d93de9f19d2e Signed-off-by: Michal Nasiadka <mnasiadka@gmail.com>
2025-04-08Fix preparation of /tftpboot for ironic-pxeMatt Anson1-1/+4
Copy aarch64 snponly.efi to /tftpboot during bootstrapping of Centos- and Rocky-based ironic-pxe. Don't use $KOLLA_BASE_ARCH when symlinking to /tftpboot/ipxe.efi, because an aarch64 variant of this binary doesn't exist, just x86_64. Change-Id: Ie19fcb441a2e54a60762e5c8483487b713a29ddd
2025-03-27Add support for aarch64 ipxe to ironic-pxe imageMatt Anson2-1/+7
Support aarch64 ipxe only when using Ubuntu and Rocky Linux base images, as the Debian ipxe package does not provide a suitable aarch64 ipxe binary. Change-Id: If5610148fc80acf13d4eb79fef78349764f08a17
2025-03-19Ironic: Add ESP image for UEFI virtual mediaBartosz Bezak2-0/+34
UEFI virtual media boot requires an ESP image [1]. [1] https://docs.openstack.org/ironic/2024.2/admin/drivers/redfish.html#virtual-media-boot Change-Id: Ie8485a7098743e1d736145e8fd9441cf13c929d7
2024-11-15Add mechanism for patching files in containersMichal Arbet1-0/+2
This patch adds a way to patch files in a Docker image built by Kolla. This is very useful for several reasons, specifically: - Custom modifications - The stable branch of some library has a fix but no pip package has been released - Eliminates the need to package your own pip packages - Eliminates the need to invent your own versioning to prevent upstream versioning - Eliminates the need to manage a pip server - In other words, it eliminates the need to get a wheel into the image and install it manually using any method not previously mentioned It is also highly desirable because, although Kolla can replace the source for a service with a custom URL for a tarball or its own Git repo, it cannot do this for dependencies pulled from pip. I would also like to point out that this is a feature with its own code path and works only if the user "inserts" a patch into the folder patches/docker-image/something.patch and creates an analogous series file for patch source code. Simply said, this code will never interfere with the upstream build process since this feature is not intended for use in upstream. It is rather meant for downstream users who know what they are doing. Now they just have an option to patch their images. Everything works on all layers of the Docker image and stores a report of applied patches which can then be seen in /etc. This mechanism is similar as debian patch quilt. Change-Id: I61d0790c5d4d070b7ea9e8c99c0a76ff5d22bf9d
2023-02-15Remove ipxe code for Ubuntu FocalPierre Riteau1-8/+1
The ipxe package in Ubuntu Jammy includes snponly.efi [1]. Remove code to handle Focal in which snponly.efi is absent from the ipxe package. [1] https://packages.ubuntu.com/jammy/all/ipxe/filelist Change-Id: I5f494de36e6400b5486c1fb786b73c9e1512a046
2022-10-03Fix ironic-pxe EFI path for rockyMichal Nasiadka1-2/+2
Change-Id: I6c82ef5b148b3ebdc8241871117dbe6cd68ed070
2022-09-30Add RockyLinux 9 supportMichal Nasiadka1-3/+3
Depends-On: https://review.opendev.org/c/openstack/kolla-ansible/+/859570 Change-Id: I7af51d07b8a939c908aa072294061def57dd67de
2022-04-22adjust permissions on _extend_start files (part II)Marcin Juszkiewicz1-1/+1
Tim Shearer started it in 1d96a2bbe1b536b7d7f4cdbf55c6dabae6d058ae. Since all extend_start files are sourced rather than executed, the executable bits are now cleared throughout the project. Change-Id: Ia1797c32fc6a35f9f077c673abf4d8e16e51a760
2022-04-05ironic: make tftpboot and httpboot paths configurableMark Goddard4-24/+33
This is needed to support PXE and iPXE at the same time. We will move /tftpboot and /httpboot to /var/lib/ironic/. With these paths configurable via an environment variable, we can support a clean transition. This patch also cleans up pxelinux part, making it analogous to grub and ipxe parts. RHEL leftover mention is removed. Co-Authored-By: Radosław Piliszek <radoslaw.piliszek@gmail.com> Needed-By: https://review.opendev.org/c/openstack/kolla-ansible/+/832159 Change-Id: I1ae81217c8bbf606c903c8009a372662ca3ab08c
2022-02-10ironic: Fix UEFI & iPXE bootloader filenamesMark Goddard1-0/+17
When using Ironic with UEFI boot mode and iPXE booting, nodes will attempt to chainload iPXE using a Network Boot Program (NBP). This is configured in Ironic via [pxe] uefi_ipxe_bootfile_name, and the default since Xena is snponly.efi. In Wallaby and earlier releases, the default was ipxe.efi. These files need to be available in the /tftpboot directory of the ironic-pxe image. The current default of snponly.efi was not present for any supported distros. ipxe.efi was present for Debian/Ubuntu but not CentOS, which appends the architecture to the filename (e.g. ipxe-x86_64.efi). This change ensures that both ipxe.efi and snponly.efi exist in /tftpboot for all supported distributions, ensuring that both the current and previous Ironic defaults should work. Where these files have different names, we use symlinks to allow for any deployers overriding the filenames in configuration. Closes-Bug: #1959203 Change-Id: I79e78dca550262fc86b092a036f9ea96b214ab48
2022-01-26Use distro provided GRUB efiXinliang Liu2-18/+30
Use distro provided GRUB efi instead of creating it like ironic GRUB setup doc[1]. This avoids below ubuntu ironic-python-agent images PXE booting failure. ---------- error: invalid magic number. error: you need to load the kernel first. Press any key to continue... ---------- This also fixes x86_64 uefi pxe booting issue by setting up GRUB efi for x86_64. Besides, GRUB setup only needs to do once at bootstrap stage. [1]: https://docs.openstack.org/ironic/train/install/configure-pxe.html#uefi-pxe-GRUB-setup Closes-Bug: #1879265 Change-Id: I8be5bdf5f1a62751aefe6bd0959e8f558fcfe591
2021-07-28drop leftovers of RHEL supportMarcin Juszkiewicz1-2/+2
As a project we never built RHEL based images so support for them was not tested. Change-Id: I27dfe34ade088228d71f6857ec4f3ab28ee63915
2021-05-11Drop ppc64le supportMarcin Juszkiewicz1-11/+3
We do not test support for ppc64le on CI or other systems. In previous cycles it was used by TripleO and now they have own way. Change-Id: Ibd955869a6f9485dfa4d08a8ad2f4b28b7d59c15
2020-09-06ironic-pxe: RHEL/CentOS: install AArch64 modules on all GRUB architecturesYaakov Selkowitz2-5/+6
grub2-efi-aa64-modules ships in RHEL and CentOS on all GRUB architectures (x86_64, ppc64le, aarch64, but not s390x), and therefore can be used on any of them to support heterogeneous clusters with AArch64. Change-Id: Icf7e7bfddec89c4aec89410884480539b6bbfd74
2020-08-18ironic-pxe: add syslinux-tftpboot on ppc64leYaakov Selkowitz1-1/+1
syslinux-tftpboot was made installable on and shipped for ppc64le in RHEL and CentOS 8.1. Change-Id: I2135d6477d07e8786b81e6e3ea9f3367fc5e3ec6
2020-08-10Refactor httpd install to base imageJames Kirsch1-8/+0
Refactor installing and initial setup of httpd and mod wsgi from individual services to base image. Change-Id: I651a55a9ebe258ef403d33de010a4dfb368a4021
2020-04-15Remove support for CentOS 7Marcin Juszkiewicz1-6/+2
With the move to RHEL/CentOS 8 we no longer have Python 2 in our images so there is no need for checking which Python version (2.x or 3.x) is used inside of containers. We also no longer have to support yum as a value for distro_package_manager. Partially-Implements: blueprint centos-rhel-8 Change-Id: Ie45cf3465fedddbde7856961527421883ba3d5c9
2020-03-01Add block labels to all DockerfilesChristian Berendt1-0/+2
Change-Id: I9692dda817ef134d647247431565e1b58cf9da41
2020-02-01CentOS 8: Relax ironic iPXE EFI bootloader locationMark Goddard1-1/+1
CentOS 7 had ipxe.efi. CentOS 8 has ipxe-i386.efi and ipxe-x86_64.efi. Use a wildcard to copy any of these that are present. Change-Id: I6d409e56b424a039f5aff9af86ca1b026c2c6286 Partially-Implements: blueprint centos-rhel-8
2019-12-11Refactor Apache httpd setupMark Goddard1-10/+1
All Apache httpd setup has been moved to a new helper script, kolla_httpd_setup. This includes the existing clean of /run/httpd, /var/run/httpd, /tmp/httpd etc. Horizon has an additional bit of Apache config for Debian/binary, which has been kept in extend_start.sh for horizon. Change-Id: Ia2af74b69c151db0bd7e452460b0babcee50b282 Related: blueprint centos-rhel-8
2019-09-18Remove support for OracleLinuxMark Goddard1-2/+2
We have agreed to remove support for Oracle Linux. http://lists.openstack.org/pipermail/openstack-discuss/2019-June/006896.html Change-Id: I961dfba1aeef2c509ecdaf376dfe6928926ffb39 Depends-On: https://review.opendev.org/682858
2019-06-07Merge "Debian/Ubuntu: more python3 packages for binary"Zuul1-1/+1
2019-06-06Debian/Ubuntu: more python3 packages for binaryMark Goddard1-1/+1
backport: Stein During the switch to Stein UCA, we did not switch all packages to python 3 for Debian/Ubuntu binary images. This change switches some more of those packages. Change-Id: I0bff21384d88ea678608392de2db1ba418c96665 Co-Authored-By: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
2019-06-03create missing apache2 directory on Debian/UbuntuMarcin Juszkiewicz1-0/+1
Ubuntu/source deployment of several images (horizon, placement-api, zun) failed with: + exec /usr/sbin/apache2 -DFOREGROUND apache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot Change-Id: Ie2a1077f7def0743f1403341985e2109aa490026
2019-03-12Add python3 packages for RHEL systemsAlex Schultz1-1/+5
RDO is currently working on python3 support for the next version of CentOS/RHEL based systems. This package uses the distro_python3 flag that was added as part of I4028991bad92c0e8e21066cc4173c06ce5eba393 to use the python3 specific package names. This change only adds python3 package names for RHEL systems. Conflicts-With: https://review.openstack.org/#/c/636457/ Change-Id: Iad6b70b433a0dd1b0f8ae6790fd280594517661a Related-Blueprint: python3-support
2019-01-17Use base_package_typeAlex Schultz1-2/+2
This change updates the docker files to use base_package_type instead of doing specific distro checks for the rhel/deb generic cases. The base_distro is still available and is used when a specific distro needs a customization but if the differences are purely rpm vs deb, then the base_package_type can be used. Change-Id: I8d720bb185df65a0178061ccf20b1ab2265da2c5
2018-05-15copy iPXE NBP to /tftpboot during PXE bootstrapWill Szumski1-3/+17
This allows you to chainload iPXE from a standard PXE environment. As the PXE container already has apache installed, we now have everything we need to support iPXE booting. Change-Id: Ide32dc1910e9f8b3ff875238648726f719e271b2 Implements: blueprint ironic-ipxe
2018-02-15syslinux package is only built for x86_64Mark Hamzy1-1/+6
The syslinux package is only built for x86_64 and not for ppc64le or aarch64. Change-Id: I773e6ddf20ba2030fdeeb1ee66e79f20f82168aa Closes-Bug: 1749780
2017-12-05Validate Dockerfile indentation in pep8Martin André1-2/+2
Delegate code style validation to computers, they're better than human at it :) This commit adds a new `tools/validate-indentation.sh` script that errors when it finds an indented Dockerfile instruction, and enables the validation in the pep8 check. Also adjust the logic of `tools/validate-all-dockerfiles.sh` so that it doesn't stop on first errors but instead shows all of them. Fixes the remaining indentations in Dockerfiles. Change-Id: I53c0d38304cb4f6d64a5dfab67f70d69b3eae587
2017-10-26ironic-pxe: generate aarch64 bootfile grubaa64.efiZhangfei Gao2-0/+26
Install grub-mkimage & grub2-mkimage accordingly to generate grubaa64.efi, which used as bootfile on aarch64. Change-Id: I21f66951e5d97603bb03da596ac353c2cf3f840e Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
2017-05-03Override image's meta info.Jawon Choo1-1/+1
centos based images have wrong label info, these changes fix own image's name and build-date. Change-Id: I1d13f8f386c8db12b5fbe5f8ecbbf9e3fbb4ba1c Closes-Bug: #1680341
2017-04-20Merge "Use LABEL instead of MAINTAINER (deprecated) in all Dockerfile.j2"Jenkins1-1/+1
2017-04-20Add missing cleanup step for new apache imagesMartin André1-0/+10
A few new images got apache as part of blueprint apache-packages-for-apis without a cleaning up. Without this step the containers may fail to restart due to runtime files already present. This commit fixes it for all images with the exception of heat-base so that it can be cleanly backported to stable/ocata. It also removes the unused APACHE_DIR variable from freezer-api and keystone extend_start.sh script. Change-Id: I47d75221b3d1aae91f11d3e0da83e221a00315b7 Closes-Bug: #1679565
2017-04-20Use LABEL instead of MAINTAINER (deprecated) in all Dockerfile.j2Chen1-1/+1
Use LABEL instruction instead of MAINTAINER (deprecated) instruc- tion as suggested by Docker's official dockerfile guide. docs.docker.com/engine/reference/builder/#maintainer-deprecated Closes-Bug: #1683652 Change-Id: Ie87a1ddf31aefcd0b623fd2837d78de420e76898
2017-04-10Merge "ironic-pxe: handle non-x86 architectures"Jenkins1-1/+7
2017-04-06ironic-pxe: handle non-x86 architecturesMarcin Juszkiewicz1-1/+7
'syslinux' is built only for x86 architectures Partially-Implements: blueprint multiarch-and-arm64-containers Change-Id: I6fa78fd4e301649acd085b84d71047a207277927
2017-04-04debian: enable all images enabled for UbuntuMarcin Juszkiewicz1-1/+1
Debian support is not maintained in Kolla so it got a bit behind Ubuntu one. This changeset enables Debian for all images. Jessie (even with backports) may be too old for some images though. Also unify distro check to ['debian', 'ubuntu'] to keep alphabetical order like it is done for RPM distributions. Partially-Implements: blueprint multiarch-and-arm64-containers Change-Id: I056233fbfa277e0e2360c07c3f80d9558c554357
2017-03-28Alphabetize packagesEduardo Gonzalez1-8/+8
Some images have packages sorted alphabetically and some not. Unify common style between all images. Change-Id: I906ed89c10b12886665618752f525ba71d83d991
2017-03-27RHEL: Add mod_ssl for services running over httpdJuan Antonio Osorio Robles1-2/+4
This apache module is necessary for when one wants to use TLS for the services running over httpd. This only addressed RHEL based systems at the moment, since there is no such package available for Ubuntu. This requires apache2.2-common which will carry a lot more dependencies; So I think this should be handled and decided in a separate patch. when installing mod_ssl in RHEL-based distributions, an ssl.conf file is installed in the /etc/httpd/conf.d directory. This file tells httpd to listen on port 443; however, we don't want to do this by default, since this should be explicitly enabled by the container's configuration. This line is thus removed from the configuration. A release note was added, which specifies this. And the last sentence can be removed if this is addressed for debian/ubuntu as well. Related-Bug: #1675490 Co-Authored-By: Martin André <m.andre@redhat.com> Change-Id: Id6215d31547247309d43c031e163fa9e4c4ec5dc
2017-03-23Prevent apache from listening on port 80Martin André1-2/+4
A few new images got apache as part of blueprint apache-packages-for-apis without restricting it to listen on port 80. This commit fixes it for all images with the exception of heat-base so that it can be cleanly backported to stable/ocata. Co-Authored-By: Juan Antonio Osorio Robles <jaosorior@redhat.com> Change-Id: Idd3bbeffea9233eaed420798e22ea9a3a517c166 Closes-Bug: #1675308
2017-02-05Remove include_header and include_footer in all DockerfilesJeffrey Zhang1-1/+0
include_header and include_footer parameter is already removed, remove them in all Dockerfiles. Add missing footer block. Change-Id: I90da03eb9f95a3827361d5f5ede65fde7d6be2b3
2017-01-23Add ipxe packages to Ironic PXE containerDan Prince1-0/+2
Change-Id: I7e3f5f7932d18565e7bc938128297acb8fd6f4f5 Partially-implements: blueprint ironic-pxe-ipxe-support
2017-01-11Add Apache packages to ironic-pxe containerDan Prince1-2/+6
Some projects that use Kolla docker containers (TripleO) run Ironic pxe under httpd. This patch adds the httpd package so that it exists in the container and can optionally by used via Docker entrypoints. As many of these projects do not require the use of Apache (it is opt-in) at this point not all deployment frameworks support the use of it so the existing configuration defaults have been left as-is for now. Change-Id: I4c3e44db6a1ffa7238006c27038ac0a67c8aa725 Partial-Blueprint: apache-packages-for-apis
2016-11-03Remove Fedora supportChristian Berendt1-1/+1
Closes-bug: #1616387 Change-Id: Id97f88b9baa3d48d33ce120962450a374282d044
2016-10-12copy ldlinux.c32 to /tftpboot in ironic_pxeWaldemar Znoinski1-1/+1
Change-Id: Ie42f75d0779b8e2bd835e9cdc165e73751ce5172 Closes-bug: #1632840