Skip to content

Commit 26cbba1

Browse files
committed
Adds Rocky Linux with DOCA OFED example
1 parent 72c105c commit 26cbba1

File tree

2 files changed

+268
-0
lines changed

2 files changed

+268
-0
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Based on https://github.com/openstack/diskimage-builder/blob/master/diskimage_builder/elements/rocky-container/containerfiles/9
2+
3+
FROM quay.io/rockylinux/rockylinux:9
4+
5+
# Workaround for containerized kernel tools
6+
RUN echo "9.6" > /etc/dnf/vars/releasefullver && \
7+
# Can't update packages in DIB once OFED is installed as it provides some "older" packages
8+
RUN dnf update -y \
9+
; dnf -y install chkconfig
10+
11+
RUN dnf group install -y 'Minimal Install' --allowerasing && \
12+
dnf install -y findutils util-linux sudo python3 NetworkManager \
13+
NetworkManager-config-server curl libcurl --allowerasing
14+
15+
RUN systemctl unmask console-getty.service dev-hugepages.mount \
16+
getty.target sys-fs-fuse-connections.mount systemd-logind.service \
17+
systemd-remount-fs.service
18+
19+
# /etc/machine-id needs to be populated for /bin/kernel-install to
20+
# correctly copy kernels into /boot. We will clear this out in the
21+
# final image.
22+
RUN systemd-machine-id-setup
23+
24+
# Install base build dependencies required by DOCA OFED
25+
RUN dnf config-manager --set-enabled appstream crb && \
26+
dnf install -y \
27+
perl cmake kernel-devel \
28+
python3-devel perl-generators python3 rpm-build \
29+
elfutils-libelf-devel zlib-devel gcc-c++ gdb-headless \
30+
glib2-devel patch lsof libmnl openssl-devel \
31+
pciutils-devel pkgconf-pkg-config libstdc++-devel \
32+
libnl3-devel libtool numactl-devel systemd-devel \
33+
kernel-rpm-macros glibc-devel pciutils gcc valgrind-devel \
34+
iptables-devel bison libdb-devel elfutils-devel \
35+
tcsh binutils-devel flex gcc-gfortran python3-Cython \
36+
python3-docutils libmnl-devel wget curl
37+
38+
# Install DOCA OFED 2.9.3 and use doca-kernel-support
39+
# Set DOCA version
40+
ENV DOCA_VERSION=2.9.3
41+
42+
# Create repository file (multiline, because parser issues)
43+
RUN echo "[doca]" > /etc/yum.repos.d/doca.repo && \
44+
echo "name=DOCA Online Repo" >> /etc/yum.repos.d/doca.repo && \
45+
echo "baseurl=https://linux.mellanox.com/public/repo/doca/${DOCA_VERSION}/rhel9.6/x86_64/" >> /etc/yum.repos.d/doca.repo && \
46+
echo "enabled=1" >> /etc/yum.repos.d/doca.repo && \
47+
echo "gpgcheck=0" >> /etc/yum.repos.d/doca.repo
48+
49+
# Install packages (query kernel version for doca-kernel-support using rpm, as uname -r returns builder kernel version)
50+
RUN dnf makecache && \
51+
dnf install -y doca-ofed doca-extra && \
52+
LATEST_KERNEL=$(rpm -qa kernel-core --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}\n' | sort -V | tail -n 1) && \
53+
/opt/mellanox/doca/tools/doca-kernel-support -k "${LATEST_KERNEL}" && \
54+
GENERATED_RPM=$(find /tmp -name 'doca-kernel-repo-*.rpm' | head -n 1) && \
55+
echo "Installing kernel repo from: ${GENERATED_RPM}" && \
56+
rpm -i "${GENERATED_RPM}" && \
57+
dnf makecache && \
58+
dnf install -y doca-ofed-userspace && \
59+
dnf install -y --disablerepo=doca doca-kernel-* && \
60+
dnf clean all

examples/images.yml

Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ openstack_images:
1919
- "{{ openstack_image_cirros_0_6_0 }}"
2020
- "{{ openstack_image_rocky9 }}"
2121
- "{{ openstack_image_ubuntu_jammy }}"
22+
- "{{ openstack_image_rocky9_doca_ofed }}"
2223

2324
# Common GRUB settings for VM images
2425
openstack_grub_env_common:
@@ -129,3 +130,210 @@ openstack_image_ubuntu_jammy:
129130
env:
130131
DIB_RELEASE: "jammy"
131132
DIB_CLOUD_INIT_DATASOURCES: "ConfigDrive"
133+
134+
# Rocky Linux 9 with Doca Ofed enabled.
135+
openstack_image_rocky9_doca_ofed:
136+
name: "Rocky9-doca-ofed"
137+
type: raw
138+
elements:
139+
- "rocky-container"
140+
- "cloud-init"
141+
- "cloud-init-datasources"
142+
- "enable-serial-console"
143+
- "block-device-efi"
144+
- "vm"
145+
- "openssh-server"
146+
- "dracut-regenerate"
147+
visibility: "public"
148+
packages:
149+
- "git"
150+
- "tmux"
151+
- "vim-enhanced"
152+
- "lshw"
153+
- "pciutils"
154+
- "infiniband-diags"
155+
- "ethtool"
156+
- "less"
157+
- "logrotate"
158+
- "net-tools"
159+
- "nvme-cli"
160+
- "python3"
161+
- "smartmontools"
162+
- "NetworkManager-config-server"
163+
- "linux-firmware"
164+
- "cloud-utils-growpart"
165+
env:
166+
DIB_AVOID_PACKAGES_UPDATE: 1
167+
DIB_BLOCK_DEVICE_CONFIG: "{{ stackhpc_dib_block_device_config_uefi_lvm }}"
168+
DIB_DRACUT_ENABLED_MODULES_DEFAULT_CONFIG: "{{ stackhpc_dib_dracut_enabled_modules_default_config }}"
169+
DIB_BOOTLOADER_DEFAULT_CMDLINE: "nofb nomodeset gfxpayload=text net.ifnames=1 rd.auto"
170+
DIB_GRUB_TIMEOUT: "5"
171+
DIB_GRUB_TIMEOUT_STYLE: "menu"
172+
DIB_CONTAINERFILE_DOCKERFILE: "{{ playbook_dir }}/../containerfiles/rocky-latest-doca-ofed"
173+
DIB_CONTAINERFILE_NETWORK_DRIVER: host
174+
DIB_CONTAINERFILE_RUNTIME: docker
175+
YUM: dnf
176+
DIB_CLOUD_INIT_DATASOURCES: "OpenStack, ConfigDrive"
177+
DIB_RELEASE: "9.6"
178+
# Workaround for stack user home ownership bug
179+
DIB_IMAGE_CACHE: "/tmp/yum"
180+
DIB_SUDOERS_FILENAME: "no-fqdn"
181+
# Avoid DNS queries during sudo commands, since we might not always have working DNS.
182+
DIB_SUDOERS_CONFIG: |
183+
Defaults !fqdn
184+
185+
# StackHPC overcloud DIB image block device configuration.
186+
# This image layout conforms to the CIS partition benchmarks.
187+
# This configuration builds a UEFI-compatible image with 3 partitions.
188+
# * p0: EFI ESP bootloader
189+
# * p1: EFI BSP
190+
# * p2: LVM PV (rootpv)
191+
# The rootpv PV is in the rootvg VG, and has the following LVs:
192+
# * lv_root -> /
193+
# * lv_tmp -> /tmp
194+
# * lv_var -> /var
195+
# * lv_var_tmp -> /var/tmp
196+
# * lv_log -> /var/log
197+
# * lv_audit -> /var/log/audit
198+
# * lv_home -> /home
199+
200+
stackhpc_dib_block_device_config_uefi_lvm: |
201+
- local_loop:
202+
name: image0
203+
size: 20GiB
204+
- partitioning:
205+
base: image0
206+
label: gpt
207+
partitions:
208+
- name: ESP
209+
type: 'EF00'
210+
size: 500MiB
211+
mkfs:
212+
type: vfat
213+
mount:
214+
mount_point: /boot/efi
215+
fstab:
216+
options: "defaults"
217+
fsck-passno: 2
218+
- name: BSP
219+
type: 'EF02'
220+
size: 8MiB
221+
- name: root
222+
type: '8E00'
223+
flags: [ boot ]
224+
size: 100%
225+
- lvm:
226+
name: lvm
227+
base: [ root ]
228+
pvs:
229+
- name: rootpv
230+
base: root
231+
options: [ "--force" ]
232+
vgs:
233+
- name: rootvg
234+
base: [ "rootpv" ]
235+
options: [ "--force" ]
236+
lvs:
237+
- name: lv_root
238+
base: rootvg
239+
size: 5G
240+
- name: lv_tmp
241+
base: rootvg
242+
size: 1G
243+
- name: lv_var
244+
base: rootvg
245+
size: 1G
246+
- name: lv_var_tmp
247+
base: rootvg
248+
size: 1G
249+
- name: lv_log
250+
base: rootvg
251+
size: 1G
252+
- name: lv_audit
253+
base: rootvg
254+
size: 128M
255+
- name: lv_home
256+
base: rootvg
257+
size: 128M
258+
- mkfs:
259+
name: fs_root
260+
base: lv_root
261+
type: ext4
262+
label: "rootfs"
263+
mount:
264+
mount_point: /
265+
fstab:
266+
options: "defaults"
267+
fsck-passno: 1
268+
- mkfs:
269+
name: fs_tmp
270+
base: lv_tmp
271+
type: ext4
272+
label: "tmpfs"
273+
mount:
274+
mount_point: /tmp
275+
fstab:
276+
options: "rw,noexec,nosuid,nodev"
277+
fsck-passno: 2
278+
- mkfs:
279+
name: fs_var
280+
base: lv_var
281+
type: ext4
282+
label: "varfs"
283+
mount:
284+
mount_point: /var
285+
fstab:
286+
options: "defaults"
287+
fsck-passno: 2
288+
- mkfs:
289+
name: fs_var_tmp
290+
base: lv_var_tmp
291+
type: ext4
292+
label: "vartmpfs"
293+
mount:
294+
mount_point: /var/tmp
295+
fstab:
296+
options: "rw,noexec,nosuid,nodev"
297+
fsck-passno: 2
298+
- mkfs:
299+
name: fs_log
300+
base: lv_log
301+
type: ext4
302+
label: "logfs"
303+
mount:
304+
mount_point: /var/log
305+
fstab:
306+
options: "defaults"
307+
fsck-passno: 2
308+
- mkfs:
309+
name: fs_audit
310+
base: lv_audit
311+
type: ext4
312+
label: "auditfs"
313+
mount:
314+
mount_point: /var/log/audit
315+
fstab:
316+
options: "defaults"
317+
fsck-passno: 2
318+
- mkfs:
319+
name: fs_home
320+
base: lv_home
321+
type: ext4
322+
label: "homefs"
323+
mount:
324+
mount_point: /home
325+
fstab:
326+
options: "rw,nodev"
327+
fsck-passno: 2
328+
329+
# StackHPC overcloud DIB image Dracut module configuration.
330+
stackhpc_dib_dracut_enabled_modules_default_config: |
331+
- name: crypt
332+
packages:
333+
- cryptsetup
334+
- name: lvm
335+
packages:
336+
- lvm2
337+
- name: mdraid
338+
packages:
339+
- mdraid

0 commit comments

Comments
 (0)