Dependencies: on Debian systems, you need to install the following packages: coreutils dpkg-dev findutils fuse fuseiso isolinux libvirt-clients openssh-client openssl rsync virtinst xmlstarlet xorriso libjson-perl Download Debian stable's netinst ISO image and verify its integrity: ~$ ./download-iso --arch=amd64 --rsync-host=ftp.se.debian.org Verifying integrity (OpenPGP signature on SHA-512 manifest)... gpgv: Signature made Sun 18 Sep 2016 06:23:45 PM CEST gpgv: using RSA key DA87E80D6294BE9B gpgv: Good signature from "Debian CD signing key " Verifying integrity (SHA-512 checksum)... OK ./dist/debian-8.6.0-amd64-netinst.iso Create a new transient virtual machine: ~$ ./tdfvm-install \ --ssh=guilhem@falco.documentfoundation.org \ --iso=./dist/debian-8.6.0-amd64-netinst.iso \ -u$USER -p --authorized-keys=$HOME/.ssh/authorized_keys \ -o ./vm170 \ --memory=2048 \ --disk=/var/lib/libvirt/images/vm170.img,size=12,format=raw,cache=none,io=native \ --network=network=default \ --graphics=spice,listen=socket \ --transient \ vm170 [...] Salt minion MD5 fingerprint: ce:1f:7c:28:ad:65:0b:b6:2c:ab:ad:6a:f6:2d:71:fb SSH hostkey fingerprints: 256 SHA256:mYzCFf8SRQFqFOMjoqssWOtjFP79q64iNx5j7PnQYBQ /etc/ssh/ssh_host_ed25519_key (ED25519) 4096 SHA256:Hc5yXrUn8OCYC489dr7bKqsHKrfveihCPqwlC+jQD/I /etc/ssh/ssh_host_rsa_key (RSA) --ssh=guilhem@falco.documentfoundation.org Connect to falco's remote libvirtd, using SSH2 for transport. (Note: the user needs to be in the 'libvirt' group.) --iso=./dist/debian-8.6.0-amd64-netinst.iso Specify the path to the installation ISO image to preseed. -u$USER, --username=$USER Create new username $USER. -p, --password Prompt for $USER's new password. --authorized-keys=$HOME/.ssh/authorized_keys Copy the given authorized_keys(5) filename to ~$USER/.ssh/authorized_keys on the guest. -o./vm170, --output=./vm170 Optional directory where to export the VM's XML definition and its SSH & Salt key material. Note that the fingerprints are printed before exiting regardless of whether --output is specified or not. --memory=2048 Allocate 2GiB for the guest (a VirtIO memory balloon device is always attached to the guest). --disk=/var/lib/libvirt/images/vm170.img,size=12,format=raw,cache=none,aio=native Use file /var/lib/libvirt/images/vm170.img as storage media for the guest; if the file doesn't exist, a 12GiB raw image is allocated. The disk is attached to a VirtIO bus. See virt-install(1) for details. --network=network=default Connect to the host's "default" virtual network. (Use "--network=none" to disable networking on the guest, and "--network=user" to connect to the LAN using SLIRP.) The NIC is attached to a VirtIO bus. See virt-install(1) for details. --graphics=spice,listen=socket Export the guest's console using the Spice protocol, which can be accessed by connecting to a libvirt generated UNIX socket on the host's filessystem. (Specify "listen=none" instead to forbid non-local connection using `virt-viewer --attach`.) --transient Create a transient libvirt VM.