ks-libvirt - Take a Fedora/CentOS/RHEL kickstart file and make a VM
ks-libvirt [options] kickstart-file
At the end of install, if the VM is not shut down with --off and the guest agent is not excluded with --noaddga, the script waits until the VM is up and an IPv4 address is configured; it will clean any previous SSH host keys for that IP and then print the IP, so if you have an SSH key defined, you can do:
ssh -l root $(ks-libvirt
kickstart-file
)
-
--addga | -a
Add qemu-guest-agent to %packages; default is to do this, use --noaddga to disable. Without the agent, the hypvervisor cannot get the IP of the VM (or do other VM management).
-
--anaconda | -A arguments
Additional anaconda boot arguments
-
--arch architecture
Use an alternate CPU architecture (this usually will require additional qemu-system-<arch> to be installed); this probably doesn't work with secureboot
-
--config | -C
config
Config file for defaults; default is $HOME/.virtinst.cf
-
--cpu | -c count
VM CPU cores; default is 1
-
--disk | -d GB
VM disk size in gigabytes; default is 6
-
--disk2 GB
VM second disk size in gigabytes; default is to not use a second disk (this is mostly just useful for testing kickstart RAID handling)
-
--dns DNS-IPs
Set the DNS server(s) (can be specified more than once for multiple servers); default: copy host DNS config when IPv4 address is set
-
--dumpks | -D
Generate a modified kickstart file and dump to standard out (don't build VM)
-
--gw IPv4-gateway
Set the IPv4 gateway
-
--hostname | -h FQDN
Set the hostname; default is to not set unless network is set, then use the VM name
-
--ip IPv4-address/mask
Set the IPv4 address and netmask (in bits, e.g. 10.0.0.1/24); default is to try DHCP (if network needed)
-
--iso | -i
ISO
ISO to boot from; default is pulled from KS or to use URL instead. Handles a local ISO file (will be uploaded to same pool as VM storage if needed), or
pool/volume
for an ISO already in a storage pool. -
--libvirt | -l URL
Connection to libvirt; default is $VIRTSH_DEFAULT_CONNECT_UID or qemu:///system
-
--machine machine
Use an alternate machine type rather than the default (e.g. q35 for x86_64)
-
--mapfile | -m
file
URL map file to use different source repos. The format of the file is one entry per line with a pair of URLs separated by a space. The first URL is the original (which can be a mirrorlist or metalink) followed by a target URL to replace it with (mirrorlist/metalink are turned into direct url entries). The default is
$HOME/.virtinst-map
-
--name | -n name
VM name; default is KS file name minus any leading "ks-"
-
--net | -N interface
Bridge network interface to attach to; default is interface with default route
-
--off | -O
Leave the VM off at the end of install
-
--pool | -p pool
Storage pool name; use pool default by default
-
--os | -o OS
OS name, used to set VM hardware config; default is autodetect
-
--quiet | -q
Be very quiet - only show errors and IP at end
-
--ram | -r MB
VM RAM size in megabytes; default is 2048 unless specified in the KS
-
--screen | -s
Open the VM console screen during install
-
--secureboot | -B
Enable Secure Boot (implies UEFI).
-
--securepath [path]
Specify the path to the Secure Boot loader/NVRAM files (default is
/usr/share/edk2/ovmf
) -
--serial | -S
Add a serial console; default is to do this, use --noserial to disable
-
--ssh
Add found SSH key(s) to the installed system; default is to do this, use --nossh to disable
-
--tpm
Add TPM device
-
--uefi | -u
Use UEFI boot instead of BIOS
-
--vdelete
Delete an existing VM with the same name before creating new (NOTE: will not ask for confirmation!)
-
--verbose | -v
Be more verbose
-
--virtinst | -V arguments
Additional virt-install arguments (can be used more than once)
The KS file is parsed for lines that look like #<tag>:<value>. #include pulls in additional files, while the other options set default values (that can still be overridden on the command line).
Supported tags:
-
#include:
file
Include another file - this can be a full path or relative to the kickstart file itself. HTTP/HTTPS URLs are also supported. Includes can appear more than once, including in included files.
-
#CPU:cores
Number of CPU cores
-
#RAM:MB
RAM size in megabytes
-
#DISK:GB
Disk size in gigabytes
-
#DISK2:GB
Second disk size in gigabytes
-
#ISO:
[pool/]file
ISO file/volume to use for install
-
#OS:OS string
Operating system (only needed if not autodetected)
-
#(NO)SSH:1
Add/don't add SSH keys
-
#(NO)TPM:1
Add/don't add TPM device
-
#(NO)UEFI:1
Use/don't use UEFI boot
Written by Chris Adams
Copyright 2022 Chris Adams. License: GPLv3