Adam,
For a long time, we've had a script that has a variety of "standard sizes" ... the script is messier than I'd like to share, but here's an idea of how it is designed, in case you'd want to do something similar:
> qfvm
Usage: /usr/local/bin/qfvm add <size> <name> [image]
Usage: /usr/local/bin/qfvm capacity
Where command is one of:
add: add a VM
capacity: report on current cluster capacity for various VM sizes
Where size is one of: xs s m l xl xxl
Size RAM CPUs Disk
xs 1G 1 8G
s 2G 1 12G
m 4G 2 16G
l 8G 4 24G
xl 16G 8 32G
xxl 32G 16 64G
Optionally, specify any of the following images as the base for your VM:
default ubuntu-20.04
NOTE: If you want larger than 'xxl' VM, what you might really
want is dedicated hardware. Contact the Ops team to get that
set up.
Example:
/usr/local/bin/qfvm add xs djh0.xxx.xxxxxxxxxx.com
Creates VM named djh0.xxx.xxxxxxxxxx.com with 1G RAM, 1G CPUs, and 8G disk.
If I run the script it then shows me the create command along the way:
NOTE: now I will run this command:
gnt-instance add -s 8G --no-wait-for-sync -B memory=1G,vcpus=1 -o nocloud+ubuntu-20.04 -O dns_nameservers=x.x.x.x --net 0:network=ops,ip=x.x.x.x --tags role:ops-djh,env:ops djh0.ops.xxx.xxxxxxxxxx.com
The tags are used for placement rules, like "don't put multiple instances of role:ops-djh on the same node" or "try to put env:prod on nicer hardware."
If folks are using a more standard modern tool, I'm keen to hear about it.