Skip to content

Commit ba287ae

Browse files
committed
Add fake_ipa config
1 parent 0c341b4 commit ba287ae

File tree

4 files changed

+131
-65
lines changed

4 files changed

+131
-65
lines changed

Support/Multitenancy/ironic-env/01-vm-setup.sh

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
set -e
22
#install kvm for minikube
3-
dnf -y install qemu-kvm libvirt virt-install net-tools
3+
dnf -y install qemu-kvm libvirt virt-install net-tools podman firewalld
44
systemctl enable --now libvirtd
5+
systemctl start firewalld
6+
systemctl enable firewalld
57
# create provisioning network
6-
cat <<EOF > provisioning.xml
8+
cat <<EOF >provisioning.xml
79
<network
810
xmlns:dnsmasq='http://libvirt.org/schemas/network/dnsmasq/1.0'>
911
<dnsmasq:options>
@@ -16,7 +18,7 @@ cat <<EOF > provisioning.xml
1618
</network>
1719
EOF
1820

19-
cat <<EOF > baremetal.xml
21+
cat <<EOF >baremetal.xml
2022
<network xmlns:dnsmasq='http://libvirt.org/schemas/network/dnsmasq/1.0'>
2123
<name>baremetal</name>
2224
<forward mode='nat'>
@@ -46,11 +48,11 @@ cat <<EOF > baremetal.xml
4648
</network>
4749
EOF
4850
# define networks
49-
virsh net-define baremetal.xml
51+
virsh net-define baremetal.xml
5052
virsh net-start baremetal
5153
virsh net-autostart baremetal
5254

