kicktart
Kickstart is very useful to create a automated installation of redhat systems
partitioning
When partitioning your disks you might want to assign disks based on if they are nvme or ssd. Or which size they have. Here I showcase a way of getting device path based on some bash scripting. The bash script takes the small disk as the OS disk and the large disk for vm images. Then using the device path for selecting the bootloader device and for patitioning:
%pre
#!/bin/bash
small_disk=$(lsblk -dnlo NAME,SIZE |grep -v loop | sort -k2 -h -r | head -n2 |cut -d ' ' -f1 | awk -F: 'NR==2 { print "/dev/"$1}')
large_disk=$(lsblk -dnlo NAME,SIZE |grep -v loop | sort -k2 -h -r | head -n2 |cut -d ' ' -f1 | awk -F: 'NR==1 { print "/dev/"$1}')
small_diskpath=$(udevadm info --query=all --name=$small_disk |sed -n 's/S:\s\(disk\/by-path\/.*$\)/\/dev\/\1/p' |head -1)
large_diskpath=$(udevadm info --query=all --name=$large_disk |sed -n 's/S:\s\(disk\/by-path\/.*$\)/\/dev\/\1/p' |head -1)
echo "zerombr" > /tmp/disk_include
echo "clearpart --all --drives=$small_diskpath,$large_diskpath" >> /tmp/disk_include
echo "bootloader --location=mbr --boot-drive=$small_diskpath" >> /tmp/disk_include
echo "part /boot --fstype ext4 --size=1024" >> /tmp/disk_include
echo "part pv.0 --size=1024 --grow --ondisk=$small_diskpath" >> /tmp/disk_include
echo "part pv.1 --size=1024 --grow --ondisk=$large_diskpath" >> /tmp/disk_include
%end
%include /tmp/disk_include
volgroup vg0 pv.0
logvol / --vgname=vg0 --fstype=ext4 --size=20480 --name=lv_root
logvol /var --vgname=vg0 --fstype=ext4 --size=20480 --name=lv_var
logvol /tmp --vgname=vg0 --fstype=ext4 --size=4096 --name=lv_tmp
logvol swap --vgname=vg0 --fstype=ext4 --size=16384 --name=lv_swap
volgroup vg1 pv.1
logvol /vms --vgname=vg1 --fstype=ext4 --size=102400 --name=vms