diff --git a/containerfiles/rocky-8.8 b/containerfiles/rocky-8.8 new file mode 100644 index 0000000..fadc877 --- /dev/null +++ b/containerfiles/rocky-8.8 @@ -0,0 +1,33 @@ +# syntax=docker/dockerfile:1.4.3 + +FROM docker.io/library/rockylinux:8.8 + +ARG rocky_version=8.8 + +# /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 + +# Pin to an older version of Rocky Linux by setting a DNF package variable +RUN echo "8.8" > /etc/dnf/vars/releasever && dnf update -y --refresh + +# Install/remove packages from https://git.rockylinux.org/rocky/kickstarts/-/blob/r8/Rocky-8-GenericCloud.ks +RUN dnf install -y @core --allowerasing +RUN dnf install -y chrony dnf yum cloud-init cloud-utils-growpart NetworkManager \ + findutils util-linux sudo python3 \ + dracut-config-generic dracut-norescue firewalld gdisk grub2 \ + kernel nfs-utils rsync tar dnf-utils yum-utils \ + python3-jsonschema qemu-guest-agent dhcp-client \ + rocky-release rng-tools +RUN dnf erase -y aic94xx-firmware alsa-firmware alsa-lib alsa-tools-firmware \ + ivtv-firmware iwl100-firmware iwl1000-firmware iwl105-firmware \ + iwl135-firmware iwl2000-firmware iwl2030-firmware iwl3160-firmware \ + iwl3945-firmware iwl4965-firmware iwl5000-firmware iwl5150-firmware \ + iwl6000-firmware iwl6000g2a-firmware iwl6000g2b-firmware iwl6050-firmware \ + iwl7260-firmware libertas-sd8686-firmware libertas-sd8787-firmware \ + libertas-usb8388-firmware biosdevname iprutils plymouth + +RUN systemctl unmask console-getty.service dev-hugepages.mount \ + getty.target sys-fs-fuse-connections.mount systemd-logind.service \ + systemd-remount-fs.service diff --git a/containerfiles/rocky-8.8-ofed-23.04 b/containerfiles/rocky-8.8-ofed-23.04 new file mode 100644 index 0000000..e1ed88a --- /dev/null +++ b/containerfiles/rocky-8.8-ofed-23.04 @@ -0,0 +1,53 @@ +# syntax=docker/dockerfile:1.4.3 + +FROM docker.io/library/rockylinux:8.8 + +# /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 + +# Pin to an older version of Rocky Linux by setting a DNF package variable +RUN echo "8.8" > /etc/dnf/vars/releasever && dnf update -y --refresh + +# Install/remove packages from https://git.rockylinux.org/rocky/kickstarts/-/blob/r8/Rocky-8-GenericCloud.ks +RUN dnf install -y @core --allowerasing +RUN dnf install -y chrony dnf yum cloud-init cloud-utils-growpart NetworkManager \ + findutils util-linux sudo python3 \ + dracut-config-generic dracut-norescue firewalld gdisk grub2 \ + kernel nfs-utils rsync tar dnf-utils yum-utils \ + python3-jsonschema qemu-guest-agent dhcp-client \ + rocky-release rng-tools +RUN dnf erase -y aic94xx-firmware alsa-firmware alsa-lib alsa-tools-firmware \ + ivtv-firmware iwl100-firmware iwl1000-firmware iwl105-firmware \ + iwl135-firmware iwl2000-firmware iwl2030-firmware iwl3160-firmware \ + iwl3945-firmware iwl4965-firmware iwl5000-firmware iwl5150-firmware \ + iwl6000-firmware iwl6000g2a-firmware iwl6000g2b-firmware iwl6050-firmware \ + iwl7260-firmware libertas-sd8686-firmware libertas-sd8787-firmware \ + libertas-usb8388-firmware biosdevname iprutils plymouth + +RUN systemctl unmask console-getty.service dev-hugepages.mount \ + getty.target sys-fs-fuse-connections.mount systemd-logind.service \ + systemd-remount-fs.service + +# Apply OFED installation +# FIXME: the hardcoded kernel version should be dynamically deduced +RUN dnf config-manager --set-enabled powertools && dnf install -y perl cmake kernel-devel \ + python36-devel perl-generators python36 rpm-build elfutils-libelf-devel zlib-devel \ + gcc-c++ gdb-headless glib2-devel patch lsof libmnl-devel openssl-devel pciutils-devel \ + pkgconf-pkg-config libstdc++-devel libnl3-devel libtool python3-docutils numactl-devel \ + systemd-devel kernel-rpm-macros glibc-devel pciutils gcc valgrind-devel iptables-devel \ + bison libdb-devel elfutils-devel tcsh binutils-devel flex gcc-gfortran python3-Cython + +# Apply all package updates ahead of OFED installation to avoid dependency wrangling later +RUN dnf update -y + +RUN curl -L https://content.mellanox.com/ofed/MLNX_OFED-23.04-1.1.3.0/MLNX_OFED_SRC-23.04-1.1.3.0.tgz --output /tmp/MLNX_OFED_SRC-23.04-1.1.3.0.tgz \ + && cd /tmp \ + && tar -xzf MLNX_OFED_SRC-23.04-1.1.3.0.tgz \ + && /tmp/MLNX_OFED_SRC-23.04-1.1.3.0/install.pl --hpc --kernel $(cd /lib/modules && ls -t1 | head -n 1) -vvv \ + && rm -rf /tmp/MLNX_OFED_SRC-23.04-1.1.3.0* + +# This package causes us problems later on due to a higher epoch +# assigned to a lower version of OpenMPI 4 built by Rocky Linux +RUN dnf install -y python3-dnf-plugin-versionlock && yum versionlock openmpi diff --git a/containerfiles/rocky-9.1 b/containerfiles/rocky-9.1 new file mode 100644 index 0000000..d3e09e8 --- /dev/null +++ b/containerfiles/rocky-9.1 @@ -0,0 +1,32 @@ +# syntax=docker/dockerfile:1.4.3 + +FROM docker.io/library/rockylinux:9.1 + +ARG rocky_version=9.1 + +# /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 + +# Pin to an older version of Rocky Linux by setting a DNF package variable +RUN echo "9.1" > /etc/dnf/vars/releasever && echo "vault/rocky" > /etc/dnf/vars/contentdir && sed -e 's|^mirrorlist|#mirrorlist|' -e 's/^#baseurl=/baseurl=/' -i /etc/yum.repos.d/rocky*.repo && dnf update -y --refresh + +# Install/remove packages from https://git.rockylinux.org/rocky/kickstarts/-/blob/r8/Rocky-8-GenericCloud.ks +RUN dnf install -y @core --allowerasing +RUN dnf install -y chrony dnf yum cloud-init cloud-utils-growpart \ + dracut-config-generic firewalld gdisk grub2 \ + kernel nfs-utils rsync tar dnf-utils yum-utils \ + python3-jsonschema dhcp-client \ + rocky-release rng-tools initscripts +RUN dnf erase -y aic94xx-firmware alsa-firmware alsa-lib alsa-tools-firmware \ + ivtv-firmware iwl100-firmware iwl1000-firmware iwl105-firmware \ + iwl135-firmware iwl2000-firmware iwl2030-firmware iwl3160-firmware \ + iwl3945-firmware iwl4965-firmware iwl5000-firmware iwl5150-firmware \ + iwl6000-firmware iwl6000g2a-firmware iwl6000g2b-firmware iwl6050-firmware \ + iwl7260-firmware libertas-sd8686-firmware libertas-sd8787-firmware \ + libertas-usb8388-firmware biosdevname iprutils plymouth + +RUN systemctl unmask console-getty.service dev-hugepages.mount \ + getty.target sys-fs-fuse-connections.mount systemd-logind.service \ + systemd-remount-fs.service diff --git a/containerfiles/rocky-9.1-ofed-5.8 b/containerfiles/rocky-9.1-ofed-5.8 new file mode 100644 index 0000000..bb93d99 --- /dev/null +++ b/containerfiles/rocky-9.1-ofed-5.8 @@ -0,0 +1,47 @@ +# syntax=docker/dockerfile:1.4.3 + +FROM docker.io/library/rockylinux:9.1 + +# Pin to an older version of Rocky Linux by setting a DNF package variable +RUN echo "9.1" > /etc/dnf/vars/releasever && echo "vault/rocky" > /etc/dnf/vars/contentdir && sed -e 's|^mirrorlist|#mirrorlist|' -e 's/^#baseurl=/baseurl=/' -i /etc/yum.repos.d/rocky*.repo && dnf update -y --refresh + + +# /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 dnf install -y systemd +RUN /usr/bin/systemd-machine-id-setup + +# Install/remove packages from https://git.rockylinux.org/rocky/kickstarts/-/blob/r8/Rocky-8-GenericCloud.ks +RUN dnf install -y @core --allowerasing +RUN dnf install -y chrony dnf yum cloud-init cloud-utils-growpart \ + dracut-config-generic firewalld gdisk grub2 \ + kernel nfs-utils rsync tar dnf-utils yum-utils \ + python3-jsonschema dhcp-client \ + rocky-release rng-tools initscripts +RUN dnf erase -y aic94xx-firmware alsa-firmware alsa-lib alsa-tools-firmware \ + ivtv-firmware iwl100-firmware iwl1000-firmware iwl105-firmware \ + iwl135-firmware iwl2000-firmware iwl2030-firmware iwl3160-firmware \ + iwl3945-firmware iwl4965-firmware iwl5000-firmware iwl5150-firmware \ + iwl6000-firmware iwl6000g2a-firmware iwl6000g2b-firmware iwl6050-firmware \ + iwl7260-firmware libertas-sd8686-firmware libertas-sd8787-firmware \ + libertas-usb8388-firmware biosdevname iprutils plymouth + +RUN systemctl unmask console-getty.service dev-hugepages.mount \ + getty.target sys-fs-fuse-connections.mount systemd-logind.service \ + systemd-remount-fs.service + +# Apply OFED installation +RUN dnf config-manager --set-enabled appstream crb && dnf install -y perl cmake kernel-devel \ + python3-devel perl-generators python3 rpm-build elfutils-libelf-devel zlib-devel \ + gcc-c++ gdb-headless glib2-devel patch lsof libmnl openssl-devel pciutils-devel \ + pkgconf-pkg-config libstdc++-devel libnl3-devel libtool numactl-devel \ + systemd-devel kernel-rpm-macros glibc-devel pciutils gcc valgrind-devel iptables-devel \ + bison libdb-devel elfutils-devel tcsh binutils-devel flex gcc-gfortran \ + python3-Cython python3-docutils libmnl-devel + +RUN curl -L https://content.mellanox.com/ofed/MLNX_OFED-5.8-1.1.2.1/MLNX_OFED_SRC-5.8-1.1.2.1.tgz --output /tmp/MLNX_OFED_SRC-5.8-1.1.2.1.tgz \ + && cd /tmp \ + && tar -xzf MLNX_OFED_SRC-5.8-1.1.2.1.tgz \ + && /tmp/MLNX_OFED_SRC-5.8-1.1.2.1/install.pl --hpc --kernel $(cd /lib/modules && ls -t1 | head -n 1) \ + && rm -rf /tmp/MLNX_OFED_SRC-5.8-1.1.2.1* diff --git a/containerfiles/rocky-9.2 b/containerfiles/rocky-9.2 new file mode 100644 index 0000000..b81356b --- /dev/null +++ b/containerfiles/rocky-9.2 @@ -0,0 +1,32 @@ +# syntax=docker/dockerfile:1.4.3 + +FROM docker.io/library/rockylinux:9.2 + +ARG rocky_version=9.2 + +# /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 + +# Pin to an older version of Rocky Linux by setting a DNF package variable +RUN echo "9.2" > /etc/dnf/vars/releasever && dnf update -y --refresh + +# Install/remove packages from https://git.rockylinux.org/rocky/kickstarts/-/blob/r8/Rocky-8-GenericCloud.ks +RUN dnf install -y @core --allowerasing +RUN dnf install -y chrony dnf yum cloud-init cloud-utils-growpart \ + dracut-config-generic firewalld gdisk grub2 \ + kernel nfs-utils rsync tar dnf-utils yum-utils \ + python3-jsonschema dhcp-client \ + rocky-release rng-tools initscripts +RUN dnf erase -y aic94xx-firmware alsa-firmware alsa-lib alsa-tools-firmware \ + ivtv-firmware iwl100-firmware iwl1000-firmware iwl105-firmware \ + iwl135-firmware iwl2000-firmware iwl2030-firmware iwl3160-firmware \ + iwl3945-firmware iwl4965-firmware iwl5000-firmware iwl5150-firmware \ + iwl6000-firmware iwl6000g2a-firmware iwl6000g2b-firmware iwl6050-firmware \ + iwl7260-firmware libertas-sd8686-firmware libertas-sd8787-firmware \ + libertas-usb8388-firmware biosdevname iprutils plymouth + +RUN systemctl unmask console-getty.service dev-hugepages.mount \ + getty.target sys-fs-fuse-connections.mount systemd-logind.service \ + systemd-remount-fs.service diff --git a/examples/images.yml b/examples/images.yml index 925406c..ba7ba0b 100644 --- a/examples/images.yml +++ b/examples/images.yml @@ -18,7 +18,11 @@ openstack_images: - "{{ openstack_image_centos_stream8 }}" - "{{ openstack_image_cirros_0_6_0 }}" - "{{ openstack_image_rocky8 }}" + - "{{ openstack_image_rocky88 }}" + - "{{ openstack_image_rocky91 }}" + - "{{ openstack_image_rocky92 }}" - "{{ openstack_image_ubuntu_focal }}" + - "{{ openstack_image_ubuntu_jammy }}" # CentOS Stream 8. openstack_image_centos_stream8: @@ -62,7 +66,7 @@ openstack_image_cirros_0_6_0: os_version: "0.6.0" hw_rng_model: "virtio" -# Rocky Linux 8. +# Rocky Linux 8, latest release. openstack_image_rocky8: name: "Rocky8" type: raw @@ -97,6 +101,129 @@ openstack_image_rocky8: os_version: "8" hw_rng_model: "virtio" +# Rocky Linux 8.8 built using a custom containerfile +openstack_image_rocky88: + name: "Rocky-8.8" + type: "raw" + elements: + - "rocky-container" + - "cloud-init" + - "cloud-init-growpart" + - "epel" + - "selinux-permissive" + - "dhcp-all-interfaces" + - "vm" + - "grub2" + - "openssh-server" + - "block-device-efi" + - "dracut-regenerate" + is_public: True + packages: + - "gdisk" + - "efibootmgr" + - "efivar" + - "bash-completion" + - "git" + - "linux-firmware" + - "logrotate" + - "lshw" + - "man-db" + - "net-tools" + - "nmon" + - "pciutils" + - "tmux" + - "vim-enhanced" + - "NetworkManager-initscripts-updown" + - "dracut" + - "dracut-network" + env: + DIB_CONTAINERFILE_NETWORK_DRIVER: host + DIB_CONTAINERFILE_RUNTIME: docker + DIB_CONTAINERFILE_DOCKERFILE: "{{ playbook_dir }}/../containerfiles/rocky-8.8" + DIB_CLOUD_INIT_GROWPART_DEVICES: + - / + YUM: dnf + DIB_RELEASE: "8.8" + DIB_DRACUT_ENABLED_MODULES: + - name: lvm + packages: + - lvm2 + - name: kernel-modules + - name: kernel-network-modules + properties: + os_type: "linux" + os_distro: "rocky" + os_version: "8.8" + hw_vif_multiqueue_enabled: true + hw_scsi_model: "virtio-scsi" + hw_disk_bus: "scsi" + +# Rocky Linux 9.1 built from custom containerfile +openstack_image_rocky91: + name: "Rocky-9.1" + type: "raw" + elements: + - "rocky-container" + - "cloud-init" + - "cloud-init-growpart" + - "selinux-permissive" + - "vm" + - "grub2" + - "openssh-server" + is_public: True + packages: + - "git" + - "tmux" + - "vim-enhanced" + env: + DIB_CONTAINERFILE_NETWORK_DRIVER: host + DIB_CONTAINERFILE_RUNTIME: docker + DIB_CONTAINERFILE_DOCKERFILE: "{{ playbook_dir }}/../containerfiles/rocky-9.1" + YUM: dnf + DIB_CLOUD_INIT_GROWPART_DEVICES: + - "/" + DIB_RELEASE: "9.1" + properties: + os_type: "linux" + os_distro: "rocky" + os_version: "9.1" + hw_vif_multiqueue_enabled: true + hw_scsi_model: "virtio-scsi" + hw_disk_bus: "scsi" + +# Rocky Linux 9.2 built from custom containerfile +openstack_image_rocky92: + name: "Rocky-9.2" + type: "raw" + elements: + - "rocky-container" + - "cloud-init" + - "cloud-init-growpart" + - "selinux-permissive" + - "vm" + - "grub2" + - "openssh-server" + is_public: True + packages: + - "git" + - "tmux" + - "vim-enhanced" + env: + DIB_CONTAINERFILE_NETWORK_DRIVER: host + DIB_CONTAINERFILE_RUNTIME: docker + DIB_CONTAINERFILE_DOCKERFILE: "{{ playbook_dir }}/../containerfiles/rocky-9.2" + YUM: dnf + DIB_CLOUD_INIT_GROWPART_DEVICES: + - "/" + DIB_RELEASE: "9.2" + properties: + os_type: "linux" + os_distro: "rocky" + os_version: "9.2" + hw_vif_multiqueue_enabled: true + hw_scsi_model: "virtio-scsi" + hw_disk_bus: "scsi" + # Ubuntu Focal 20.04. openstack_image_ubuntu_focal: name: "Ubuntu-20.04" @@ -124,3 +251,139 @@ openstack_image_ubuntu_focal: env: DIB_RELEASE: "focal" DIB_CLOUD_INIT_DATASOURCES: "ConfigDrive" + +# Ubuntu Jammy 22.04 +openstack_image_ubuntu_jammy: + name: "Ubuntu-22.04" + type: "raw" + is_public: True + elements: + - "cloud-init" + - "grub2" + - "openssh-server" + - "ubuntu-minimal" + - "vm" + packages: + - "bash-completion" + - "git" + - "less" + - "logrotate" + - "lshw" + - "man-db" + - "net-tools" + - "nmon" + - "pciutils" + - "tmux" + - "iputils-ping" + - "netbase" + - "apt-utils" + - "curl" + - "debootstrap" + - "vim" + properties: + os_type: "linux" + os_distro: "ubuntu" + os_version: "jammy" + hw_rng_model: "virtio" + hw_vif_multiqueue_enabled: true + hw_scsi_model: "virtio-scsi" + hw_disk_bus: "scsi" + env: + DIB_RELEASE: "jammy" + +################################################################################ +# Rocky Linux plus Open Fabrics (OFED) + +# Rocky 8.8 built with Mellanox OFED 23.04 +openstack_image_rocky88_ofed2304: + name: "Rocky-8.8-OFED-23.04" + type: "raw" + elements: + - "rocky-container" + - "cloud-init" + - "cloud-init-growpart" + - "epel" + - "selinux-permissive" + - "dhcp-all-interfaces" + - "vm" + - "grub2" + - "openssh-server" + - "block-device-efi" + - "dracut-regenerate" + is_public: False + packages: + - "gdisk" + - "efibootmgr" + - "efivar" + - "bash-completion" + - "git" + - "linux-firmware" + - "logrotate" + - "lshw" + - "man-db" + - "net-tools" + - "nmon" + - "pciutils" + - "tmux" + - "vim-enhanced" + - "NetworkManager-initscripts-updown" + - "dracut" + - "dracut-network" + env: + DIB_CONTAINERFILE_NETWORK_DRIVER: host + DIB_CONTAINERFILE_RUNTIME: docker + DIB_CONTAINERFILE_DOCKERFILE: "{{ playbook_dir }}/../containerfiles/rocky-8.8-ofed-23.04" + DIB_CLOUD_INIT_GROWPART_DEVICES: + - / + YUM: dnf + DIB_RELEASE: "8.8" + DIB_DRACUT_ENABLED_MODULES: + - name: lvm + packages: + - lvm2 + - name: kernel-modules + - name: kernel-network-modules + properties: + os_type: "linux" + os_distro: "rocky" + os_version: "8.8" + hw_vif_multiqueue_enabled: true + hw_scsi_model: "virtio-scsi" + hw_disk_bus: "scsi" + +# Rocky Linux 9.1 plus OFED 5.8 drivers +openstack_image_rocky91_ofed58: + name: "Rocky-9.1-OFED-5.8" + type: "raw" + elements: + - "rocky-container" + - "cloud-init" + - "cloud-init-growpart" + - "selinux-permissive" + - "vm" + - "openssh-server" + - "dracut-regenerate" + is_public: False + packages: + - "git" + - "tmux" + - "vim-enhanced" + - "lshw" + - "pciutils" + - "infiniband-diags" + env: + DIB_CONTAINERFILE_DOCKERFILE: "{{ playbook_dir }}/../containerfiles/rocky-9.1-ofed-5.8" + DIB_CONTAINERFILE_NETWORK_DRIVER: host + DIB_CONTAINERFILE_RUNTIME: docker + YUM: dnf + DIB_CLOUD_INIT_GROWPART_DEVICES: + - "/" + DIB_RELEASE: "9.1" + properties: + os_type: "linux" + os_distro: "rocky" + os_version: "9.1" + hw_vif_multiqueue_enabled: true + hw_scsi_model: "virtio-scsi" + hw_disk_bus: "scsi" +