diff --git a/.zuul.d/jobs.yaml b/.zuul.d/jobs.yaml index 1d9226d48..cae73bf26 100644 --- a/.zuul.d/jobs.yaml +++ b/.zuul.d/jobs.yaml @@ -58,6 +58,7 @@ parent: dib-functests-base vars: dib_functests: + - almalinux-container/almalinux-9-aarch64-build-succeeds - centos-minimal/8-stream-aarch64-build-succeeds - centos-minimal/9-stream-aarch64-build-succeeds - openeuler-minimal/22.03-LTS-build-succeeds @@ -82,6 +83,32 @@ - ^doc/.*$ - ^releasenotes/.*$ +- job: + name: dib-nodepool-functional-openstack-almalinux-8-containerfile-src + description: | + Test building and booting a AlmaLinux image from a + containerfile with Nodepool and OpenStack (using released + libraries) + parent: dib-nodepool-functional-src-base + vars: + nodepool_debug: true + nodepool_diskimage: + base_element: almalinux-container + release: '8' + +- job: + name: dib-nodepool-functional-openstack-almalinux-9-containerfile-src + description: | + Test building and booting a AlmaLinux image from a + containerfile with Nodepool and OpenStack (using released + libraries) + parent: dib-nodepool-functional-src-base + vars: + nodepool_debug: true + nodepool_diskimage: + base_element: almalinux-container + release: '9' + - job: name: dib-nodepool-functional-openstack-centos-7-src description: | diff --git a/.zuul.d/project.yaml b/.zuul.d/project.yaml index 121365d02..362c14558 100644 --- a/.zuul.d/project.yaml +++ b/.zuul.d/project.yaml @@ -32,6 +32,10 @@ - dib-functests - opendev-buildset-registry - nodepool-build-image-siblings + - dib-nodepool-functional-openstack-almalinux-8-containerfile-src: + voting: false + - dib-nodepool-functional-openstack-almalinux-9-containerfile-src: + voting: false - dib-nodepool-functional-openstack-centos-7-src - dib-nodepool-functional-openstack-centos-8-stream-src - dib-nodepool-functional-openstack-centos-9-stream-src diff --git a/diskimage_builder/elements/almalinux-container/README.rst b/diskimage_builder/elements/almalinux-container/README.rst new file mode 100644 index 000000000..d12c8edca --- /dev/null +++ b/diskimage_builder/elements/almalinux-container/README.rst @@ -0,0 +1,9 @@ +=================== +almalinux-container +=================== + +Create a minimal image based on AlmaLinux container image + +This element sets the ``DISTRO_NAME`` var to 'almalinux'. The release +of AlmaLinux to be installed can be controlled through the ``DIB_RELEASE`` +variable, which defaults the latest supported release. diff --git a/diskimage_builder/elements/almalinux-container/containerfiles/8 b/diskimage_builder/elements/almalinux-container/containerfiles/8 new file mode 100644 index 000000000..ea895b6d6 --- /dev/null +++ b/diskimage_builder/elements/almalinux-container/containerfiles/8 @@ -0,0 +1,13 @@ +FROM quay.io/almalinuxorg/almalinux:8 + +RUN dnf group install -y 'Minimal Install' --allowerasing && \ + dnf install -y findutils util-linux sudo python3 NetworkManager + +RUN systemctl unmask console-getty.service dev-hugepages.mount \ + getty.target sys-fs-fuse-connections.mount systemd-logind.service \ + systemd-remount-fs.service + +# /etc/machine-id needs to be populated for /bin/kernel-install to +# correctly copy kernels into /boot. We will clear this out in the +# final image. +RUN systemd-machine-id-setup diff --git a/diskimage_builder/elements/almalinux-container/containerfiles/9 b/diskimage_builder/elements/almalinux-container/containerfiles/9 new file mode 100644 index 000000000..342bb94f1 --- /dev/null +++ b/diskimage_builder/elements/almalinux-container/containerfiles/9 @@ -0,0 +1,13 @@ +FROM quay.io/almalinuxorg/almalinux:9 + +RUN dnf group install -y 'Minimal Install' --allowerasing && \ + dnf install -y findutils util-linux sudo python3 NetworkManager + +RUN systemctl unmask console-getty.service dev-hugepages.mount \ + getty.target sys-fs-fuse-connections.mount systemd-logind.service \ + systemd-remount-fs.service + +# /etc/machine-id needs to be populated for /bin/kernel-install to +# correctly copy kernels into /boot. We will clear this out in the +# final image. +RUN systemd-machine-id-setup diff --git a/diskimage_builder/elements/almalinux-container/element-deps b/diskimage_builder/elements/almalinux-container/element-deps new file mode 100644 index 000000000..d9ef0bf46 --- /dev/null +++ b/diskimage_builder/elements/almalinux-container/element-deps @@ -0,0 +1,8 @@ +cache-url +containerfile +package-installs +redhat-common +rpm-distro +source-repositories +vm +yum diff --git a/diskimage_builder/elements/almalinux-container/environment.d/10-01-almalinux-distro-name.bash b/diskimage_builder/elements/almalinux-container/environment.d/10-01-almalinux-distro-name.bash new file mode 100644 index 000000000..76e0da05c --- /dev/null +++ b/diskimage_builder/elements/almalinux-container/environment.d/10-01-almalinux-distro-name.bash @@ -0,0 +1,4 @@ +export DISTRO_NAME=almalinux +export DIB_RELEASE=${DIB_RELEASE:-9} # always the most recent major +export EFI_BOOT_DIR="EFI/almalinux" +export DIB_YUM_MINIMAL_CREATE_INTERFACES=0 diff --git a/diskimage_builder/elements/almalinux-container/environment.d/11-yum-dnf.bash b/diskimage_builder/elements/almalinux-container/environment.d/11-yum-dnf.bash new file mode 100644 index 000000000..91514f1e4 --- /dev/null +++ b/diskimage_builder/elements/almalinux-container/environment.d/11-yum-dnf.bash @@ -0,0 +1 @@ +export YUM=dnf diff --git a/diskimage_builder/elements/almalinux-container/package-installs.yaml b/diskimage_builder/elements/almalinux-container/package-installs.yaml new file mode 100644 index 000000000..21c612d15 --- /dev/null +++ b/diskimage_builder/elements/almalinux-container/package-installs.yaml @@ -0,0 +1,10 @@ +audit: +dnf-plugins-core: +dracut: +dracut-config-generic: +grubby: +kernel: +initscripts: +man-pages: +passwd: +redhat-rpm-config: diff --git a/diskimage_builder/elements/almalinux-container/test-elements/almalinux-9-aarch64-build-succeeds/README.rst b/diskimage_builder/elements/almalinux-container/test-elements/almalinux-9-aarch64-build-succeeds/README.rst new file mode 100644 index 000000000..0b656b972 --- /dev/null +++ b/diskimage_builder/elements/almalinux-container/test-elements/almalinux-9-aarch64-build-succeeds/README.rst @@ -0,0 +1 @@ +Verify a AlmaLinux 9 aarch64 image diff --git a/diskimage_builder/elements/almalinux-container/test-elements/almalinux-9-aarch64-build-succeeds/element-deps b/diskimage_builder/elements/almalinux-container/test-elements/almalinux-9-aarch64-build-succeeds/element-deps new file mode 100644 index 000000000..99857b0c1 --- /dev/null +++ b/diskimage_builder/elements/almalinux-container/test-elements/almalinux-9-aarch64-build-succeeds/element-deps @@ -0,0 +1,3 @@ +block-device-efi +openstack-ci-mirrors +vm diff --git a/diskimage_builder/elements/almalinux-container/test-elements/almalinux-9-aarch64-build-succeeds/environment.d/09-set-distro.bash b/diskimage_builder/elements/almalinux-container/test-elements/almalinux-9-aarch64-build-succeeds/environment.d/09-set-distro.bash new file mode 100644 index 000000000..65c6e4ede --- /dev/null +++ b/diskimage_builder/elements/almalinux-container/test-elements/almalinux-9-aarch64-build-succeeds/environment.d/09-set-distro.bash @@ -0,0 +1 @@ +export DIB_RELEASE='9' diff --git a/diskimage_builder/elements/almalinux-container/test-elements/build-succeeds/README.rst b/diskimage_builder/elements/almalinux-container/test-elements/build-succeeds/README.rst new file mode 100644 index 000000000..1f6968f0e --- /dev/null +++ b/diskimage_builder/elements/almalinux-container/test-elements/build-succeeds/README.rst @@ -0,0 +1 @@ +Verify we can build a almalinux-container image. diff --git a/diskimage_builder/elements/almalinux-container/test-elements/build-succeeds/element-deps b/diskimage_builder/elements/almalinux-container/test-elements/build-succeeds/element-deps new file mode 100644 index 000000000..73b3d4e12 --- /dev/null +++ b/diskimage_builder/elements/almalinux-container/test-elements/build-succeeds/element-deps @@ -0,0 +1 @@ +vm diff --git a/diskimage_builder/elements/elrepo/pre-install.d/01-elrepo b/diskimage_builder/elements/elrepo/pre-install.d/01-elrepo index 5da0522bc..a52938e25 100755 --- a/diskimage_builder/elements/elrepo/pre-install.d/01-elrepo +++ b/diskimage_builder/elements/elrepo/pre-install.d/01-elrepo @@ -8,7 +8,7 @@ set -eu set -o pipefail case "$DISTRO_NAME" in - centos* | rhel* | rocky*) + almalinux* | centos* | rhel* | rocky*) dnf install -y elrepo-release.noarch if [ ${DIB_ELREPO_KERNEL:-0} -eq 1 ]; then rpm -q dnf-plugins-core || dnf install -y dnf-plugins-core diff --git a/diskimage_builder/elements/epel/pkg-map b/diskimage_builder/elements/epel/pkg-map index d5ff8db01..790b69915 100644 --- a/diskimage_builder/elements/epel/pkg-map +++ b/diskimage_builder/elements/epel/pkg-map @@ -1,5 +1,9 @@ { "distro": { + "almalinux": { + "wget": "wget", + "yum-utils": "yum-utils" + }, "centos7": { "wget": "wget", "yum-utils": "yum-utils" diff --git a/diskimage_builder/elements/epel/pre-install.d/05-rpm-epel-release b/diskimage_builder/elements/epel/pre-install.d/05-rpm-epel-release index 5a8cf9ea8..268bfa1c1 100755 --- a/diskimage_builder/elements/epel/pre-install.d/05-rpm-epel-release +++ b/diskimage_builder/elements/epel/pre-install.d/05-rpm-epel-release @@ -6,7 +6,7 @@ fi set -eu set -o pipefail -if [[ (${DISTRO_NAME} =~ "centos" || ${DISTRO_NAME} =~ "rocky") ]]; then +if [[ (${DISTRO_NAME} =~ "almalinux" || ${DISTRO_NAME} =~ "centos" || ${DISTRO_NAME} =~ "rocky") ]]; then # Centos has "epel-release" in extras, which is default enabled. ${YUM} install -y epel-release else diff --git a/diskimage_builder/elements/pkg-map/bin/pkg-map b/diskimage_builder/elements/pkg-map/bin/pkg-map index fefb6007d..45b4b8e35 100755 --- a/diskimage_builder/elements/pkg-map/bin/pkg-map +++ b/diskimage_builder/elements/pkg-map/bin/pkg-map @@ -26,7 +26,8 @@ log = logging.getLogger() def os_family(distro): family = None - if distro in ['fedora', 'rhel', 'rhel7', 'centos', 'centos7', 'openeuler', + if distro in ['almalinux', 'fedora', 'rhel', 'rhel7', 'centos', 'centos7', + 'openeuler', 'rocky']: family = 'redhat' elif distro in ['debian', 'ubuntu']: diff --git a/diskimage_builder/elements/simple-init/environment.d/15-simple-init-networkmanager b/diskimage_builder/elements/simple-init/environment.d/15-simple-init-networkmanager index 8b9268677..40aae8eaa 100644 --- a/diskimage_builder/elements/simple-init/environment.d/15-simple-init-networkmanager +++ b/diskimage_builder/elements/simple-init/environment.d/15-simple-init-networkmanager @@ -1,12 +1,12 @@ -if [[ ${DISTRO_NAME} =~ (centos|fedora|rocky) ]]; then +if [[ ${DISTRO_NAME} =~ (almalinux|centos|fedora|rocky) ]]; then export DIB_SIMPLE_INIT_NETWORKMANAGER=${DIB_SIMPLE_INIT_NETWORKMANAGER:-1} else export DIB_SIMPLE_INIT_NETWORKMANAGER=${DIB_SIMPLE_INIT_NETWORKMANAGER:-0} fi -if [[ (${DISTRO_NAME} == "centos" || ${DISTRO_NAME} == "rocky") && $DIB_RELEASE > 7 ]] || [[ ${DISTRO_NAME} == "fedora" ]]; then +if [[ (${DISTRO_NAME} == "almalinux" || ${DISTRO_NAME} == "centos" || ${DISTRO_NAME} == "rocky") && $DIB_RELEASE > 7 ]] || [[ ${DISTRO_NAME} == "fedora" ]]; then if [[ $DIB_SIMPLE_INIT_NETWORKMANAGER == 0 ]]; then - echo "simple-init only supports NetworkManager mode on Fedora and CentOS/Rocky 8" + echo "simple-init only supports NetworkManager mode on Fedora and AlmaLinux/CentOS/Rocky 8 & 9" exit 1 fi fi