Skip to content

Instantly share code, notes, and snippets.

@goldenprifti
Created September 15, 2022 21:32
Show Gist options
  • Save goldenprifti/732af304c4192000531c7823c0c1ee3d to your computer and use it in GitHub Desktop.
Save goldenprifti/732af304c4192000531c7823c0c1ee3d to your computer and use it in GitHub Desktop.
#version=OL8
# Reboot after installation
reboot
# Use graphical install
text
repo --name="BaseOS" --baseurl=https://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/x86_64/
repo --name="AppStream" --baseurl=https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/
%packages
@^server-product-environment
cloud-init
jq
%end
# Keyboard layouts
keyboard --xlayouts='us'
# System language
lang en_US.UTF-8
%pre
FIRST_INTERFACE=$(ip link | grep BROADCAST | grep "state UP" | awk 'NR==1' | awk '{print$2}' | tr -d "\:")
SECOND_INTERFACE=$(ip link | grep BROADCAST | grep "state UP" | awk 'NR==2' | awk '{print$2}' | tr -d "\:")
%end
# Network information
network --bootproto=dhcp --device=$FIRST_INTERFACE --ipv6=auto --activate
network --bootproto=dhcp --device=$SECOND_INTERFACE --ipv6=auto
network --hostname=pxehost
# Use network installation
url --url="https://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/x86_64/"
# Run the Setup Agent on first boot
firstboot --enable
%pre
lsblk --bytes | grep -v nvme | grep disk | awk '{print$4,$1}' | sort -n | head -2 | awk '{print$2}' | tr '\n' ',' | awk '{print"ignoredisk --only-use="$1}'| sed 's/,$/\n/' > /tmp/part-include
%end
# === include partitioning scheme generated in pre ===
%include /tmp/part-include
# ====================================================
#SMALLEST_DISKS=$(lsblk | grep -v nvme | grep disk | awk '{print$4,$1}' | sort | head -2 | awk '{print$2}' | tr '\n' ',' | sed 's/,$/\n/')
#ignoredisk --only-use=$SMALLEST_DISKS
# System bootloader configuration
bootloader --append=" console=ttyS1,115200n8 crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --none --initlabel
# Disk partitioning information
part raid.971 --fstype="mdmember" --ondisk=sda --size=4100
part raid.564 --fstype="mdmember" --ondisk=sdb --size=2050
part raid.978 --fstype="mdmember" --ondisk=sdb --size=4100
part raid.571 --fstype="mdmember" --ondisk=sda --size=2050
part raid.1283 --fstype="mdmember" --ondisk=sda --size=106560 --grow
part raid.1290 --fstype="mdmember" --ondisk=sdb --size=106560 --grow
raid swap --device=swap --fstype="swap" --level=RAID1 raid.971 raid.978
raid /boot --device=boot --fstype="ext3" --level=RAID1 --label=boot raid.564 raid.571
raid / --device=root --fstype="xfs" --level=RAID1 raid.1283 raid.1290
#
# System timezone
timezone America/New_York --isUtc
# Root password
rootpw --iscrypted $6$UBwS1zYddqk2huZ1$2p3vhD0R0/IcZShZTuxWmeiQ1ZnF56UGB.wuNJeyAKzRreHqUaZAOYXCMUA5BosZ2nkogllPIP08udJu.d9q0.
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
%post
curl -s https://metadata.platformequinix.com/metadata -o /tmp/metadata
curl -s http://86.109.7.103/pxeboot/OL8/metal_cloud_init.cfg -o /etc/cloud/cloud.cfg
echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
echo "alias bond0 bonding" > /etc/modprobe.d/bonding.conf
echo "options bond0 mode=4 miimon=100 downdelay=200 updelay=200 xmit_hash_policy=layer3+4 lacp_rate=1" >> /etc/modprobe.d/bonding.conf
FIRST_INTERFACE=$(ip link | grep BROADCAST | grep "state UP" | awk 'NR==1' | awk '{print$2}' | tr -d "\:")
SECOND_INTERFACE=$(ip link | grep BROADCAST | grep "state UP" | awk 'NR==2' | awk '{print$2}' | tr -d "\:")
echo "MASTER=bond0" > /etc/sysconfig/network-scripts/ifcfg-$FIRST_INTERFACE
echo "DEVICE="$FIRST_INTERFACE >> /etc/sysconfig/network-scripts/ifcfg-$FIRST_INTERFACE
echo "SLAVE=yes" >> /etc/sysconfig/network-scripts/ifcfg-$FIRST_INTERFACE
echo "ONBOOT=yes" >> /etc/sysconfig/network-scripts/ifcfg-$FIRST_INTERFACE
echo "BOOTPROTO=none" >> /etc/sysconfig/network-scripts/ifcfg-$FIRST_INTERFACE
echo "MASTER=bond0" > /etc/sysconfig/network-scripts/ifcfg-$SECOND_INTERFACE
echo "DEVICE="$SECOND_INTERFACE >> /etc/sysconfig/network-scripts/ifcfg-$SECOND_INTERFACE
echo "SLAVE=yes" >> /etc/sysconfig/network-scripts/ifcfg-$SECOND_INTERFACE
echo "ONBOOT=yes" >> /etc/sysconfig/network-scripts/ifcfg-$SECOND_INTERFACE
echo "BOOTPROTO=none" >> /etc/sysconfig/network-scripts/ifcfg-$SECOND_INTERFACE
cat > /etc/sysconfig/network-scripts/ifcfg-bond0 << EOL
Generated by post section of kickstart
TYPE=Bond
NAME=bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
BONDING_OPTS="mode=4 miimon=100 downdelay=200 updelay=200"
DNS1=147.75.207.207
DNS2=147.75.207.208
EOL
cp /etc/sysconfig/network-scripts/ifcfg-bond0 /etc/sysconfig/network-scripts/ifcfg-bond0:0
sed -i -e '/^NAME=bond0/s/^.*$/NAME=bond0:0/' /etc/sysconfig/network-scripts/ifcfg-bond0:0
sed -i -e '/^DEVICE=bond0/s/^.*$/DEVICE=bond0:0/' /etc/sysconfig/network-scripts/ifcfg-bond0:0
jq -r '.network.addresses[] | select((.public==true) and .address_family==4) | "IPADDR="+.address' /tmp/metadata >> /etc/sysconfig/network-scripts/ifcfg-bond0
jq -r '.network.addresses[] | select((.public==true) and .address_family==4) | "NETMASK="+.netmask' /tmp/metadata >> /etc/sysconfig/network-scripts/ifcfg-bond0
jq -r '.network.addresses[] | select((.public==true) and .address_family==4) | "GATEWAY="+.gateway' /tmp/metadata >> /etc/sysconfig/network-scripts/ifcfg-bond0
jq -r '.network.addresses[] | select((.public==false) and .address_family==4) | "IPADDR="+.address' /tmp/metadata >> /etc/sysconfig/network-scripts/ifcfg-bond0:0
jq -r '.network.addresses[] | select((.public==false) and .address_family==4) | "NETMASK="+.netmask' /tmp/metadata >> /etc/sysconfig/network-scripts/ifcfg-bond0:0
jq -r '.network.addresses[] | select((.public==false) and .address_family==4) | "GATEWAY="+.gateway' /tmp/metadata >> /etc/sysconfig/network-scripts/ifcfg-bond0:0
jq -r '.network.addresses[] | select((.public==false) and .address_family==4) | "10.0.0.0/8 via "+.gateway+" dev bond0:0"' /tmp/metadata > /etc/sysconfig/network-scripts/route-bond0
hostnamectl set-hostname $(jq -r '.hostname' /tmp/metadata)
%end
%post --nochroot
hostnamectl set-hostname $(jq -r '.hostname' /tmp/metadata)
hostnamectl --pretty set-hostname $(jq -r '.hostname' /tmp/metadata)
cp /etc/hostname /mnt/sysimage/etc/hostname
cp /etc/machine-info /mnt/sysimage/etc/machine-info
%end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment