Skip to content

Commit 8a4a52d

Browse files
authored
Merge pull request #308 from rackerlabs/build-ipa-image-20240916
feat: Adds ironic IPA image build tools
2 parents 4626a73 + 4054f8f commit 8a4a52d

File tree

8 files changed

+104
-0
lines changed

8 files changed

+104
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
name: build-ironic-images
3+
4+
on:
5+
workflow_dispatch:
6+
pull_request:
7+
paths:
8+
- 'ironic-images/**'
9+
push:
10+
branches:
11+
- main
12+
paths:
13+
- 'ironic-images/**'
14+
15+
jobs:
16+
build-ironic-images:
17+
runs-on: ubuntu-latest
18+
defaults:
19+
run:
20+
working-directory: ironic-images/ipa-debian-bookworm
21+
steps:
22+
- uses: actions/checkout@v4
23+
- uses: actions/setup-python@v5
24+
id: setup-python
25+
with:
26+
python-version: '3.11'
27+
cache: 'pip'
28+
- run: sudo apt update && sudo apt install -y debootstrap qemu-utils
29+
- run: pip install -r requirements.txt
30+
working-directory: ironic-images
31+
- name: Build the IPA image
32+
run: bash ipa-debian-bookworm.sh
33+
env:
34+
ELEMENTS_PATH: ${{ env.pythonLocation }}/share/ironic-python-agent-builder/dib:${{ github.workspace }}/ironic-images/custom_elements
35+
- name: Dynamically set timestamp environment variable
36+
run: echo "TIMESTAMP=$(date +"%Y%m%d%H%M%S")" >> $GITHUB_ENV
37+
- name: Publish IPA Release
38+
uses: softprops/action-gh-release@v2
39+
with:
40+
name: undercloud-ironic-ipa
41+
tag_name: undercloud-ironic-ipa-${{ env.TIMESTAMP }}
42+
make_latest: true
43+
fail_on_unmatched_files: true
44+
files: |
45+
ironic-images/ipa-debian-bookworm/ipa-debian-bookworm.initramfs
46+
ironic-images/ipa-debian-bookworm/ipa-debian-bookworm.kernel
47+
if: ${{ github.ref == 'refs/heads/main' }}

ironic-images/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Undercloud Ironic Image Build
2+
3+
The image build process is in github actions: `.github/workflows/build-ironic-images.yaml`
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/bin/bash
2+
3+
# dib-lint: disable=set setu setpipefail indent
4+
if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
5+
set -x
6+
fi
7+
set -e
8+
9+
cat > /etc/sysctl.d/99-undercloud-ipa-sysctl-arp-ignore.conf <<EOF
10+
# arp_ignore - INTEGER
11+
# Define different modes for sending replies in response to
12+
# received ARP requests that resolve local target IP addresses:
13+
# 0 - (default): reply for any local target IP address, configured
14+
# on any interface
15+
# 1 - reply only if the target IP address is local address
16+
# configured on the incoming interface
17+
# 2 - reply only if the target IP address is local address
18+
# configured on the incoming interface and both with the
19+
# sender's IP address are part from same subnet on this interface
20+
# 3 - do not reply for local addresses configured with scope host,
21+
# only resolutions for global and link addresses are replied
22+
net.ipv4.conf.all.arp_ignore=2
23+
EOF
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
- Need to install package: debootstrap
2+
- Create virtualenv
3+
- pip install diskimage-builder ironic-python-agent-builder
4+
- ./ipa-debian-bookworm.sh
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/bash
2+
3+
# elements path - need to include both the ironic-python-agent-builder DIB packages
4+
# and our custom_elements packages
5+
# export ELEMENTS_PATH=/path/to/venv/share/ironic-python-agent-builder/dib:/path/to/custom_elements
6+
7+
# distro version
8+
export DIB_RELEASE=bookworm
9+
10+
diskimage-builder ipa-debian-bookworm.yaml
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
- imagename: ipa-debian-bookworm
2+
elements:
3+
- ironic-python-agent-ramdisk
4+
- debian-minimal
5+
- dynamic-login
6+
- journal-to-console
7+
- undercloud-ipa
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
inetutils-ping:
2+
inetutils-telnet:
3+
mtr-tiny:
4+
tcpdump:
5+
systemd-timesyncd:
6+
bind9-dnsutils:

ironic-images/requirements.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
diskimage-builder==3.33.0
2+
ironic-python-agent-builder==5.3.0
3+
python-keystoneclient==5.4.0
4+
python-swiftclient==4.6.0

0 commit comments

Comments
 (0)