53-
virsh net-define provisioning.xml
55+
virsh net-define provisioning.xml
5456
virsh net-start provisioning
5557
virsh net-autostart provisioning
5658
tee -a /etc/NetworkManager/system-connections/provisioning.nmconnection <<EOF
Lines changed: 88 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,96 @@
1-
set -e
2-
virsh attach-interface --domain minikube --model virtio --source provisioning --type network --config
1+
# Set variables
2+
REGISTRY_NAME="registry"
3+
REGISTRY_PORT="5000"
4+
IMAGE_NAMES=(
5+
"quay.io/metal3-io/sushy-tools"
6+
"quay.io/metal3-io/ironic-ipa-downloader"
7+
"quay.io/metal3-io/ironic:latest"
8+
"quay.io/metal3-io/ironic-client"
9+
"quay.io/metal3-io/keepalived"
10+
)
11+
12+
# Attach provisioning and baremetal network interfaces to minikube domain
313
virsh attach-interface --domain minikube --model virtio --source provisioning --type network --config
414
virsh attach-interface --domain minikube --model virtio --source baremetal --type network --config
5-
# Download images
6-
podman run -d -p 5000:5000 --name registry docker.io/library/registry:2.7.1
7-
# Create pods
8-
podman pod create -n infra-pod || true
9-
podman pod create -n ironic-pod || true
10-
# Pull images
11-
mkdir -p /opt/metal3-dev-env/ironic/html/images
12-
podman pull quay.io/metal3-io/sushy-tools
13-
podman pull quay.io/metal3-io/ironic-ipa-downloader
14-
podman pull quay.io/metal3-io/ironic:latest
15-
podman pull quay.io/metal3-io/ironic-client
16-
podman pull quay.io/metal3-io/keepalived
17-
podman tag quay.io/metal3-io/sushy-tools 127.0.0.1:5000/localimages/sushy-tools
18-
podman tag quay.io/metal3-io/ironic-ipa-downloader 127.0.0.1:5000/localimages/ironic-ipa-downloader
19-
podman tag quay.io/metal3-io/ironic-client 127.0.0.1:5000/localimages/ironic-client
20-
podman tag quay.io/metal3-io/keepalived 127.0.0.1:5000/localimages/keepalived
21-
podman tag quay.io/metal3-io/ironic:latest 127.0.0.1:5000/localimages/ironic:latest
22-
podman push --tls-verify=false 127.0.0.1:5000/localimages/keepalived
23-
podman push --tls-verify=false 127.0.0.1:5000/localimages/ironic-client
24-
podman push --tls-verify=false 127.0.0.1:5000/localimages/ironic:latest
25-
podman push --tls-verify=false 127.0.0.1:5000/localimages/ironic-ipa-downloader
26-
podman push --tls-verify=false 127.0.0.1:5000/localimages/sushy-tools
27-
# Run host services
28-
# Run httpd
29-
podman run -d --net host --name httpd-infra --pod infra-pod -v /opt/metal3-dev-env/ironic:/shared -e PROVISIONING_INTERFACE=provisioning -e LISTEN_ALL_INTERFACES=false --entrypoint /bin/runhttpd 127.0.0.1:5000/localimages/ironic:latest
30-
# Run sushy-tools
31-
mkdir /opt/metal3-dev-env/ironic/virtualbmc
32-
mkdir /opt/metal3-dev-env/ironic/virtualbmc/sushy-tools
33-
chmod -R 755 /opt/metal3-dev-env/ironic/virtualbmc
34-
35-
cat <<EOF > /opt/metal3-dev-env/ironic/virtualbmc/sushy-tools/conf.py
36-
SUSHY_EMULATOR_LIBVIRT_URI = "qemu+ssh://[email protected]/system?&keyfile=/root/ssh/id_rsa_virt_power&no_verify=1&no_tty=1"
15+
16+
# Start podman registry if it's not already running
17+
if ! podman ps | grep -q "$REGISTRY_NAME"; then
18+
podman run -d -p "$REGISTRY_PORT":"$REGISTRY_PORT" --name "$REGISTRY_NAME" docker.io/library/registry:2.7.1
19+
fi
20+
21+
# Pull images, tag to local registry, and push to registry
22+
for NAME in "${IMAGE_NAMES[@]}"; do
23+
# Pull and tag the image
24+
if ! podman images | grep -q "${NAME##*/}"; then
25+
podman pull "$NAME"
26+
podman tag "$NAME" 127.0.0.1:"$REGISTRY_PORT"/localimages/"${NAME##*/}"
27+
fi
28+
29+
# Push the image to the local registry
30+
if ! podman images | grep -q 127.0.0.1:"$REGISTRY_PORT"/localimages; then
31+
podman push --tls-verify=false 127.0.0.1:5000/localimages/"${NAME##*/}"
32+
fi
33+
done
34+
35+
# Define variables for repeated values
36+
IRONIC_IMAGE="127.0.0.1:5000/localimages/ironic:latest"
37+
SUSHY_TOOLS_IMAGE="127.0.0.1:5000/localimages/sushy-tools"
38+
LIBVIRT_URI="qemu+ssh://[email protected]/system?&keyfile=/root/ssh/id_rsa_virt_power&no_verify=1&no_tty=1"
39+
API_URL="http://172.22.0.2:6385"
40+
CALLBACK_URL="http://172.22.0.2:5050/v1/continue"
41+
ADVERTISE_HOST="192.168.111.1"
42+
ADVERTISE_PORT="9999"
43+
44+
# Create directories
45+
DIRECTORIES=(
46+
"/opt/metal3-dev-env/ironic/virtualbmc"
47+
"/opt/metal3-dev-env/ironic/virtualbmc/sushy-tools"
48+
)
49+
for DIR in "${DIRECTORIES[@]}"; do
50+
mkdir -p "$DIR"
51+
chmod -R 755 "$DIR"
52+
done
53+
54+
# Generate SSH key
55+
sudo ssh-keygen -f /root/.ssh/id_rsa_virt_power -P "" -q
56+
sudo cat /root/.ssh/id_rsa_virt_power.pub | sudo tee -a /root/.ssh/authorized_keys
57+
58+
# Run httpd container
59+
podman run -d --net host --name httpd-infra \
60+
--pod infra-pod \
61+
-v /opt/metal3-dev-env/ironic:/shared \
62+
-e PROVISIONING_INTERFACE=provisioning \
63+
-e LISTEN_ALL_INTERFACES=false \
64+
--entrypoint /bin/runhttpd \
65+
"$IRONIC_IMAGE"
66+
# Set configuration options
67+
cat <<EOF >/opt/metal3-dev-env/ironic/virtualbmc/sushy-tools/conf.py
68+
import collections
69+
70+
Host = collections.namedtuple('Host', ['hostname', 'port'])
71+
72+
SUSHY_EMULATOR_LIBVIRT_URI = "${LIBVIRT_URI}"
3773
SUSHY_EMULATOR_IGNORE_BOOT_DEVICE = False
3874
SUSHY_EMULATOR_VMEDIA_VERIFY_SSL = False
3975
SUSHY_EMULATOR_AUTH_FILE = "/root/sushy/htpasswd"
4076
SUSHY_EMULATOR_FAKE_DRIVER = True
77+
78+
FAKE_IPA_API_URL = "${API_URL}"
79+
FAKE_IPA_INSPECTION_CALLBACK_URL = "${CALLBACK_URL}"
80+
FAKE_IPA_ADVERTISE_ADDRESS = Host(hostname="${ADVERTISE_HOST}", port="${ADVERTISE_PORT}")
4181
EOF
42-
cat <<'EOF' > /opt/metal3-dev-env/ironic/virtualbmc/sushy-tools/htpasswd
43-
admin:$2b$12$/dVOBNatORwKpF.ss99KB.vESjfyONOxyH.UgRwNyZi1Xs/W2pGVS
82+
83+
# Create an htpasswd file
84+
cat <<EOF >/opt/metal3-dev-env/ironic/virtualbmc/sushy-tools/htpasswd
85+
admin:$2b${12}$/dVOBNatORwKpF.ss99KB.vESjfyONOxyH.UgRwNyZi1Xs/W2pGVS
4486
EOF
45-
ssh-keygen -f /root/.ssh/id_rsa_virt_power -P ""
46-
/root/.ssh/id_rsa_virt_power.pub | tee -a /root/.ssh/authorized_keys
47-
podman run -d --net host --name sushy-tools --pod infra-pod -v /opt/metal3-dev-env/ironic/virtualbmc/sushy-tools:/root/sushy -v "/root/.ssh":/root/ssh 127.0.0.1:5000/localimages/sushy-tools
87+
88+
# Generate ssh keys to use for virtual power and add them to authorized_keys
89+
ssh-keygen -f /root/.ssh/id_rsa_virt_power -P "" -q
90+
cat /root/.ssh/id_rsa_virt_power.pub >>/root/.ssh/authorized_keys
91+
92+
# Create and start a container for sushy-tools
93+
podman run -d --net host --name sushy-tools --pod infra-pod \
94+
-v /opt/metal3-dev-env/ironic/virtualbmc/sushy-tools:/root/sushy \
95+
-v /root/.ssh:/root/ssh \
96+
"${SUSHY_TOOLS_IMAGE}"
Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
set -e
2+
3+
# Start Minikube with insecure registry flag
24
minikube start --insecure-registry 172.22.0.1:5000
5+
6+
# SSH into the Minikube VM and execute the following commands
37
sudo su -l -c "minikube ssh sudo brctl addbr ironicendpoint" "${USER}"
48
sudo su -l -c "minikube ssh sudo ip link set ironicendpoint up" "${USER}"
59
sudo su -l -c "minikube ssh sudo brctl addif ironicendpoint eth2" "${USER}"
610
sudo su -l -c "minikube ssh sudo ip addr add 172.22.0.2/24 dev ironicendpoint" "${USER}"
711

8-
# Firewall
9-
for i in 8000 80 9999 6385 5050 6180 53 5000; do sudo firewall-cmd --zone=public --add-port=${i}/tcp; done
10-
for i in 69 547 546 68 67 5353 6230 6231 6232 6233 6234 6235; do sudo firewall-cmd --zone=libvirt --add-port=${i}/udp; done
12+
# Firewall rules
13+
for i in 8000 80 9999 6385 5050 6180 53 5000; do sudo firewall-cmd --zone=public --add-port=${i}/tcp; done
14+
for i in 69 547 546 68 67 5353 6230 6231 6232 6233 6234 6235; do sudo firewall-cmd --zone=libvirt --add-port=${i}/udp; done
1115
sudo firewall-cmd --zone=libvirt --add-port=8000/tcp
Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,36 @@
1+
#!/bin/bash
12

3+
# Delete network connections
4+
sudo nmcli con delete baremetal provisioning
25

3-
sudo nmcli con delete baremetal
4-
sudo nmcli con delete provisioning
5-
sudo nmcli con delete provisioning
6+
# Disable and delete bridge interfaces
7+
for iface in baremetal provisioning; do
8+
if ip link show $iface &>/dev/null; then
9+
sudo ip link set $iface down
10+
sudo brctl delbr $iface
11+
fi
12+
done
613

7-
sudo virsh net-undefine provisioning
8-
sudo virsh net-undefine baremetal
14+
# Delete libvirt networks
15+
for net in provisioning baremetal; do
16+
if sudo virsh net-info $net &>/dev/null; then
17+
sudo virsh net-destroy $net
18+
sudo virsh net-undefine $net
19+
fi
20+
done
921

10-
sudo virsh net-destroy baremetal
11-
sudo virsh net-destroy provisioning
12-
13-
sudo ip link set provisioning down
14-
sudo ip link set provisioning down
15-
sudo ip link set baremetal down
16-
sudo brctl delbr baremetal
17-
sudo brctl delbr provisioning
18-
sudo brctl delbr provisioning
19-
#sudo rm -rf /opt/metal3-dev-env
20-
sudo rm -rf /opt/metal3-dev-env/ironic/virtualbmc/
21-
sudo podman stop -a
22-
sudo podman rmi "$(sudo podman images -qa)" -f
22+
# Delete directories
23+
sudo rm -rf /opt/metal3-dev-env
24+
sudo rm -rf "$(dirname "$0")/_clouds_yaml"
2325

26+
# Stop and delete minikube cluster
2427
minikube stop
2528
minikube delete --all --purge
29+
30+
# Stop and delete containers
31+
containers=("sushy-tools" "ironic-ipa-downloader" "ironic" "keepalived" "registry" "ironic-client")
32+
for container in "${containers[@]}"; do
33+
echo "Deleting the container: $container"
34+
sudo podman stop "$container" &>/dev/null
35+
sudo podman rm "$container" &>/dev/null
36+
done

0 commit comments

Comments
 (0)