newvm: Add script to run virt-install
For the longest time, whenever I needed to create a new virtual machine, I just used `Ctrl+R` to find the last `virt-install` command I had run and tweaked it for the new machine. At some point, my `~/.zsh_history` overflowed, though, so the command I had been running got lost. To avoid this silliness in the future, I've created a script that runs `virt-manager` for me. As a bonus, it has some configuration flags for the parameters that often vary between machines. For most machines, though, the script can be run as simply as `newvm.sh name`.frigate-exporter
parent
208fadd2ba
commit
056548e3e0
|
@ -0,0 +1,136 @@
|
|||
#!/bin/sh
|
||||
# vim: set sw=4 ts=4 sts=4 et :
|
||||
|
||||
memory=2048
|
||||
vcpus=2
|
||||
disk_size=16
|
||||
kickstart=http://rosalina.pyrocufflink.blue/~dustin/kickstart/fedora.ks
|
||||
fedora=$(rpm -E %fedora)
|
||||
network=network=prod
|
||||
console=true
|
||||
|
||||
usage() {
|
||||
printf 'usage: %s [options] name\n' "${0##*/}"
|
||||
}
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--kickstart)
|
||||
shift
|
||||
kickstart="$1"
|
||||
;;
|
||||
--kickstart=*)
|
||||
kickstart="${1##*=}"
|
||||
;;
|
||||
--memory)
|
||||
shift
|
||||
memory="$1"
|
||||
;;
|
||||
--memory=*)
|
||||
memory="${1#*=}"
|
||||
;;
|
||||
--vcpus)
|
||||
shift
|
||||
vcpus="$1"
|
||||
;;
|
||||
--vcpus=*)
|
||||
vcpus="${1#*=}"
|
||||
;;
|
||||
--location)
|
||||
shift
|
||||
location="$1"
|
||||
;;
|
||||
--location=*)
|
||||
location="${1#*=}"
|
||||
;;
|
||||
--disk-size)
|
||||
shift
|
||||
disk_size="$1"
|
||||
;;
|
||||
--disk=size=*)
|
||||
disk_size="${1#*=}"
|
||||
;;
|
||||
--fedora)
|
||||
shift
|
||||
fedora="$1"
|
||||
;;
|
||||
--fedora=*)
|
||||
shift
|
||||
fedora="${1#*=}"
|
||||
;;
|
||||
--no-console|--noconsole)
|
||||
console=false
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
*)
|
||||
if [ -z "${name}" ]; then
|
||||
name="$1"
|
||||
else
|
||||
usage >&2
|
||||
exit 2
|
||||
fi
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ -z "${name}" ]; then
|
||||
usage >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if [ -z "${LIBVIRT_DEFAULT_URI}" ]; then
|
||||
printf 'LIBVIRT_DEFAULT_URI is not set.\n' >&2
|
||||
printf 'If you want to create a new VM locally, explicitly set '
|
||||
printf 'LIBVIRT_DEFAULT_URI=qemu:///session\n'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf 'Creating %s on %s\n' "${name}" "${LIBVIRT_DEFAULT_URI}"
|
||||
|
||||
if [ -z "${location}" ]; then
|
||||
location=http://dl.fedoraproject.org/pub/fedora/linux/releases/${fedora}/Everything/x86_64/os
|
||||
fi
|
||||
|
||||
if [ -z ${http_proxy+on} ]; then
|
||||
export http_proxy=http://proxy.pyrocufflink.blue:3128
|
||||
printf 'Using default HTTP proxy: %s\n' "${http_proxy}" >&2
|
||||
elif [ -z "${http_proxy}" ]; then
|
||||
printf 'HTTP proxy disabled\n' "${http_proxy}" >&2
|
||||
else
|
||||
printf 'Using HTTP proxy: %s\n' "${http_proxy}" >&2
|
||||
fi
|
||||
|
||||
extra_args="ip=::::${name}::dhcp inst.ks=${kickstart}"
|
||||
if [ -n "${http_proxy}" ]; then
|
||||
extra_args="${extra_args} inst.proxy=${http_proxy}"
|
||||
if [ ${fedora} -lt 40 ]; then
|
||||
extra_args="${extra_args} proxy=${http_proxy}"
|
||||
fi
|
||||
fi
|
||||
extra_args="${extra_args} inst.notmux quiet systemd.show_status=1 console=ttyS0"
|
||||
|
||||
set -- \
|
||||
--name ${name} \
|
||||
--memory ${memory} \
|
||||
--cpu host \
|
||||
--location ${location} \
|
||||
--extra-args "${extra_args}" \
|
||||
--disk pool=default,size=${disk_size},cache=none \
|
||||
--network ${network} \
|
||||
--os-variant fedora$(rpm -E %fedora) \
|
||||
--sound none \
|
||||
--redirdev none \
|
||||
--rng /dev/random \
|
||||
--boot uefi \
|
||||
"$@"
|
||||
|
||||
if $console; then
|
||||
set -- "$@" --autoconsole text
|
||||
else
|
||||
set -- "$@" --noautoconsole --wait -1
|
||||
fi
|
||||
|
||||
exec virt-install "$@"
|
Loading…
Reference in New Issue