Skip to content

Instantly share code, notes, and snippets.

@kevydotvinu
Last active June 9, 2022 08:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kevydotvinu/d8442779a1fd6de82fbc81c77047bd41 to your computer and use it in GitHub Desktop.
Save kevydotvinu/d8442779a1fd6de82fbc81c77047bd41 to your computer and use it in GitHub Desktop.
Butane config for github.com/kevydotvinu/ocp-ipi-baremetal-lab
variant: fcos
version: 1.0.0
passwd:
users:
- name: core
gecos: CoreOS Admin
groups:
- sudo
- wheel
- adm
- systemd-journal
- name: kni
gecos: ocp-ipi-baremtal-lab user
groups:
- sudo
- wheel
- adm
- systemd-journal
password_hash: $y$j9T$rVVNGAWx1YhOFEOQQdk5v1$CXiP2XQROTh/5e4ZB66WaYafvNkfO/ZqVjaXYwx5Fo2
systemd:
units:
- name: systemd-resolved.service
enabled: false
mask: true
- name: libvirtd-tcp.socket
enabled: true
- name: host-configure.service
enabled: true
contents: |
[Unit]
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
ExecStart=/opt/ocp-ipi-baremetal-lab/host/configure.sh
RemainAfterExit=yes
[Install]
WantedBy=basic.target
- name: master0.service
enabled: true
contents: |
[Unit]
Wants=libvirtd-tcp.socket
After=libvirtd-tcp.socket
Requires=libvirtd-tcp.socket
ConditionPathExists=!/opt/ocp-ipi-baremetal-lab/master0.done
[Service]
Timeout=0
Type=oneshot
ExecStart=/opt/ocp-ipi-baremetal-lab/libvirt/create-vm.sh master0 52:54:00:11:22:b1 52:54:00:11:22:a1
ExecStartPost=/usr/bin/touch /opt/ocp-ipi-baremetal-lab/master0.done
RemainAfterExit=yes
[Install]
WantedBy=basic.target
- name: master1.service
enabled: true
contents: |
[Unit]
Wants=libvirtd-tcp.socket
After=libvirtd-tcp.socket
Requires=libvirtd-tcp.socket
ConditionPathExists=!/opt/ocp-ipi-baremetal-lab/master1.done
[Service]
Timeout=0
Type=oneshot
ExecStart=/opt/ocp-ipi-baremetal-lab/libvirt/create-vm.sh master1 52:54:00:11:22:b2 52:54:00:11:22:a2
ExecStartPost=/usr/bin/touch /opt/ocp-ipi-baremetal-lab/master1.done
RemainAfterExit=yes
[Install]
WantedBy=basic.target
- name: master2.service
enabled: true
contents: |
[Unit]
Wants=libvirtd-tcp.socket
After=libvirtd-tcp.socket
Requires=libvirtd-tcp.socket
ConditionPathExists=!/opt/ocp-ipi-baremetal-lab/master2.done
[Service]
Timeout=0
Type=oneshot
ExecStart=/opt/ocp-ipi-baremetal-lab/libvirt/create-vm.sh master2 52:54:00:11:22:b3 52:54:00:11:22:a3
ExecStartPost=/usr/bin/touch /opt/ocp-ipi-baremetal-lab/master2.done
RemainAfterExit=yes
[Install]
WantedBy=basic.target
- name: worker0.service
enabled: true
contents: |
[Unit]
Wants=libvirtd-tcp.socket
After=libvirtd-tcp.socket
Requires=libvirtd-tcp.socket
ConditionPathExists=!/opt/ocp-ipi-baremetal-lab/worker0.done
[Service]
Timeout=0
Type=oneshot
ExecStart=/opt/ocp-ipi-baremetal-lab/libvirt/create-vm.sh worker0 52:54:00:11:22:b4 52:54:00:11:22:a4
ExecStartPost=/usr/bin/touch /opt/ocp-ipi-baremetal-lab/worker0.done
RemainAfterExit=yes
[Install]
WantedBy=basic.target
- name: worker1.service
enabled: true
contents: |
[Unit]
Wants=libvirtd-tcp.socket
After=libvirtd-tcp.socket
Requires=libvirtd-tcp.socket
ConditionPathExists=!/opt/ocp-ipi-baremetal-lab/worker1.done
[Service]
Timeout=0
Type=oneshot
ExecStart=/opt/ocp-ipi-baremetal-lab/libvirt/create-vm.sh worker1 52:54:00:11:22:b5 52:54:00:11:22:a5
ExecStartPost=/usr/bin/touch /opt/ocp-ipi-baremetal-lab/worker1.done
RemainAfterExit=yes
[Install]
WantedBy=basic.target
- name: webserver.service
enabled: true
contents: |
[Unit]
Description=Webserver for ocp-ipi-baremetal-lab
Wants=network-online.target
After=network-online.target
RequiresMountsFor=%t/containers
[Service]
Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure
TimeoutStopSec=70
ExecStartPre=/bin/rm -f %t/%n.ctr-id
ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \
--rm \
--sdnotify=conmon \
--replace \
--detach \
--net host \
--name webserver \
-v /home/kni/ocp-ipi-baremetal-lab/rhcos_image_cache:/var/www/html quay.io/centos7/httpd-24-centos7:latest
ExecStop=/usr/bin/podman stop --ignore --cidfile=%t/%n.ctr-id
ExecStopPost=/usr/bin/podman rm -f --ignore --cidfile=%t/%n.ctr-id
Type=notify
NotifyAccess=all
[Install]
WantedBy=default.target
- name: vbmc.service
enabled: true
contents: |
[Unit]
Description=Podman container-e6d443b2ffab510db1684ca2833592e6f6de26cdb58a625eb0bb739e2e0b3be9.service
Documentation=man:podman-generate-systemd(1)
Wants=network-online.target
After=network-online.target
RequiresMountsFor=%t/containers
[Service]
Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=always
TimeoutStopSec=70
TimeoutStartSec=600
ExecStartPre=/usr/bin/rm -f %t/%n.ctr-id
ExecStartPre=/usr/bin/podman build /opt/ocp-ipi-baremetal-lab/vbmc --net host -t localhost/vbmc
ExecStart=/usr/bin/podman run \
--cidfile=%t/%n.ctr-id \
--cgroups=no-conmon \
--rm \
--sdnotify=conmon \
--replace \
-d \
-ti \
--name vbmc \
--net host \
localhost/vbmc
ExecStop=/usr/bin/podman stop --ignore --cidfile=%t/%n.ctr-id
ExecStopPost=/usr/bin/podman rm -f --ignore --cidfile=%t/%n.ctr-id
Type=notify
NotifyAccess=all
[Install]
WantedBy=default.target
- name: dhcp.service
enabled: true
contents: |
[Unit]
Description=Dnsmasq for ocp-ipi-baremetal-lab
Wants=network-online.target
After=network-online.target
RequiresMountsFor=%t/containers
[Service]
Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=always
TimeoutStartSec=180
TimeoutStopSec=70
ExecStartPre=-/usr/bin/rm -f %t/%n.ctr-id
ExecStartPre=/usr/bin/podman build --net host --tag localhost/dnsmasq /opt/ocp-ipi-baremetal-lab/dhcp
ExecStart=/usr/bin/podman run --cidfile=%t/%n.ctr-id --cgroups=no-conmon --rm --sdnotify=conmon --name dhcp -d --net host --cap-add NET_ADMIN,NET_RAW localhost/dnsmasq
ExecStop=/usr/bin/podman stop --ignore --cidfile=%t/%n.ctr-id
ExecStopPost=/usr/bin/podman rm -f --ignore --cidfile=%t/%n.ctr-id
Type=notify
NotifyAccess=all
[Install]
WantedBy=default.target
- name: broadcast.service
enabled: true
contents: |
[Unit]
Description=Check containers status
After=selinux-configure.service
[Service]
Timeout=0
Type=oneshot
ExecStart=/opt/ocp-ipi-baremetal-lab/host/broadcast.sh
RemainAfterExit=yes
[Install]
WantedBy=basic.target
storage:
directories:
- path: /home/kni/ocp-ipi-baremetal-lab
mode: 0755
overwrite: true
user:
name: kni
group:
name: kni
- path: /home/kni/ocp-ipi-baremetal-lab/rhcos_image_cache
mode: 0755
overwrite: true
user:
name: kni
group:
name: kni
files:
- path: /opt/ocp-ipi-baremetal-lab/vbmc/Dockerfile
mode: 0644
overwrite: true
contents:
inline: |
FROM fedora
MAINTAINER "Vinu K" <vkochuku@redhat.com>
ADD run.sh /run.sh
ADD .vbmc /home/vbmc/.vbmc
RUN yum install -y procps python3-pip libvirt-devel python3-devel gcc && \
yum clean all && \
rm -rf /var/cache/yum && \
useradd -u 1001 -m -d /home/vbmc -s /bin/bash vbmc && \
chown vbmc:vbmc -R /home/vbmc
USER vbmc
RUN pip3 install --user virtualbmc
ENTRYPOINT ["bash", "-c", "/run.sh"]
- path: /opt/ocp-ipi-baremetal-lab/vbmc/run.sh
mode: 0755
overwrite: true
contents:
inline: |
set -x
rm -fv /home/vbmc/.vbmc/master.pid
/home/vbmc/.local/bin/vbmcd --foreground
- path: /opt/ocp-ipi-baremetal-lab/vbmc/.vbmc/master0/config
mode: 0644
user:
id: 1001
group:
id: 1001
overwrite: true
contents:
inline: |
[VirtualBMC]
username = admin
password = password
address = 192.168.123.1
port = 6230
domain_name = master0
libvirt_uri = qemu+tcp://localhost/system
active = True
- path: /opt/ocp-ipi-baremetal-lab/vbmc/.vbmc/master1/config
mode: 0644
user:
id: 1001
group:
id: 1001
overwrite: true
contents:
inline: |
[VirtualBMC]
username = admin
password = password
address = 192.168.123.1
port = 6231
domain_name = master1
libvirt_uri = qemu+tcp://localhost/system
active = True
- path: /opt/ocp-ipi-baremetal-lab/vbmc/.vbmc/master2/config
mode: 0644
user:
id: 1001
group:
id: 1001
overwrite: true
contents:
inline: |
[VirtualBMC]
username = admin
password = password
address = 192.168.123.1
port = 6232
domain_name = master2
libvirt_uri = qemu+tcp://localhost/system
active = True
- path: /opt/ocp-ipi-baremetal-lab/vbmc/.vbmc/worker0/config
mode: 0644
user:
id: 1001
group:
id: 1001
overwrite: true
contents:
inline: |
[VirtualBMC]
username = admin
password = password
address = 192.168.123.1
port = 6233
domain_name = worker0
libvirt_uri = qemu+tcp://localhost/system
active = True
- path: /opt/ocp-ipi-baremetal-lab/vbmc/.vbmc/worker1/config
mode: 0644
user:
id: 1001
group:
id: 1001
overwrite: true
contents:
inline: |
[VirtualBMC]
username = admin
password = password
address = 192.168.123.1
port = 6234
domain_name = worker1
libvirt_uri = qemu+tcp://localhost/system
active = True
- path: /etc/resolv.conf
mode: 0644
overwrite: true
contents:
inline: ""
- path: /etc/sudoers.d/kni
mode: 0644
overwrite: true
contents:
inline: |
kni ALL=(ALL) NOPASSWD: ALL
- path: /etc/libvirt/libvirtd.conf
mode: 0644
overwrite: true
contents:
inline: |
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
tls_port = "16514"
auth_tcp = "none"
- path: /etc/libvirt/libvirt.conf
mode: 0644
overwrite: true
contents:
inline: |
uri_default = "qemu+tcp://localhost/system"
- path: /etc/sysctl.d/99-sysctl.conf
mode: 0644
overwrite: true
contents:
inline: |
net.ipv4.ip_forward = 1
- path: /etc/ssh/sshd_config.d/20-enable-passwords.conf
mode: 0644
overwrite: true
contents:
inline: |
PasswordAuthentication yes
- path: /opt/ocp-ipi-baremetal-lab/host/configure.sh
mode: 0755
contents:
inline: |
#!/bin/sh
/usr/sbin/iptables -t nat -I POSTROUTING -s 192.168.123.0/24 ! -d 192.168.123.0/24 -j MASQUERADE
/usr/sbin/iptables -t nat -I PREROUTING -p tcp -i $(/usr/sbin/ip r | grep default | awk '{print $5}') --dport 443 -j DNAT --to-destination 192.168.123.89:443
/usr/sbin/iptables -t nat -I PREROUTING -p tcp -i $(/usr/sbin/ip r | grep default | awk '{print $5}') --dport 6443 -j DNAT --to-destination 192.168.123.89:6443
systemctl start libvirtd-tcp.socket
- path: /etc/NetworkManager/system-connections/ens3.nmconnection
mode: 0600
overwrite: true
user:
name: root
contents:
inline: |
[connection]
id=ens3
type=ethernet
autoconnect=yes
interface-name=ens3
[ipv4]
method=auto
[ipv6]
method=disabled
- path: /etc/NetworkManager/system-connections/baremetal-dummy.nmconnection
mode: 0600
overwrite: true
user:
name: root
contents:
inline: |
[connection]
id=baremetal-dummy
type=dummy
interface-name=baremetal-dummy
autoconnect=yes
master=baremetal
slave-type=bridge
[ipv4]
method=link-local
[ipv6]
method=disabled
- path: /etc/NetworkManager/system-connections/baremetal.nmconnection
mode: 0600
overwrite: true
user:
name: root
contents:
inline: |
[connection]
id=baremetal
type=bridge
autoconnect=yes
interface-name=baremetal
[ipv4]
method=manual
addresses=192.168.123.1
[ipv6]
method=disabled
[bridge]
mac-address=52:54:00:11:22:a0
interface-name=baremetal
- path: /etc/NetworkManager/system-connections/baremetal-slave.nmconnection
mode: 0600
overwrite: true
user:
name: root
contents:
inline: |
[connection]
id=baremetal-slave
type=ethernet
interface-name=baremetal-dummy
master=baremetal
autoconnect=yes
slave-type=bridge
- path: /etc/NetworkManager/system-connections/provision-dummy.nmconnection
mode: 0600
overwrite: true
user:
name: root
contents:
inline: |
[connection]
id=provision-dummy
type=dummy
interface-name=provision-dummy
autoconnect=yes
master=provisioning
slave-type=bridge
[ipv4]
method=link-local
[ipv6]
method=disabled
- path: /etc/NetworkManager/system-connections/provisioning.nmconnection
mode: 0600
overwrite: true
user:
name: root
contents:
inline: |
[connection]
id=provisioning
type=bridge
interface-name=provisioning
autoconnect=yes
[ipv4]
method=manual
addresses=172.22.0.254/24
[ipv6]
method=disabled
[bridge]
mac-address=52:54:00:11:22:b0
interface-name=provisioning
- path: /etc/NetworkManager/system-connections/provisioning-slave.nmconnection
mode: 0600
overwrite: true
user:
name: root
contents:
inline: |
[connection]
id=provisioning-slave
type=ethernet
interface-name=provision-dummy
master=provisioning
autoconnect=yes
slave-type=bridge
- path: /etc/NetworkManager/conf.d/ocp-ipi-baremetal-lab.conf
mode: 0644
overwrite: true
user:
name: root
contents:
inline: |
[main]
plugins=keyfile
dns=dnsmasq
- path: /etc/NetworkManager/dnsmasq.d/ocp-ipi-baremetal-lab.conf
mode: 0644
overwrite: true
user:
name: root
contents:
inline: |
address=/.apps.ocp.example.local/192.168.123.89
addn-hosts=/etc/hosts
- path: /etc/hosts
mode: 0644
overwrite: true
user:
name: root
contents:
inline: |
127.0.0.1 localhost localhost.localdomain ocp-ipi-baremetal-lab.ocp.example.local
192.168.123.88 api.ocp.example.local
192.168.123.90 bootstrap.ocp.example.local
192.168.123.91 master0.ocp.example.local
192.168.123.92 master1.ocp.example.local
192.168.123.93 master2.ocp.example.local
192.168.123.94 worker0.ocp.example.local
192.168.123.95 worker1.ocp.example.local
192.168.123.1 ocp-ipi-baremetal-lab.ocp.example.local lb.ocp.example.local mirror.ocp.example.local proxy.ocp.example.local
- path: /etc/zincati/config.d/90-disable-auto-updates.toml
contents:
inline: |
[updates]
enabled = false
- path: /opt/ocp-ipi-baremetal-lab/libvirt/create-vm.sh
mode: 0755
overwrite: true
user:
name: kni
group:
name: kni
contents:
inline: |
#!/bin/bash
# Create node for ocp-ipi-baremetal-lab
set -euxo pipefail
VM_NAME=$1
MAC1=$2
MAC2=$3
VM_DIR=/opt/ocp-ipi-baremetal-lab/libvirt
VM_DISK=$VM_DIR/$VM_NAME/$VM_NAME.img
VCPU=4
MEMORY=16384
NETWORK1=bridge=provisioning,mac=$MAC1
NETWORK2=bridge=baremetal,mac=$MAC2
if virsh list | grep $VM_NAME 2>&1>/dev/null; then virsh destroy $VM_NAME 2>/dev/null; virsh undefine $VM_NAME 2>/dev/null; fi
if virsh list --all | grep $VM_NAME 2>&1>/dev/null; then virsh undefine $VM_NAME 2>/dev/null; fi
if [ ! -f $VM_DISK ] ; then mkdir -p $VM_DIR/$VM_NAME; qemu-img create $VM_DISK 60G; fi
virsh define <(virt-install --name $VM_NAME \
--os-variant fedora-coreos-stable \
--vcpus $VCPU \
--memory $MEMORY \
--disk $VM_DISK \
--network $NETWORK1 \
--network $NETWORK2 \
--pxe \
--boot network,hd \
--graphics spice,listen=0.0.0.0 \
--video virtio \
--channel spicevmc \
--console pty,target.type=virtio \
--serial pty \
--noautoconsole \
--print-xml 2)
touch /opt/ocp-ipi-baremetal-lab/$VM_NAME.done
- path: /opt/ocp-ipi-baremetal-lab/dhcp/Containerfile
mode: 0644
overwrite: true
contents:
inline: |
FROM fedora
MAINTAINER "Vinu K" <vkochuku@redhat.com>
RUN yum install -y dnsmasq
ADD dnsmasq.conf /dnsmasq.conf
ENTRYPOINT ["dnsmasq"]
CMD ["-C", "/dnsmasq.conf"]
- path: /opt/ocp-ipi-baremetal-lab/dhcp/dnsmasq.conf
mode: 0644
overwrite: true
contents:
inline: |
no-daemon
interface=baremetal
dhcp-range=192.168.123.2,192.168.123.254,255.255.255.0
except-interface=lo
bind-interfaces
log-dhcp
dhcp-authoritative
log-async
dhcp-host=52:54:00:11:22:a1,master0.ocp.example.local,192.168.123.91
dhcp-host=52:54:00:11:22:a2,master1.ocp.example.local,192.168.123.92
dhcp-host=52:54:00:11:22:a3,master2.ocp.example.local,192.168.123.93
dhcp-host=52:54:00:11:22:a4,worker0.ocp.example.local,192.168.123.94
dhcp-host=52:54:00:11:22:a5,worker1.ocp.example.local,192.168.123.95
- path: /home/kni/Makefile
mode: 0755
overwrite: true
user:
name: kni
group:
name: kni
contents:
inline: |
RELEASE ?= "stable-4.10"
SCRIPT_DIR = $(shell cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )
CONTAINERS = $(shell sudo podman ps --format {{.Names}} | sort | xargs)
check-env:
ifndef OCM_TOKEN
$(error OCM_TOKEN is undefined | Get it from https://cloud.redhat.com/openshift/token)
endif
check-containers:
ifneq ($(CONTAINERS),dhcp vbmc webserve)
$(error The containerized services (dhcp vbmc webserver) are not ready. Check with 'sudo podman ps' and wait for a while to retry)
endif
.PHONY: ssh-pullsecret
ssh-pullsecret: check-env
@echo "Generating SSH keys and pullsecret ..."
ocp-ipi-baremetal-lab/ssh-pullsecret.sh $(OCM_TOKEN)
.PHONY: install-config
install-config: /home/kni/ocp-ipi-baremetal-lab/pullsecret /home/kni/ocp-ipi-baremetal-lab/id_ed25519.pub
@echo "Generating install-config.yaml file ..."
ocp-ipi-baremetal-lab/install-config.sh $(RELEASE)
.PHONY: cluster
cluster: $(SCRIPT_DIR)/ocp-ipi-baremetal-lab/clusterconfigs/install-config.yaml check-containers
@echo "Generating manifest ..."
/usr/local/bin/openshift-baremetal-install --log-level=debug --dir=$(SCRIPT_DIR)/ocp-ipi-baremetal-lab/clusterconfigs create manifests
@echo "Creating cluster ..."
/usr/local/bin/openshift-baremetal-install --log-level=debug --dir=$(SCRIPT_DIR)/ocp-ipi-baremetal-lab/clusterconfigs create cluster
.PHONY: clean
clean:
@echo "Removing old bootstrap resources ..."
-$(SCRIPT_DIR)/ocp-ipi-baremetal-lab/clean-bootstrap.sh
@echo "Removing installation directory ..."
-rm -rfv $(SCRIPT_DIR)/ocp-ipi-baremetal-lab/clusterconfigs
@echo "Powering off master nodes ..."
-for i in master0 master1 master2; do sudo virsh destroy $$i; done
@echo "!!! IGNORE THE ERRORS !!!"
.PHONY: destroy
destroy:
@echo "Destroying bootrap ..."
-openshift-baremetal-install destroy --log-level=debug --dir=/home/kni/ocp-ipi-baremetal-lab/clusterconfigs bootstrap
@echo "Destroying cluster ..."
-openshift-baremetal-install destroy --log-level=debug --dir=/home/kni/ocp-ipi-baremetal-lab/clusterconfigs cluster
@echo "Removing installation directory ..."
-rm -rfv $(SCRIPT_DIR)/ocp-ipi-baremetal-lab/clusterconfigs
@echo "Powering off master nodes ..."
-for i in master0 master1 master2; do sudo virsh destroy $$i; done
@echo "!!! IGNORE THE ERRORS !!!"
.PHONY: help
help:
@echo "Usage: oibl [SUBCOMMAND] [VARIABLE_NAME]=<variable>"
@echo ""
@echo "Subcommands:"
@echo " ssh-pullsecret OCM_TOKEN=<OCM_TOKEN> Generate SSH keys and download pullsecret file."
@echo " install-config Generate install-config.yaml file."
@echo " cluster Create an OpenShift cluster."
@echo " destroy Destroy installed cluster."
@echo " clean Clean old cluster resources."
@echo ""
@echo "Example:"
@echo " oibl cluster LOGLEVEL=debug"
@echo ""
@echo "Variables:"
@echo " OCM_TOKEN (token from https://cloud.redhat.com/openshift/token)"
@echo " RELEASE (stable-4.10, latest-4.9, 4.9.0, etc)"
@echo " LOGLEVEL (debug, info, warn, error)"
- path: /home/kni/ocp-ipi-baremetal-lab/clean-bootstrap.sh
mode: 0755
overwrite: true
user:
name: kni
group:
name: kni
contents:
inline: |
#!/bin/bash
#
# Remove old bootstrap resources if any are left over from a previous deployment attempt
set -euxo pipefail
BOOTSTRAP=$(virsh list --all | grep bootstrap | awk '{print $2}')
if [[ -z ${BOOTSTRAP} ]]; then
echo "No old bootstrap resources"
else
virsh destroy ${BOOTSTRAP}
virsh undefine ${BOOTSTRAP}
virsh pool-start ${BOOTSTRAP}
virsh vol-delete ${BOOTSTRAP} --pool ${BOOTSTRAP}
virsh vol-delete ${BOOTSTRAP}-base --pool ${BOOTSTRAP}
virsh vol-delete ${BOOTSTRAP}.ign --pool ${BOOTSTRAP}
virsh pool-destroy ${BOOTSTRAP}
virsh pool-delete ${BOOTSTRAP}
virsh pool-undefine ${BOOTSTRAP}
fi
- path: /home/kni/ocp-ipi-baremetal-lab/ssh-pullsecret.sh
mode: 0755
overwrite: true
user:
name: kni
group:
name: kni
contents:
inline: |
#!/bin/bash
# Download pull secret using OpenShift Cluster Manager API Token
set -euxo pipefail
function USAGE {
echo "Usage: $0 '<OCM API Token>'"
echo "You need to authenticate using a Bearer token, which you can get from the link: https://cloud.redhat.com/openshift/token"
exit 1
}
function DOWNLOAD_PULLSECRET {
export BEARER=$(curl \
--silent \
--data-urlencode "grant_type=refresh_token" \
--data-urlencode "client_id=cloud-services" \
--data-urlencode "refresh_token=${OCM_API_TOKEN}" \
https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token | \
jq -r .access_token)
curl -s -X POST https://api.openshift.com/api/accounts_mgmt/v1/access_token --header "Content-Type:application/json" --header "Authorization: Bearer $BEARER" > ${SCRIPT_DIR}/pullsecret
}
function SSH_KEY {
rm -fv ${SCRIPT_DIR}/id_ed25519 ${SCRIPT_DIR}/id_ed25519.pub
ssh-keygen -q -t ed25519 -N '' -f ${SCRIPT_DIR}/id_ed25519
}
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )"
ARG_COUNT=${#}
OCM_API_TOKEN=${1}
ARG_SIZE=${#OCM_API_TOKEN}
if [ ${ARG_COUNT} -eq 1 ] && [ ${ARG_SIZE} -gt 50 ]; then
( DOWNLOAD_PULLSECRET 1>/dev/null && echo "✔ Pull secret downloaded" ) || echo "✗ Error: Pull secret download failed"
( SSH_KEY && echo "✔ SSH key generated" ) || echo "✗ Error: SSH key generation failed"
else
USAGE
fi
- path: /home/kni/ocp-ipi-baremetal-lab/install-config.sh
mode: 0755
overwrite: true
user:
name: kni
group:
name: kni
contents:
inline: |
set -euxo pipefail
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )"
export VERSION=${1}
export RELEASE_IMAGE=$(curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/release.txt | grep 'Pull From: quay.io' | awk -F ' ' '{print $3}')
export cmd=openshift-baremetal-install
export pullsecret_file=${SCRIPT_DIR}/pullsecret
export extract_dir=${SCRIPT_DIR}
curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/openshift-client-linux.tar.gz | tar zxvf - -C ${SCRIPT_DIR} oc
sudo mv ${SCRIPT_DIR}/oc /usr/local/bin
/usr/local/bin/oc adm release extract --registry-config "${pullsecret_file}" --command=$cmd --to "${extract_dir}" ${RELEASE_IMAGE}
sudo mv ${SCRIPT_DIR}/openshift-baremetal-install /usr/local/bin
export RHCOS_QEMU_URI=$(/usr/local/bin/openshift-baremetal-install coreos print-stream-json | jq -r --arg ARCH "$(arch)" '.architectures[$ARCH].artifacts.qemu.formats["qcow2.gz"].disk.location')
export RHCOS_QEMU_NAME=${RHCOS_QEMU_URI##*/}
export RHCOS_QEMU_UNCOMPRESSED_SHA256=$(/usr/local/bin/openshift-baremetal-install coreos print-stream-json | jq -r --arg ARCH "$(arch)" '.architectures[$ARCH].artifacts.qemu.formats["qcow2.gz"].disk["uncompressed-sha256"]')
curl -L ${RHCOS_QEMU_URI} -o /home/kni/ocp-ipi-baremetal-lab/rhcos_image_cache/${RHCOS_QEMU_NAME}
export BAREMETAL_IP=$(ip addr show dev baremetal | awk '/inet /{print $2}' | cut -d"/" -f1)
export BOOTSTRAP_OS_IMAGE="http://${BAREMETAL_IP}:8080/${RHCOS_QEMU_NAME}?sha256=${RHCOS_QEMU_UNCOMPRESSED_SHA256}"
echo " bootstrapOSImage=${BOOTSTRAP_OS_IMAGE}"
cat << EOF > ${SCRIPT_DIR}/install-config.yaml
apiVersion: v1
baseDomain: example.local
metadata:
name: ocp
networking:
machineNetwork:
- cidr: 192.168.123.0/24
networkType: OVNKubernetes
compute:
- name: worker
replicas: 0
controlPlane:
name: master
replicas: 3
platform:
baremetal: {}
platform:
baremetal:
libvirtURI: qemu+tcp://localhost/system
bootstrapOSImage: ${BOOTSTRAP_OS_IMAGE}
apiVIP: 192.168.123.88
ingressVIP: 192.168.123.89
provisioningNetworkCIDR: 172.22.0.0/24
hosts:
- name: master0
role: master
bmc:
address: ipmi://192.168.123.1:6230
username: admin
password: password
bootMACAddress: 52:54:00:11:22:b1
hardwareProfile: libvirt
rootDeviceHints:
deviceName: "/dev/vda"
- name: master1
role: master
bmc:
address: ipmi://192.168.123.1:6231
username: admin
password: password
bootMACAddress: 52:54:00:11:22:b2
hardwareProfile: libvirt
rootDeviceHints:
deviceName: "/dev/vda"
- name: master2
role: master
bmc:
address: ipmi://192.168.123.1:6232
username: admin
password: password
bootMACAddress: 52:54:00:11:22:b3
hardwareProfile: libvirt
rootDeviceHints:
deviceName: "/dev/vda"
pullSecret: '$(cat ${SCRIPT_DIR}/pullsecret)'
sshKey: '$(cat ${SCRIPT_DIR}/id_ed25519.pub)'
EOF
mkdir -p ${SCRIPT_DIR}/clusterconfigs
cp -v ${SCRIPT_DIR}/install-config.yaml ${SCRIPT_DIR}/clusterconfigs/
- path: /opt/ocp-ipi-baremetal-lab/host/broadcast.sh
mode: 0755
overwrite: true
contents:
inline: |
#!/bin/sh
while true; do if [[ $(podman ps --format json | jq -r '.[] | .Names | .[]' | wc -l) == "3" ]]; then echo -e "The containerized services ($(podman ps --format json | jq -r '.[] | .Names | .[]' | xargs)) are ready.\nYou can start the OpenShift baremetal IPI installation now." | wall -n; break; fi; done
- path: /home/kni/.bashrc
append:
- inline: |
alias oibl='make'
export KUBECONFIG=/home/kni/ocp-ipi-baremetal-lab/clusterconfigs/auth/kubeconfig
sed -i -e 's/ /\t/g' /home/kni/Makefile
{
"ignition": {
"version": "3.0.0"
},
"passwd": {
"users": [
{
"gecos": "CoreOS Admin",
"groups": [
"sudo",
"wheel",
"adm",
"systemd-journal"
],
"name": "core"
},
{
"gecos": "ocp-ipi-baremtal-lab user",
"groups": [
"sudo",
"wheel",
"adm",
"systemd-journal"
],
"name": "kni",
"passwordHash": "$y$j9T$rVVNGAWx1YhOFEOQQdk5v1$CXiP2XQROTh/5e4ZB66WaYafvNkfO/ZqVjaXYwx5Fo2"
}
]
},
"storage": {
"directories": [
{
"group": {
"name": "kni"
},
"overwrite": true,
"path": "/home/kni/ocp-ipi-baremetal-lab",
"user": {
"name": "kni"
},
"mode": 493
},
{
"group": {
"name": "kni"
},
"overwrite": true,
"path": "/home/kni/ocp-ipi-baremetal-lab/rhcos_image_cache",
"user": {
"name": "kni"
},
"mode": 493
}
],
"files": [
{
"overwrite": true,
"path": "/opt/ocp-ipi-baremetal-lab/vbmc/Dockerfile",
"contents": {
"source": "data:,FROM%20fedora%0AMAINTAINER%20%22Vinu%20K%22%20%3Cvkochuku%40redhat.com%3E%0AADD%20run.sh%20%2Frun.sh%0AADD%20.vbmc%20%2Fhome%2Fvbmc%2F.vbmc%0ARUN%20yum%20install%20-y%20procps%20python3-pip%20libvirt-devel%20python3-devel%20gcc%20%26%26%20%5C%0A%20%20%20%20yum%20clean%20all%20%26%26%20%5C%0A%20%20%20%20rm%20-rf%20%2Fvar%2Fcache%2Fyum%20%26%26%20%5C%0A%20%20%20%20useradd%20-u%201001%20-m%20-d%20%2Fhome%2Fvbmc%20-s%20%2Fbin%2Fbash%20vbmc%20%26%26%20%5C%0A%20%20%20%20chown%20vbmc%3Avbmc%20-R%20%2Fhome%2Fvbmc%0AUSER%20vbmc%0ARUN%20pip3%20install%20--user%20virtualbmc%0AENTRYPOINT%20%5B%22bash%22%2C%20%22-c%22%2C%20%22%2Frun.sh%22%5D%0A"
},
"mode": 420
},
{
"overwrite": true,
"path": "/opt/ocp-ipi-baremetal-lab/vbmc/run.sh",
"contents": {
"source": "data:,set%20-x%0Arm%20-fv%20%2Fhome%2Fvbmc%2F.vbmc%2Fmaster.pid%0A%2Fhome%2Fvbmc%2F.local%2Fbin%2Fvbmcd%20--foreground%0A"
},
"mode": 493
},
{
"group": {
"id": 1001
},
"overwrite": true,
"path": "/opt/ocp-ipi-baremetal-lab/vbmc/.vbmc/master0/config",
"user": {
"id": 1001
},
"contents": {
"source": "data:,%5BVirtualBMC%5D%0Ausername%20%3D%20admin%0Apassword%20%3D%20password%0Aaddress%20%3D%20192.168.123.1%0Aport%20%3D%206230%0Adomain_name%20%3D%20master0%0Alibvirt_uri%20%3D%20qemu%2Btcp%3A%2F%2Flocalhost%2Fsystem%0Aactive%20%3D%20True%0A"
},
"mode": 420
},
{
"group": {
"id": 1001
},
"overwrite": true,
"path": "/opt/ocp-ipi-baremetal-lab/vbmc/.vbmc/master1/config",
"user": {
"id": 1001
},
"contents": {
"source": "data:,%5BVirtualBMC%5D%0Ausername%20%3D%20admin%0Apassword%20%3D%20password%0Aaddress%20%3D%20192.168.123.1%0Aport%20%3D%206231%0Adomain_name%20%3D%20master1%0Alibvirt_uri%20%3D%20qemu%2Btcp%3A%2F%2Flocalhost%2Fsystem%0Aactive%20%3D%20True%0A"
},
"mode": 420
},
{
"group": {
"id": 1001
},
"overwrite": true,
"path": "/opt/ocp-ipi-baremetal-lab/vbmc/.vbmc/master2/config",
"user": {
"id": 1001
},
"contents": {
"source": "data:,%5BVirtualBMC%5D%0Ausername%20%3D%20admin%0Apassword%20%3D%20password%0Aaddress%20%3D%20192.168.123.1%0Aport%20%3D%206232%0Adomain_name%20%3D%20master2%0Alibvirt_uri%20%3D%20qemu%2Btcp%3A%2F%2Flocalhost%2Fsystem%0Aactive%20%3D%20True%0A"
},
"mode": 420
},
{
"group": {
"id": 1001
},
"overwrite": true,
"path": "/opt/ocp-ipi-baremetal-lab/vbmc/.vbmc/worker0/config",
"user": {
"id": 1001
},
"contents": {
"source": "data:,%5BVirtualBMC%5D%0Ausername%20%3D%20admin%0Apassword%20%3D%20password%0Aaddress%20%3D%20192.168.123.1%0Aport%20%3D%206233%0Adomain_name%20%3D%20worker0%0Alibvirt_uri%20%3D%20qemu%2Btcp%3A%2F%2Flocalhost%2Fsystem%0Aactive%20%3D%20True%0A"
},
"mode": 420
},
{
"group": {
"id": 1001
},
"overwrite": true,
"path": "/opt/ocp-ipi-baremetal-lab/vbmc/.vbmc/worker1/config",
"user": {
"id": 1001
},
"contents": {
"source": "data:,%5BVirtualBMC%5D%0Ausername%20%3D%20admin%0Apassword%20%3D%20password%0Aaddress%20%3D%20192.168.123.1%0Aport%20%3D%206234%0Adomain_name%20%3D%20worker1%0Alibvirt_uri%20%3D%20qemu%2Btcp%3A%2F%2Flocalhost%2Fsystem%0Aactive%20%3D%20True%0A"
},
"mode": 420
},
{
"overwrite": true,
"path": "/etc/resolv.conf",
"contents": {
"source": "data:,"
},
"mode": 420
},
{
"overwrite": true,
"path": "/etc/sudoers.d/kni",
"contents": {
"source": "data:,kni%20ALL%3D(ALL)%20NOPASSWD%3A%20ALL%0A"
},
"mode": 420
},
{
"overwrite": true,
"path": "/etc/libvirt/libvirtd.conf",
"contents": {
"source": "data:,listen_tls%20%3D%200%0Alisten_tcp%20%3D%201%0Atcp_port%20%3D%20%2216509%22%0Atls_port%20%3D%20%2216514%22%0Aauth_tcp%20%3D%20%22none%22%0A"
},
"mode": 420
},
{
"overwrite": true,
"path": "/etc/libvirt/libvirt.conf",
"contents": {
"source": "data:,uri_default%20%3D%20%22qemu%2Btcp%3A%2F%2Flocalhost%2Fsystem%22%0A"
},
"mode": 420
},
{
"overwrite": true,
"path": "/etc/sysctl.d/99-sysctl.conf",
"contents": {
"source": "data:,net.ipv4.ip_forward%20%3D%201%0A"
},
"mode": 420
},
{
"overwrite": true,
"path": "/etc/ssh/sshd_config.d/20-enable-passwords.conf",
"contents": {
"source": "data:,PasswordAuthentication%20yes%0A"
},
"mode": 420
},
{
"path": "/opt/ocp-ipi-baremetal-lab/host/configure.sh",
"contents": {
"source": "data:,%23!%2Fbin%2Fsh%0A%2Fusr%2Fsbin%2Fiptables%20-t%20nat%20-I%20POSTROUTING%20-s%20192.168.123.0%2F24%20!%20-d%20192.168.123.0%2F24%20-j%20MASQUERADE%0A%2Fusr%2Fsbin%2Fiptables%20-t%20nat%20-I%20PREROUTING%20-p%20tcp%20-i%20%24(%2Fusr%2Fsbin%2Fip%20r%20%7C%20grep%20default%20%7C%20awk%20'%7Bprint%20%245%7D')%20--dport%20443%20-j%20DNAT%20--to-destination%20192.168.123.89%3A443%0A%2Fusr%2Fsbin%2Fiptables%20-t%20nat%20-I%20PREROUTING%20-p%20tcp%20-i%20%24(%2Fusr%2Fsbin%2Fip%20r%20%7C%20grep%20default%20%7C%20awk%20'%7Bprint%20%245%7D')%20--dport%206443%20-j%20DNAT%20--to-destination%20192.168.123.89%3A6443%0Asystemctl%20start%20libvirtd-tcp.socket%0A"
},
"mode": 493
},
{
"overwrite": true,
"path": "/etc/NetworkManager/system-connections/ens3.nmconnection",
"user": {
"name": "root"
},
"contents": {
"source": "data:,%5Bconnection%5D%0Aid%3Dens3%0Atype%3Dethernet%0Aautoconnect%3Dyes%0Ainterface-name%3Dens3%0A%5Bipv4%5D%0Amethod%3Dauto%0A%5Bipv6%5D%0Amethod%3Ddisabled%0A"
},
"mode": 384
},
{
"overwrite": true,
"path": "/etc/NetworkManager/system-connections/baremetal-dummy.nmconnection",
"user": {
"name": "root"
},
"contents": {
"source": "data:,%5Bconnection%5D%0Aid%3Dbaremetal-dummy%0Atype%3Ddummy%0Ainterface-name%3Dbaremetal-dummy%0Aautoconnect%3Dyes%0Amaster%3Dbaremetal%0Aslave-type%3Dbridge%0A%5Bipv4%5D%0Amethod%3Dlink-local%0A%5Bipv6%5D%0Amethod%3Ddisabled%0A"
},
"mode": 384
},
{
"overwrite": true,
"path": "/etc/NetworkManager/system-connections/baremetal.nmconnection",
"user": {
"name": "root"
},
"contents": {
"source": "data:,%5Bconnection%5D%0Aid%3Dbaremetal%0Atype%3Dbridge%0Aautoconnect%3Dyes%0Ainterface-name%3Dbaremetal%0A%5Bipv4%5D%0Amethod%3Dmanual%0Aaddresses%3D192.168.123.1%0A%5Bipv6%5D%0Amethod%3Ddisabled%0A%5Bbridge%5D%0Amac-address%3D52%3A54%3A00%3A11%3A22%3Aa0%0Ainterface-name%3Dbaremetal%0A"
},
"mode": 384
},
{
"overwrite": true,
"path": "/etc/NetworkManager/system-connections/baremetal-slave.nmconnection",
"user": {
"name": "root"
},
"contents": {
"source": "data:,%5Bconnection%5D%0Aid%3Dbaremetal-slave%0Atype%3Dethernet%0Ainterface-name%3Dbaremetal-dummy%0Amaster%3Dbaremetal%0Aautoconnect%3Dyes%0Aslave-type%3Dbridge%0A"
},
"mode": 384
},
{
"overwrite": true,
"path": "/etc/NetworkManager/system-connections/provision-dummy.nmconnection",
"user": {
"name": "root"
},
"contents": {
"source": "data:,%5Bconnection%5D%0Aid%3Dprovision-dummy%0Atype%3Ddummy%0Ainterface-name%3Dprovision-dummy%0Aautoconnect%3Dyes%0Amaster%3Dprovisioning%0Aslave-type%3Dbridge%0A%5Bipv4%5D%0Amethod%3Dlink-local%0A%5Bipv6%5D%0Amethod%3Ddisabled%0A"
},
"mode": 384
},
{
"overwrite": true,
"path": "/etc/NetworkManager/system-connections/provisioning.nmconnection",
"user": {
"name": "root"
},
"contents": {
"source": "data:,%5Bconnection%5D%0Aid%3Dprovisioning%0Atype%3Dbridge%0Ainterface-name%3Dprovisioning%0Aautoconnect%3Dyes%0A%5Bipv4%5D%0Amethod%3Dmanual%0Aaddresses%3D172.22.0.254%2F24%0A%5Bipv6%5D%0Amethod%3Ddisabled%0A%5Bbridge%5D%0Amac-address%3D52%3A54%3A00%3A11%3A22%3Ab0%0Ainterface-name%3Dprovisioning%0A"
},
"mode": 384
},
{
"overwrite": true,
"path": "/etc/NetworkManager/system-connections/provisioning-slave.nmconnection",
"user": {
"name": "root"
},
"contents": {
"source": "data:,%5Bconnection%5D%0Aid%3Dprovisioning-slave%0Atype%3Dethernet%0Ainterface-name%3Dprovision-dummy%0Amaster%3Dprovisioning%0Aautoconnect%3Dyes%0Aslave-type%3Dbridge%0A"
},
"mode": 384
},
{
"overwrite": true,
"path": "/etc/NetworkManager/conf.d/ocp-ipi-baremetal-lab.conf",
"user": {
"name": "root"
},
"contents": {
"source": "data:,%5Bmain%5D%0Aplugins%3Dkeyfile%0Adns%3Ddnsmasq%0A"
},
"mode": 420
},
{
"overwrite": true,
"path": "/etc/NetworkManager/dnsmasq.d/ocp-ipi-baremetal-lab.conf",
"user": {
"name": "root"
},
"contents": {
"source": "data:,address%3D%2F.apps.ocp.example.local%2F192.168.123.89%0Aaddn-hosts%3D%2Fetc%2Fhosts%0A"
},
"mode": 420
},
{
"overwrite": true,
"path": "/etc/hosts",
"user": {
"name": "root"
},
"contents": {
"source": "data:,127.0.0.1%20localhost%20localhost.localdomain%20ocp-ipi-baremetal-lab.ocp.example.local%0A192.168.123.88%20api.ocp.example.local%0A192.168.123.90%20bootstrap.ocp.example.local%0A192.168.123.91%20master0.ocp.example.local%0A192.168.123.92%20master1.ocp.example.local%0A192.168.123.93%20master2.ocp.example.local%0A192.168.123.94%20worker0.ocp.example.local%0A192.168.123.95%20worker1.ocp.example.local%0A192.168.123.1%20ocp-ipi-baremetal-lab.ocp.example.local%20lb.ocp.example.local%20mirror.ocp.example.local%20proxy.ocp.example.local%0A"
},
"mode": 420
},
{
"path": "/etc/zincati/config.d/90-disable-auto-updates.toml",
"contents": {
"source": "data:,%5Bupdates%5D%0Aenabled%20%3D%20false%0A"
}
},
{
"group": {
"name": "kni"
},
"overwrite": true,
"path": "/opt/ocp-ipi-baremetal-lab/libvirt/create-vm.sh",
"user": {
"name": "kni"
},
"contents": {
"source": "data:,%23!%2Fbin%2Fbash%0A%23%20Create%20node%20for%20ocp-ipi-baremetal-lab%0A%0Aset%20-euxo%20pipefail%0A%0AVM_NAME%3D%241%0AMAC1%3D%242%0AMAC2%3D%243%0AVM_DIR%3D%2Fopt%2Focp-ipi-baremetal-lab%2Flibvirt%0AVM_DISK%3D%24VM_DIR%2F%24VM_NAME%2F%24VM_NAME.img%0AVCPU%3D4%0AMEMORY%3D16384%0ANETWORK1%3Dbridge%3Dprovisioning%2Cmac%3D%24MAC1%0ANETWORK2%3Dbridge%3Dbaremetal%2Cmac%3D%24MAC2%0A%0Aif%20virsh%20list%20%7C%20grep%20%24VM_NAME%202%3E%261%3E%2Fdev%2Fnull%3B%20then%20virsh%20destroy%20%24VM_NAME%202%3E%2Fdev%2Fnull%3B%20virsh%20undefine%20%24VM_NAME%202%3E%2Fdev%2Fnull%3B%20fi%0Aif%20virsh%20list%20--all%20%7C%20grep%20%24VM_NAME%202%3E%261%3E%2Fdev%2Fnull%3B%20then%20virsh%20undefine%20%24VM_NAME%202%3E%2Fdev%2Fnull%3B%20fi%0Aif%20%5B%20!%20-f%20%24VM_DISK%20%5D%20%3B%20then%20mkdir%20-p%20%24VM_DIR%2F%24VM_NAME%3B%20qemu-img%20create%20%24VM_DISK%2060G%3B%20fi%0A%0Avirsh%20define%20%3C(virt-install%20--name%20%24VM_NAME%20%5C%0A%20%20%20%20%20%20%20%20--os-variant%20fedora-coreos-stable%20%5C%0A%20%20%20%20%20%20%20%20--vcpus%20%24VCPU%20%5C%0A%20%20%20%20%20%20%20%20--memory%20%24MEMORY%20%5C%0A%20%20%20%20%20%20%20%20--disk%20%24VM_DISK%20%5C%0A%20%20%20%20%20%20%20%20--network%20%24NETWORK1%20%5C%0A%20%20%20%20%20%20%20%20--network%20%24NETWORK2%20%5C%0A%20%20%20%20%20%20%20%20--pxe%20%5C%0A%20%20%20%20%20%20%20%20--boot%20network%2Chd%20%5C%0A%20%20%20%20%20%20%20%20--graphics%20spice%2Clisten%3D0.0.0.0%20%5C%0A%20%20%20%20%20%20%20%20--video%20virtio%20%5C%0A%20%20%20%20%20%20%20%20--channel%20spicevmc%20%5C%0A%20%20%20%20%20%20%20%20--console%20pty%2Ctarget.type%3Dvirtio%20%5C%0A%20%20%20%20%20%20%20%20--serial%20pty%20%5C%0A%20%20%20%20%20%20%20%20--noautoconsole%20%5C%0A%20%20%20%20%20%20%20%20--print-xml%202)%0Atouch%20%2Fopt%2Focp-ipi-baremetal-lab%2F%24VM_NAME.done%0A"
},
"mode": 493
},
{
"overwrite": true,
"path": "/opt/ocp-ipi-baremetal-lab/dhcp/Containerfile",
"contents": {
"source": "data:,FROM%20fedora%0AMAINTAINER%20%22Vinu%20K%22%20%3Cvkochuku%40redhat.com%3E%0ARUN%20yum%20install%20-y%20dnsmasq%0AADD%20dnsmasq.conf%20%2Fdnsmasq.conf%0AENTRYPOINT%20%5B%22dnsmasq%22%5D%0ACMD%20%5B%22-C%22%2C%20%22%2Fdnsmasq.conf%22%5D%0A"
},
"mode": 420
},
{
"overwrite": true,
"path": "/opt/ocp-ipi-baremetal-lab/dhcp/dnsmasq.conf",
"contents": {
"source": "data:,no-daemon%0Ainterface%3Dbaremetal%0Adhcp-range%3D192.168.123.2%2C192.168.123.254%2C255.255.255.0%0Aexcept-interface%3Dlo%0Abind-interfaces%0Alog-dhcp%0Adhcp-authoritative%0Alog-async%0Adhcp-host%3D52%3A54%3A00%3A11%3A22%3Aa1%2Cmaster0.ocp.example.local%2C192.168.123.91%0Adhcp-host%3D52%3A54%3A00%3A11%3A22%3Aa2%2Cmaster1.ocp.example.local%2C192.168.123.92%0Adhcp-host%3D52%3A54%3A00%3A11%3A22%3Aa3%2Cmaster2.ocp.example.local%2C192.168.123.93%0Adhcp-host%3D52%3A54%3A00%3A11%3A22%3Aa4%2Cworker0.ocp.example.local%2C192.168.123.94%0Adhcp-host%3D52%3A54%3A00%3A11%3A22%3Aa5%2Cworker1.ocp.example.local%2C192.168.123.95%0A"
},
"mode": 420
},
{
"group": {
"name": "kni"
},
"overwrite": true,
"path": "/home/kni/Makefile",
"user": {
"name": "kni"
},
"contents": {
"source": "data:,RELEASE%20%3F%3D%20%22stable-4.10%22%0ASCRIPT_DIR%20%3D%20%24(shell%20cd%20--%20%22%24(%20dirname%20--%20%22%24%7BBASH_SOURCE%5B0%5D%3A-%240%7D%22%3B%20)%22%20%26%3E%20%2Fdev%2Fnull%20%26%26%20pwd%202%3E%20%2Fdev%2Fnull%3B%20)%0ACONTAINERS%20%3D%20%24(shell%20sudo%20podman%20ps%20--format%20%7B%7B.Names%7D%7D%20%7C%20sort%20%7C%20xargs)%0A%0Acheck-env%3A%0Aifndef%20OCM_TOKEN%0A%20%20%20%20%20%20%24(error%20OCM_TOKEN%20is%20undefined%20%7C%20Get%20it%20from%20https%3A%2F%2Fcloud.redhat.com%2Fopenshift%2Ftoken)%0Aendif%0A%0Acheck-containers%3A%0Aifneq%20(%24(CONTAINERS)%2Cdhcp%20vbmc%20webserve)%0A%20%20%20%20%20%20%24(error%20The%20containerized%20services%20(dhcp%20vbmc%20webserver)%20are%20not%20ready.%20Check%20with%20'sudo%20podman%20ps'%20and%20wait%20for%20a%20while%20to%20retry)%0Aendif%0A%0A.PHONY%3A%20ssh-pullsecret%0A%0Assh-pullsecret%3A%20check-env%0A%20%20%20%20%20%20%40echo%20%22Generating%20SSH%20keys%20and%20pullsecret%20...%22%0A%20%20%20%20%20%20ocp-ipi-baremetal-lab%2Fssh-pullsecret.sh%20%24(OCM_TOKEN)%0A%0A.PHONY%3A%20install-config%0A%0Ainstall-config%3A%20%2Fhome%2Fkni%2Focp-ipi-baremetal-lab%2Fpullsecret%20%2Fhome%2Fkni%2Focp-ipi-baremetal-lab%2Fid_ed25519.pub%0A%20%20%20%20%20%20%40echo%20%22Generating%20install-config.yaml%20file%20...%22%0A%20%20%20%20%20%20ocp-ipi-baremetal-lab%2Finstall-config.sh%20%24(RELEASE)%0A%0A.PHONY%3A%20cluster%0A%0Acluster%3A%20%24(SCRIPT_DIR)%2Focp-ipi-baremetal-lab%2Fclusterconfigs%2Finstall-config.yaml%20check-containers%0A%20%20%20%20%20%20%40echo%20%22Generating%20manifest%20...%22%0A%20%20%20%20%20%20%2Fusr%2Flocal%2Fbin%2Fopenshift-baremetal-install%20--log-level%3Ddebug%20--dir%3D%24(SCRIPT_DIR)%2Focp-ipi-baremetal-lab%2Fclusterconfigs%20create%20manifests%0A%20%20%20%20%20%20%40echo%20%22Creating%20cluster%20...%22%0A%20%20%20%20%20%20%2Fusr%2Flocal%2Fbin%2Fopenshift-baremetal-install%20--log-level%3Ddebug%20--dir%3D%24(SCRIPT_DIR)%2Focp-ipi-baremetal-lab%2Fclusterconfigs%20create%20cluster%0A%0A.PHONY%3A%20clean%0A%0Aclean%3A%0A%20%20%20%20%20%20%40echo%20%22Removing%20old%20bootstrap%20resources%20...%22%0A%20%20%20%20%20%20-%24(SCRIPT_DIR)%2Focp-ipi-baremetal-lab%2Fclean-bootstrap.sh%0A%20%20%20%20%20%20%40echo%20%22Removing%20installation%20directory%20...%22%0A%20%20%20%20%20%20-rm%20-rfv%20%24(SCRIPT_DIR)%2Focp-ipi-baremetal-lab%2Fclusterconfigs%0A%20%20%20%20%20%20%40echo%20%22Powering%20off%20master%20nodes%20...%22%0A%20%20%20%20%20%20-for%20i%20in%20master0%20master1%20master2%3B%20do%20sudo%20virsh%20destroy%20%24%24i%3B%20done%0A%20%20%20%20%20%20%40echo%20%22!!!%20IGNORE%20THE%20ERRORS%20!!!%22%0A%0A.PHONY%3A%20destroy%0A%0Adestroy%3A%0A%20%20%20%20%20%20%40echo%20%22Destroying%20bootrap%20...%22%0A%20%20%20%20%20%20-openshift-baremetal-install%20destroy%20--log-level%3Ddebug%20--dir%3D%2Fhome%2Fkni%2Focp-ipi-baremetal-lab%2Fclusterconfigs%20bootstrap%0A%20%20%20%20%20%20%40echo%20%22Destroying%20cluster%20...%22%0A%20%20%20%20%20%20-openshift-baremetal-install%20destroy%20--log-level%3Ddebug%20--dir%3D%2Fhome%2Fkni%2Focp-ipi-baremetal-lab%2Fclusterconfigs%20cluster%0A%20%20%20%20%20%20%40echo%20%22Removing%20installation%20directory%20...%22%0A%20%20%20%20%20%20-rm%20-rfv%20%24(SCRIPT_DIR)%2Focp-ipi-baremetal-lab%2Fclusterconfigs%0A%20%20%20%20%20%20%40echo%20%22Powering%20off%20master%20nodes%20...%22%0A%20%20%20%20%20%20-for%20i%20in%20master0%20master1%20master2%3B%20do%20sudo%20virsh%20destroy%20%24%24i%3B%20done%0A%20%20%20%20%20%20%40echo%20%22!!!%20IGNORE%20THE%20ERRORS%20!!!%22%0A%0A.PHONY%3A%20help%0A%0Ahelp%3A%0A%20%20%20%20%20%20%40echo%20%22Usage%3A%20oibl%20%5BSUBCOMMAND%5D%20%5BVARIABLE_NAME%5D%3D%3Cvariable%3E%22%0A%20%20%20%20%20%20%40echo%20%22%22%0A%20%20%20%20%20%20%40echo%20%22Subcommands%3A%22%0A%20%20%20%20%20%20%40echo%20%22%20%20ssh-pullsecret%20OCM_TOKEN%3D%3COCM_TOKEN%3E%20%20%20Generate%20SSH%20keys%20and%20download%20pullsecret%20file.%22%0A%20%20%20%20%20%20%40echo%20%22%20%20install-config%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Generate%20install-config.yaml%20file.%22%0A%20%20%20%20%20%20%40echo%20%22%20%20cluster%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Create%20an%20OpenShift%20cluster.%22%0A%20%20%20%20%20%20%40echo%20%22%20%20destroy%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Destroy%20installed%20cluster.%22%0A%20%20%20%20%20%20%40echo%20%22%20%20clean%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Clean%20old%20cluster%20resources.%22%0A%20%20%20%20%20%20%40echo%20%22%22%0A%20%20%20%20%20%20%40echo%20%22Example%3A%22%0A%20%20%20%20%20%20%40echo%20%22%20%20oibl%20cluster%20LOGLEVEL%3Ddebug%22%0A%20%20%20%20%20%20%40echo%20%22%22%0A%20%20%20%20%20%20%40echo%20%22Variables%3A%22%0A%20%20%20%20%20%20%40echo%20%22%20%20OCM_TOKEN%20(token%20from%20https%3A%2F%2Fcloud.redhat.com%2Fopenshift%2Ftoken)%22%0A%20%20%20%20%20%20%40echo%20%22%20%20RELEASE%20(stable-4.10%2C%20latest-4.9%2C%204.9.0%2C%20etc)%22%0A%20%20%20%20%20%20%40echo%20%22%20%20LOGLEVEL%20(debug%2C%20info%2C%20warn%2C%20error)%22%0A"
},
"mode": 493
},
{
"group": {
"name": "kni"
},
"overwrite": true,
"path": "/home/kni/ocp-ipi-baremetal-lab/clean-bootstrap.sh",
"user": {
"name": "kni"
},
"contents": {
"source": "data:,%0A%23!%2Fbin%2Fbash%0A%23%0A%23%20Remove%20old%20bootstrap%20resources%20if%20any%20are%20left%20over%20from%20a%20previous%20deployment%20attempt%0A%0Aset%20-euxo%20pipefail%0A%0ABOOTSTRAP%3D%24(virsh%20list%20--all%20%7C%20grep%20bootstrap%20%7C%20awk%20'%7Bprint%20%242%7D')%0A%0Aif%20%5B%5B%20-z%20%24%7BBOOTSTRAP%7D%20%5D%5D%3B%20then%0A%20%20echo%20%22No%20old%20bootstrap%20resources%22%0Aelse%0A%20%20virsh%20destroy%20%24%7BBOOTSTRAP%7D%0A%20%20virsh%20undefine%20%24%7BBOOTSTRAP%7D%0A%20%20virsh%20pool-start%20%24%7BBOOTSTRAP%7D%0A%20%20virsh%20vol-delete%20%24%7BBOOTSTRAP%7D%20--pool%20%24%7BBOOTSTRAP%7D%0A%20%20virsh%20vol-delete%20%24%7BBOOTSTRAP%7D-base%20--pool%20%24%7BBOOTSTRAP%7D%0A%20%20virsh%20vol-delete%20%24%7BBOOTSTRAP%7D.ign%20--pool%20%24%7BBOOTSTRAP%7D%0A%20%20virsh%20pool-destroy%20%24%7BBOOTSTRAP%7D%0A%20%20virsh%20pool-delete%20%24%7BBOOTSTRAP%7D%0A%20%20virsh%20pool-undefine%20%24%7BBOOTSTRAP%7D%0Afi%0A"
},
"mode": 493
},
{
"group": {
"name": "kni"
},
"overwrite": true,
"path": "/home/kni/ocp-ipi-baremetal-lab/ssh-pullsecret.sh",
"user": {
"name": "kni"
},
"contents": {
"source": "data:,%23!%2Fbin%2Fbash%0A%23%20Download%20pull%20secret%20using%20OpenShift%20Cluster%20Manager%20API%20Token%0A%0Aset%20-euxo%20pipefail%0A%0Afunction%20USAGE%20%7B%0A%20%20%20%20%20%20%20%20echo%20%22Usage%3A%20%240%20'%3COCM%20API%20Token%3E'%22%0A%20%20%20%20%20%20%20%20echo%20%22You%20need%20to%20authenticate%20using%20a%20Bearer%20token%2C%20which%20you%20can%20get%20from%20the%20link%3A%20https%3A%2F%2Fcloud.redhat.com%2Fopenshift%2Ftoken%22%0A%20%20%20%20%20%20%20%20exit%201%0A%7D%0A%0Afunction%20DOWNLOAD_PULLSECRET%20%7B%0A%20%20%20%20%20%20%20%20export%20BEARER%3D%24(curl%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--silent%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--data-urlencode%20%22grant_type%3Drefresh_token%22%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--data-urlencode%20%22client_id%3Dcloud-services%22%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--data-urlencode%20%22refresh_token%3D%24%7BOCM_API_TOKEN%7D%22%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20https%3A%2F%2Fsso.redhat.com%2Fauth%2Frealms%2Fredhat-external%2Fprotocol%2Fopenid-connect%2Ftoken%20%7C%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jq%20-r%20.access_token)%0A%20%20%20%20%20%20%20%20curl%20-s%20-X%20POST%20https%3A%2F%2Fapi.openshift.com%2Fapi%2Faccounts_mgmt%2Fv1%2Faccess_token%20--header%20%22Content-Type%3Aapplication%2Fjson%22%20--header%20%22Authorization%3A%20Bearer%20%24BEARER%22%20%3E%20%24%7BSCRIPT_DIR%7D%2Fpullsecret%0A%7D%0A%0Afunction%20SSH_KEY%20%7B%0A%20%20%20%20%20%20%20%20rm%20-fv%20%24%7BSCRIPT_DIR%7D%2Fid_ed25519%20%24%7BSCRIPT_DIR%7D%2Fid_ed25519.pub%0A%20%20%20%20%20%20%20%20ssh-keygen%20-q%20-t%20ed25519%20-N%20''%20-f%20%24%7BSCRIPT_DIR%7D%2Fid_ed25519%0A%7D%0A%0ASCRIPT_DIR%3D%22%24(%20cd%20--%20%22%24(%20dirname%20--%20%22%24%7BBASH_SOURCE%5B0%5D%3A-%240%7D%22%3B%20)%22%20%26%3E%20%2Fdev%2Fnull%20%26%26%20pwd%202%3E%20%2Fdev%2Fnull%3B%20)%22%0AARG_COUNT%3D%24%7B%23%7D%0AOCM_API_TOKEN%3D%24%7B1%7D%0AARG_SIZE%3D%24%7B%23OCM_API_TOKEN%7D%0A%0Aif%20%5B%20%24%7BARG_COUNT%7D%20-eq%201%20%5D%20%26%26%20%5B%20%24%7BARG_SIZE%7D%20-gt%2050%20%5D%3B%20then%0A%20%20%20%20%20%20%20%20(%20DOWNLOAD_PULLSECRET%201%3E%2Fdev%2Fnull%20%26%26%20echo%20%22%E2%9C%94%20Pull%20secret%20downloaded%22%20)%20%7C%7C%20echo%20%22%E2%9C%97%20Error%3A%20Pull%20secret%20download%20failed%22%0A%20%20%20%20%20%20%20%20(%20SSH_KEY%20%26%26%20echo%20%22%E2%9C%94%20SSH%20key%20generated%22%20)%20%7C%7C%20echo%20%22%E2%9C%97%20Error%3A%20SSH%20key%20generation%20failed%22%0Aelse%0A%20%20%20%20%20%20%20%20USAGE%0Afi%0A"
},
"mode": 493
},
{
"group": {
"name": "kni"
},
"overwrite": true,
"path": "/home/kni/ocp-ipi-baremetal-lab/install-config.sh",
"user": {
"name": "kni"
},
"contents": {
"source": "data:,set%20-euxo%20pipefail%0A%0ASCRIPT_DIR%3D%22%24(%20cd%20--%20%22%24(%20dirname%20--%20%22%24%7BBASH_SOURCE%5B0%5D%3A-%240%7D%22%3B%20)%22%20%26%3E%20%2Fdev%2Fnull%20%26%26%20pwd%202%3E%20%2Fdev%2Fnull%3B%20)%22%0Aexport%20VERSION%3D%24%7B1%7D%0Aexport%20RELEASE_IMAGE%3D%24(curl%20-s%20https%3A%2F%2Fmirror.openshift.com%2Fpub%2Fopenshift-v4%2Fclients%2Focp%2F%24VERSION%2Frelease.txt%20%7C%20grep%20'Pull%20From%3A%20quay.io'%20%7C%20awk%20-F%20'%20'%20'%7Bprint%20%243%7D')%0Aexport%20cmd%3Dopenshift-baremetal-install%0Aexport%20pullsecret_file%3D%24%7BSCRIPT_DIR%7D%2Fpullsecret%0Aexport%20extract_dir%3D%24%7BSCRIPT_DIR%7D%0Acurl%20-s%20https%3A%2F%2Fmirror.openshift.com%2Fpub%2Fopenshift-v4%2Fclients%2Focp%2F%24VERSION%2Fopenshift-client-linux.tar.gz%20%7C%20tar%20zxvf%20-%20-C%20%24%7BSCRIPT_DIR%7D%20oc%0Asudo%20mv%20%24%7BSCRIPT_DIR%7D%2Foc%20%2Fusr%2Flocal%2Fbin%0A%2Fusr%2Flocal%2Fbin%2Foc%20adm%20release%20extract%20--registry-config%20%22%24%7Bpullsecret_file%7D%22%20--command%3D%24cmd%20--to%20%22%24%7Bextract_dir%7D%22%20%24%7BRELEASE_IMAGE%7D%0Asudo%20mv%20%24%7BSCRIPT_DIR%7D%2Fopenshift-baremetal-install%20%2Fusr%2Flocal%2Fbin%0Aexport%20RHCOS_QEMU_URI%3D%24(%2Fusr%2Flocal%2Fbin%2Fopenshift-baremetal-install%20coreos%20print-stream-json%20%7C%20jq%20-r%20--arg%20ARCH%20%22%24(arch)%22%20'.architectures%5B%24ARCH%5D.artifacts.qemu.formats%5B%22qcow2.gz%22%5D.disk.location')%0Aexport%20RHCOS_QEMU_NAME%3D%24%7BRHCOS_QEMU_URI%23%23*%2F%7D%0Aexport%20RHCOS_QEMU_UNCOMPRESSED_SHA256%3D%24(%2Fusr%2Flocal%2Fbin%2Fopenshift-baremetal-install%20coreos%20print-stream-json%20%7C%20jq%20-r%20--arg%20ARCH%20%22%24(arch)%22%20'.architectures%5B%24ARCH%5D.artifacts.qemu.formats%5B%22qcow2.gz%22%5D.disk%5B%22uncompressed-sha256%22%5D')%0Acurl%20-L%20%24%7BRHCOS_QEMU_URI%7D%20-o%20%2Fhome%2Fkni%2Focp-ipi-baremetal-lab%2Frhcos_image_cache%2F%24%7BRHCOS_QEMU_NAME%7D%0Aexport%20BAREMETAL_IP%3D%24(ip%20addr%20show%20dev%20baremetal%20%7C%20awk%20'%2Finet%20%2F%7Bprint%20%242%7D'%20%7C%20cut%20-d%22%2F%22%20-f1)%0Aexport%20BOOTSTRAP_OS_IMAGE%3D%22http%3A%2F%2F%24%7BBAREMETAL_IP%7D%3A8080%2F%24%7BRHCOS_QEMU_NAME%7D%3Fsha256%3D%24%7BRHCOS_QEMU_UNCOMPRESSED_SHA256%7D%22%0Aecho%20%22%20%20%20%20bootstrapOSImage%3D%24%7BBOOTSTRAP_OS_IMAGE%7D%22%0A%0Acat%20%3C%3C%20EOF%20%3E%20%24%7BSCRIPT_DIR%7D%2Finstall-config.yaml%0AapiVersion%3A%20v1%0AbaseDomain%3A%20example.local%0Ametadata%3A%0A%20%20name%3A%20ocp%0Anetworking%3A%0A%20%20machineNetwork%3A%0A%20%20-%20cidr%3A%20192.168.123.0%2F24%0A%20%20networkType%3A%20OVNKubernetes%0Acompute%3A%0A-%20name%3A%20worker%0A%20%20replicas%3A%200%0AcontrolPlane%3A%0A%20%20name%3A%20master%0A%20%20replicas%3A%203%0A%20%20platform%3A%0A%20%20%20%20baremetal%3A%20%7B%7D%0Aplatform%3A%0A%20%20baremetal%3A%0A%20%20%20%20libvirtURI%3A%20qemu%2Btcp%3A%2F%2Flocalhost%2Fsystem%0A%20%20%20%20bootstrapOSImage%3A%20%24%7BBOOTSTRAP_OS_IMAGE%7D%0A%20%20%20%20apiVIP%3A%20192.168.123.88%0A%20%20%20%20ingressVIP%3A%20192.168.123.89%0A%20%20%20%20provisioningNetworkCIDR%3A%20172.22.0.0%2F24%0A%20%20%20%20hosts%3A%0A%20%20%20%20%20%20-%20name%3A%20master0%0A%20%20%20%20%20%20%20%20role%3A%20master%0A%20%20%20%20%20%20%20%20bmc%3A%0A%20%20%20%20%20%20%20%20%20%20address%3A%20ipmi%3A%2F%2F192.168.123.1%3A6230%0A%20%20%20%20%20%20%20%20%20%20username%3A%20admin%0A%20%20%20%20%20%20%20%20%20%20password%3A%20password%0A%20%20%20%20%20%20%20%20bootMACAddress%3A%2052%3A54%3A00%3A11%3A22%3Ab1%0A%20%20%20%20%20%20%20%20hardwareProfile%3A%20libvirt%0A%20%20%20%20%20%20%20%20rootDeviceHints%3A%0A%20%20%20%20%20%20%20%20%20deviceName%3A%20%22%2Fdev%2Fvda%22%0A%20%20%20%20%20%20-%20name%3A%20master1%0A%20%20%20%20%20%20%20%20role%3A%20master%0A%20%20%20%20%20%20%20%20bmc%3A%0A%20%20%20%20%20%20%20%20%20%20address%3A%20ipmi%3A%2F%2F192.168.123.1%3A6231%0A%20%20%20%20%20%20%20%20%20%20username%3A%20admin%0A%20%20%20%20%20%20%20%20%20%20password%3A%20password%0A%20%20%20%20%20%20%20%20bootMACAddress%3A%2052%3A54%3A00%3A11%3A22%3Ab2%0A%20%20%20%20%20%20%20%20hardwareProfile%3A%20libvirt%0A%20%20%20%20%20%20%20%20rootDeviceHints%3A%0A%20%20%20%20%20%20%20%20%20deviceName%3A%20%22%2Fdev%2Fvda%22%0A%20%20%20%20%20%20-%20name%3A%20master2%0A%20%20%20%20%20%20%20%20role%3A%20master%0A%20%20%20%20%20%20%20%20bmc%3A%0A%20%20%20%20%20%20%20%20%20%20address%3A%20ipmi%3A%2F%2F192.168.123.1%3A6232%0A%20%20%20%20%20%20%20%20%20%20username%3A%20admin%0A%20%20%20%20%20%20%20%20%20%20password%3A%20password%0A%20%20%20%20%20%20%20%20bootMACAddress%3A%2052%3A54%3A00%3A11%3A22%3Ab3%0A%20%20%20%20%20%20%20%20hardwareProfile%3A%20libvirt%0A%20%20%20%20%20%20%20%20rootDeviceHints%3A%0A%20%20%20%20%20%20%20%20%20deviceName%3A%20%22%2Fdev%2Fvda%22%0ApullSecret%3A%20'%24(cat%20%24%7BSCRIPT_DIR%7D%2Fpullsecret)'%0AsshKey%3A%20'%24(cat%20%24%7BSCRIPT_DIR%7D%2Fid_ed25519.pub)'%0AEOF%0A%0Amkdir%20-p%20%24%7BSCRIPT_DIR%7D%2Fclusterconfigs%0Acp%20-v%20%24%7BSCRIPT_DIR%7D%2Finstall-config.yaml%20%24%7BSCRIPT_DIR%7D%2Fclusterconfigs%2F%0A"
},
"mode": 493
},
{
"overwrite": true,
"path": "/opt/ocp-ipi-baremetal-lab/host/broadcast.sh",
"contents": {
"source": "data:,%23!%2Fbin%2Fsh%0Awhile%20true%3B%20do%20if%20%5B%5B%20%24(podman%20ps%20--format%20json%20%7C%20jq%20-r%20'.%5B%5D%20%7C%20.Names%20%7C%20.%5B%5D'%20%7C%20wc%20-l)%20%3D%3D%20%223%22%20%5D%5D%3B%20then%20echo%20-e%20%22The%20containerized%20services%20(%24(podman%20ps%20--format%20json%20%7C%20jq%20-r%20'.%5B%5D%20%7C%20.Names%20%7C%20.%5B%5D'%20%7C%20xargs))%20are%20ready.%5CnYou%20can%20start%20the%20OpenShift%20baremetal%20IPI%20installation%20now.%22%20%7C%20wall%20-n%3B%20break%3B%20fi%3B%20done%0A"
},
"mode": 493
},
{
"path": "/home/kni/.bashrc",
"append": [
{
"source": "data:,alias%20oibl%3D'make'%0Aexport%20KUBECONFIG%3D%2Fhome%2Fkni%2Focp-ipi-baremetal-lab%2Fclusterconfigs%2Fauth%2Fkubeconfig%0Ased%20-i%20-e%20's%2F%20%20%20%20%20%20%2F%5Ct%2Fg'%20%2Fhome%2Fkni%2FMakefile%0A"
}
]
}
]
},
"systemd": {
"units": [
{
"enabled": false,
"mask": true,
"name": "systemd-resolved.service"
},
{
"enabled": true,
"name": "libvirtd-tcp.socket"
},
{
"contents": "[Unit]\nWants=network-online.target\nAfter=network-online.target\n\n[Service]\nType=oneshot\nExecStart=/opt/ocp-ipi-baremetal-lab/host/configure.sh\nRemainAfterExit=yes\n\n[Install]\nWantedBy=basic.target\n",
"enabled": true,
"name": "host-configure.service"
},
{
"contents": "[Unit]\nWants=libvirtd-tcp.socket\nAfter=libvirtd-tcp.socket\nRequires=libvirtd-tcp.socket\nConditionPathExists=!/opt/ocp-ipi-baremetal-lab/master0.done\n\n[Service]\nTimeout=0\nType=oneshot\nExecStart=/opt/ocp-ipi-baremetal-lab/libvirt/create-vm.sh master0 52:54:00:11:22:b1 52:54:00:11:22:a1\nExecStartPost=/usr/bin/touch /opt/ocp-ipi-baremetal-lab/master0.done\nRemainAfterExit=yes\n\n[Install]\nWantedBy=basic.target\n",
"enabled": true,
"name": "master0.service"
},
{
"contents": "[Unit]\nWants=libvirtd-tcp.socket\nAfter=libvirtd-tcp.socket\nRequires=libvirtd-tcp.socket\nConditionPathExists=!/opt/ocp-ipi-baremetal-lab/master1.done\n\n[Service]\nTimeout=0\nType=oneshot\nExecStart=/opt/ocp-ipi-baremetal-lab/libvirt/create-vm.sh master1 52:54:00:11:22:b2 52:54:00:11:22:a2\nExecStartPost=/usr/bin/touch /opt/ocp-ipi-baremetal-lab/master1.done\nRemainAfterExit=yes\n\n[Install]\nWantedBy=basic.target\n",
"enabled": true,
"name": "master1.service"
},
{
"contents": "[Unit]\nWants=libvirtd-tcp.socket\nAfter=libvirtd-tcp.socket\nRequires=libvirtd-tcp.socket\nConditionPathExists=!/opt/ocp-ipi-baremetal-lab/master2.done\n\n[Service]\nTimeout=0\nType=oneshot\nExecStart=/opt/ocp-ipi-baremetal-lab/libvirt/create-vm.sh master2 52:54:00:11:22:b3 52:54:00:11:22:a3\nExecStartPost=/usr/bin/touch /opt/ocp-ipi-baremetal-lab/master2.done\nRemainAfterExit=yes\n\n[Install]\nWantedBy=basic.target\n",
"enabled": true,
"name": "master2.service"
},
{
"contents": "[Unit]\nWants=libvirtd-tcp.socket\nAfter=libvirtd-tcp.socket\nRequires=libvirtd-tcp.socket\nConditionPathExists=!/opt/ocp-ipi-baremetal-lab/worker0.done\n\n[Service]\nTimeout=0\nType=oneshot\nExecStart=/opt/ocp-ipi-baremetal-lab/libvirt/create-vm.sh worker0 52:54:00:11:22:b4 52:54:00:11:22:a4\nExecStartPost=/usr/bin/touch /opt/ocp-ipi-baremetal-lab/worker0.done\nRemainAfterExit=yes\n\n[Install]\nWantedBy=basic.target\n",
"enabled": true,
"name": "worker0.service"
},
{
"contents": "[Unit]\nWants=libvirtd-tcp.socket\nAfter=libvirtd-tcp.socket\nRequires=libvirtd-tcp.socket\nConditionPathExists=!/opt/ocp-ipi-baremetal-lab/worker1.done\n\n[Service]\nTimeout=0\nType=oneshot\nExecStart=/opt/ocp-ipi-baremetal-lab/libvirt/create-vm.sh worker1 52:54:00:11:22:b5 52:54:00:11:22:a5\nExecStartPost=/usr/bin/touch /opt/ocp-ipi-baremetal-lab/worker1.done\nRemainAfterExit=yes\n\n[Install]\nWantedBy=basic.target\n",
"enabled": true,
"name": "worker1.service"
},
{
"contents": "[Unit]\nDescription=Webserver for ocp-ipi-baremetal-lab\nWants=network-online.target\nAfter=network-online.target\nRequiresMountsFor=%t/containers\n\n[Service]\nEnvironment=PODMAN_SYSTEMD_UNIT=%n\nRestart=on-failure\nTimeoutStopSec=70\nExecStartPre=/bin/rm -f %t/%n.ctr-id\nExecStart=/usr/bin/podman run \\\n --cidfile=%t/%n.ctr-id \\\n --cgroups=no-conmon \\\n --rm \\\n --sdnotify=conmon \\\n --replace \\\n --detach \\\n --net host \\\n --name webserver \\\n -v /home/kni/ocp-ipi-baremetal-lab/rhcos_image_cache:/var/www/html quay.io/centos7/httpd-24-centos7:latest\nExecStop=/usr/bin/podman stop --ignore --cidfile=%t/%n.ctr-id\nExecStopPost=/usr/bin/podman rm -f --ignore --cidfile=%t/%n.ctr-id\nType=notify\nNotifyAccess=all\n\n[Install]\nWantedBy=default.target\n",
"enabled": true,
"name": "webserver.service"
},
{
"contents": "[Unit]\nDescription=Podman container-e6d443b2ffab510db1684ca2833592e6f6de26cdb58a625eb0bb739e2e0b3be9.service\nDocumentation=man:podman-generate-systemd(1)\nWants=network-online.target\nAfter=network-online.target\nRequiresMountsFor=%t/containers\n\n[Service]\nEnvironment=PODMAN_SYSTEMD_UNIT=%n\nRestart=always\nTimeoutStopSec=70\nTimeoutStartSec=600\nExecStartPre=/usr/bin/rm -f %t/%n.ctr-id\nExecStartPre=/usr/bin/podman build /opt/ocp-ipi-baremetal-lab/vbmc --net host -t localhost/vbmc\nExecStart=/usr/bin/podman run \\\n --cidfile=%t/%n.ctr-id \\\n --cgroups=no-conmon \\\n --rm \\\n --sdnotify=conmon \\\n --replace \\\n -d \\\n -ti \\\n --name vbmc \\\n --net host \\\n localhost/vbmc\nExecStop=/usr/bin/podman stop --ignore --cidfile=%t/%n.ctr-id\nExecStopPost=/usr/bin/podman rm -f --ignore --cidfile=%t/%n.ctr-id\nType=notify\nNotifyAccess=all\n\n[Install]\nWantedBy=default.target\n",
"enabled": true,
"name": "vbmc.service"
},
{
"contents": "[Unit]\nDescription=Dnsmasq for ocp-ipi-baremetal-lab\nWants=network-online.target\nAfter=network-online.target\nRequiresMountsFor=%t/containers\n\n[Service]\nEnvironment=PODMAN_SYSTEMD_UNIT=%n\nRestart=always\nTimeoutStartSec=180\nTimeoutStopSec=70\nExecStartPre=-/usr/bin/rm -f %t/%n.ctr-id\nExecStartPre=/usr/bin/podman build --net host --tag localhost/dnsmasq /opt/ocp-ipi-baremetal-lab/dhcp\nExecStart=/usr/bin/podman run --cidfile=%t/%n.ctr-id --cgroups=no-conmon --rm --sdnotify=conmon --name dhcp -d --net host --cap-add NET_ADMIN,NET_RAW localhost/dnsmasq\nExecStop=/usr/bin/podman stop --ignore --cidfile=%t/%n.ctr-id\nExecStopPost=/usr/bin/podman rm -f --ignore --cidfile=%t/%n.ctr-id\nType=notify\nNotifyAccess=all\n\n[Install]\nWantedBy=default.target\n",
"enabled": true,
"name": "dhcp.service"
},
{
"contents": "[Unit]\nDescription=Check containers status\nAfter=selinux-configure.service\n\n[Service]\nTimeout=0\nType=oneshot\nExecStart=/opt/ocp-ipi-baremetal-lab/host/broadcast.sh\nRemainAfterExit=yes\n\n[Install]\nWantedBy=basic.target\n",
"enabled": true,
"name": "broadcast.service"
}
]
}
}
.PHONY: generate
generate: 00-core.bu
@echo "Generating 00-core.ign file ..."
podman run --interactive --rm quay.io/coreos/butane:release --pretty --strict < 00-core.bu > 00-core.ign
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment