Created
May 3, 2019 07:39
-
-
Save mjudeikis/c9ceae279e7f41a68e602226603bad82 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash -ex | |
exec 2>&1 | |
export HOME=/root | |
cd | |
echo ,+ | sfdisk --force -u S -N 2 /dev/sda || true | |
partprobe | |
xfs_growfs /dev/sda2 | |
yum -y update -x WALinuxAgent # updating WALinuxAgent kills this script | |
yum -y install git golang libguestfs-tools-c libvirt-daemon-config-network virt-install | |
rpm --import https://packages.microsoft.com/keys/microsoft.asc | |
cat >/etc/yum.repos.d/azure-cli.repo <<'EOF' | |
[azure-cli] | |
baseurl=https://packages.microsoft.com/yumrepos/azure-cli | |
enabled=1 | |
gpgcheck=1 | |
gpgkey=https://packages.microsoft.com/keys/microsoft.asc | |
EOF | |
yum -y install azure-cli | |
systemctl start libvirtd.service | |
mkdir data | |
base64 -d <<'EOF' | tar -C data -xz | |
{{ .Archive | Base64Encode }} | |
EOF | |
cat >client-cert.pem <<'EOF' | |
{{ .Builder.ClientCert | CertAsBytes | String }} | |
EOF | |
cat >client-key.pem <<'EOF' | |
{{ .Builder.ClientKey | PrivateKeyAsBytes | String }} | |
EOF | |
go get github.com/jim-minter/tlsproxy | |
go/bin/tlsproxy -insecure -key client-key.pem -cert client-cert.pem https://cdn.redhat.com/ & | |
while [[ "$(fuser -n tcp 8080)" == "" ]]; do | |
sleep 1 | |
done | |
firewall-cmd --zone=public --add-port=8080/tcp | |
IMAGE="{{ .Builder.Image }}" | |
DISKGIB=${DISKGIB:-32} | |
IP=$(ifconfig eth0 | awk '/inet / { print $2 }') | |
cat >rhcos.ks <<KICKSTART | |
bootloader | |
firstboot --disable | |
keyboard us | |
lang en_US.UTF-8 | |
network --activate --device=eth0 --onboot=on | |
part / --fstype=xfs --size=10240 | |
part /var --fstype=xfs --fsoptions=grpquota --grow | |
poweroff | |
rootpw --lock | |
text | |
timezone Etc/UTC | |
url --url=http://$IP:8080/content/dist/rhel/server/7/7.6/x86_64/kickstart | |
zerombr | |
%post | |
set -ex | |
exec </dev/console &>/dev/console | |
stty sane | |
#trap bash EXIT | |
echo 'add_drivers+="hv_storvsc hv_vmbus"' >/etc/dracut.conf.d/azure-drivers.conf | |
dracut --force | |
base64 -d <<'EOF' | cat >/etc/yum.repos.d/kickstart.repo | |
$(base64 <data/etc/yum.repos.d/kickstart.repo) | |
EOF | |
cat >/var/lib/yum/client-cert.pem <<'EOF' | |
$(cat client-cert.pem) | |
EOF | |
cat >/var/lib/yum/client-key.pem <<'EOF' | |
$(cat client-key.pem) | |
EOF | |
yum -y update | |
yum clean all | |
base64 -d <<'EOF' | tar -C / -x | |
$(tar -C data --owner=root --group=root -c . | base64 -w0) | |
EOF | |
# not commited with a : so that Windows users can check out the repo | |
mv /etc/docker/certs.d/docker-registry.default.svc-5000 /etc/docker/certs.d/docker-registry.default.svc:5000 | |
rm /etc/yum.repos.d/kickstart.repo /var/lib/yum/client-cert.pem /var/lib/yum/client-key.pem | |
mkdir /var/lib/etcd | |
>/var/tmp/kickstart_completed | |
%end | |
KICKSTART | |
echo 'user = "root"' >> /etc/libvirt/qemu.conf | |
echo 'group = "root"' >> /etc/libvirt/qemu.conf | |
systemctl restart libvirtd | |
curl -J -L -O https://releases-art-rhcos.svc.ci.openshift.org/art/storage/releases/ootpa/410.8.20190429.0/rhcos-410.8.20190429.0-installer.iso | |
mkdir -p /mnt/iso | |
mount -o loop rhcos-410.8.20190429.0-installer.iso /mnt/iso | |
# virt-install insists it needs a pty, so we give it one | |
python -c "import pty; pty.spawn([ | |
'virt-install', | |
'--disk', '/var/lib/libvirt/images/$IMAGE.raw,size=$DISKGIB,format=raw', | |
'--extra-args', 'console=ttyS0,115200n8 earlyprintk=ttyS0,115200 ks=file:/rhel7.ks', | |
'--graphics', 'none', | |
'--initrd-inject', 'rhcos.ks', | |
'--cdrom $IMAGE_URL, | |
'--location', 'http://$IP:8080/content/dist/rhel/server/7/7.6/x86_64/kickstart', | |
'--memory', '1536', | |
'--name', '$(date +%s)', | |
'--os-variant', 'rhel7', | |
'--transient', | |
])" | |
virt-install \ | |
--disk /var/lib/libvirt/images/test.raw,size=32,format=raw \ | |
--graphics 'none' \ | |
--initrd-inject 'rhcos.ks' \ | |
--cdrom /root/rhcos.iso \ | |
--memory '1536' \ | |
--name test \ | |
--os-variant 'rhel7' \ | |
--extra-args="ks=file:/root/rhcos.ks console=tty0 console=ttyS0,115200n8" | |
virt-install \ | |
--name guest1-rhel7 \ | |
--memory 1536 \ | |
--vcpus 2 \ | |
--disk size=32 \ | |
--location 'http://10.0.0.4:8080/content/dist/rhel/server/7/7.6/x86_64/kickstart' \ | |
--os-variant rhel7 \ | |
--initrd-inject /root/rhcos.ks \ | |
--extra-args="ks=file:/root/rhcos.ks console=tty0 console=ttyS0,115200n8" | |
virt-install \ | |
--name guest3-rhcos \ | |
--memory 2048 \ | |
--vcpus 2 \ | |
--location /var/lib/libvirt/images//rhcos-410.8.20190429.0-installer.iso \ | |
--disk /var/lib/libvirt/images/rhcos3.raw,size=32,format=raw \ | |
--os-variant rhel7 \ | |
--extra-args="console=tty0 console=ttyS0,115200n8" \ | |
--transient |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment