Here's what I've tried:

## Terraform + libvirt

There's unofficial libvirt provider for terraform. It works, but there are a few gotchas:

- Doesn't support block devices:
https://github.com/dmacvicar/terraform-provider-libvirt/issues/418

- Existing state not being removed:
https://github.com/dmacvicar/terraform-provider-libvirt/issues/423

## Docker machine

- Works quite well
- Isn't supported anymore
- kvm plugin lacks remote qemu+ssh:
https://github.com/dhiltgen/docker-machine-kvm/pull/63