There is a new generation of tooling developed that tries to integrate different IaaS providers (Azure/AWS/GCE/DigitalOcean) into one "infrastructure codebase". It's dubbed "Cloud Native" and it's supposed to result in "one tool to rule them all". There's Terraform from HashiCorp, InfraKit from Docker, Juju from Canonical, independent Foreman, Pulumi and others.
It's easy to get lost. Which of these tools is best suited to IaaS on premises? Let's suppose you have a bunch of metal servers and you want to provision some VMs there. Let's suppose you don't want VirtualBox/VMWare/ESX/Xen, you want KVM. And on top of that an obvious choice is libvirt. To manage multiple hypervisors we need to connect to the libvirt daemon remotely using connection URI. For KVM we can use qemu+ssh. Let's suppose we set those up using PXE boot. Now we have a bunch of qemu+ssh://
links along with ssh access.
Now we need a central component on top of that to manage resources and some tool that will provision virtual hosts according to some declarative specification.
On top of those VMs I want to run containers, so automatic setup of container orchestration cluster is desired. In addition, some way of attaching storage is desired. At least directly attached block devices or fs mounts.
Any suggestions?
Note: Found a similar question on SO, but for Xen.
Clarification: "best suited" needs metrics. So these are the metrics I'm looking to optimize:
- Zero closed source LOC
- Number of tools if not "All-in-one"
- UI actions to setup 3 master + 5 workers k8s/swarm cluster
- number of commands (for CLI tool)
- number of clicks (for Web based/GUI tool)
- length/size of the config file
- UI actions to install the tool
- UI actions to maintain configuration (preferably none, self-healing infrastructure)