Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision |
computing:preseed [2024/02/17 17:44] – oemb1905 | computing:preseed [2024/02/17 17:52] – oemb1905 |
---|
Other resources online insisted that I needed to add something like --extra-args="ks=file:/mnt/vms/cfgs/preseed.cfg console=tty0 console=ttyS0,115200" to the recipe as well, but I found that was unnecessary through trial and error. I think that syntax is required for those desiring kickstarter and/or if they are not using standard X passthrough for the shell. I'm not sure though. After I got the installer to recognize configuration file, I then began making a list as to which options worked automatically and which did not. One by one, I checked the stock configuration file here and adjusted my config until everything worked. Below, I've linked the stock configuration file I used as a jumping off point, and the one I developed for my use-case. | Other resources online insisted that I needed to add something like --extra-args="ks=file:/mnt/vms/cfgs/preseed.cfg console=tty0 console=ttyS0,115200" to the recipe as well, but I found that was unnecessary through trial and error. I think that syntax is required for those desiring kickstarter and/or if they are not using standard X passthrough for the shell. I'm not sure though. After I got the installer to recognize configuration file, I then began making a list as to which options worked automatically and which did not. One by one, I checked the stock configuration file here and adjusted my config until everything worked. Below, I've linked the stock configuration file I used as a jumping off point, and the one I developed for my use-case. |
| |
Stock Configuration | * [[https://www.debian.org/releases/stable/example-preseed.txt|Stock Configuration]] |
| * [[https://repo.haacksnetworking.org/haacknet/haackingclub/-/blob/main/scripts/preseeds/external/preseed.cfg?ref_type=heads|My Use-Case]] |
My Use-Case | |
| |
After getting the virt-install recipe and config to perform the desired Debian install, my next task was to automate all of this with a simple script that would create a virtual hard disk of any desired size and a libvirt entry with my desired naming convention in my production VM directory. Here's what I came up with: | After getting the virt-install recipe and config to perform the desired Debian install, my next task was to automate all of this with a simple script that would create a virtual hard disk of any desired size and a libvirt entry with my desired naming convention in my production VM directory. Here's what I came up with: |
| |
echo -n "Please enter the fully qualified hostname:" | #!/bin/bash |
| echo -n "Please enter the fully qualified hostname: " |
read hostname | read hostname |
echo -n "How large (in GB) would you like the virtual hard disk to be?" | echo -n "How large (in GB) would you like the virtual hard disk to be? " |
read size | read size |
qemu-img create -f qcow2 /mnt/vms/production/${hostname}.qcow2 ${size}G | qemu-img create -f qcow2 /mnt/vms/production/${hostname}.qcow2 ${size}G |
sleep 2s | sleep 2s |
echo "Okay, I am now creating the preseed.cfg file for your host …" | echo -n "What do you want the last octet of the IP address for this host to be? " |
mkdir /mnt/vms/cfgs/${hostname} | read ip |
cp -ar /mnt/vms/cfgs/preseed.cfg /mnt/vms/cfgs/${hostname}/preseed.cfg | sleep 2s |
rpl -w "unassigned-hostname" "$hostname" /mnt/vms/cfgs/${hostname}/preseed.cfg | echo "Okay, I am now creating the preseed.cfg file for your host ..." |
rpl -w "unassigned-domain" "$hostname" /mnt/vms/cfgs/${hostname}/preseed.cfg | mkdir /mnt/vms/cfgs/external/${hostname} |
| cp -ar /mnt/vms/cfgs/external/preseed.cfg /mnt/vms/cfgs/external/${hostname}/preseed.cfg |
| rpl -w "unassigned-hostname" "$hostname" /mnt/vms/cfgs/external/${hostname}/preseed.cfg |
| rpl -w "unassigned-domain" "$hostname" /mnt/vms/cfgs/external/${hostname}/preseed.cfg |
| rpl -w "XXX" "$ip" /mnt/vms/cfgs/external/${hostname}/preseed.cfg |
| sleep 2s |
| echo "Alright, I am opening up virt-installer and building your host ..." |
sleep 2s | sleep 2s |
echo "Alright, I am opening up virt-installer and building your host …" | |
virt-install --name=${hostname}.qcow2 \ | virt-install --name=${hostname}.qcow2 \ |
--os-variant=debian11 \ | --os-variant=debian11 \ |
--vcpu=2 \ | --vcpu=2 \ |
--ram=4096 \ | --ram=4096 \ |
--disk path=/mnt/pathtovms/${hostname}.qcow2 \ | --disk path=/mnt/vms/production/${hostname}.qcow2 \ |
--check path_in_use=off \ | --check path_in_use=off \ |
--graphics spice \ | --graphics spice \ |
--location=/mnt/vms/isos/debian-12.4.0-amd64-netinst.iso \ | --location=/mnt/vms/isos/debian-12.4.0-amd64-netinst.iso \ |
--network bridge:br0 \ | --network bridge:br0 \ |
--initrd-inject /mnt/pathtovms/${hostname}/preseed.cfg | --network bridge:virbr1 \ |
| --initrd-inject /mnt/vms/cfgs/external/${hostname}/preseed.cfg |
| |
| For now, I just need really simple Debian VMs as quickly as possible. However, as I wrote this, I began to realize that I could easily expand this script to meet the needs of a variety of different use cases, could add conditionals to it, validation and more. Down the road, I plan to do that, and you can stay up to date with how I expand this script's functionality on the Hacking Club repository: |
| |
For now, I just need really simple Debian VMs as quickly as possible. However, as I wrote this, I began to realize that I could easily expand this script to meet the needs of a variety of different use cases, could add conditionals to it, validation and more. Down the road, I plan to do that, and you can stay up to date with how I expand this script's functionality on the repository. Well, after all that, I deleted everything and ran the script fresh from top to bottom and tested that everything worked. No more waiting for the jenky X passthrough feedback or putting in details that never/rarely change. It's all hot and ready! | * [[https://repo.haacksnetworking.org/haacknet/haackingclub/-/tree/main/scripts/preseeds?ref_type=heads|Preseed Project]] |
| |
--- //[[jonathan@haacksnetworking.org|oemb1905]] 2024/02/17 17:42// | --- //[[jonathan@haacksnetworking.org|oemb1905]] 2024/02/17 17:42// |