Suppose I want to provision a simple stack in any of several public clouds from a single configuration. Will any existing IaC tools do this?
For example:
- a virtual network (VPC, VNET)
- one small* Ubuntu instance on the latest Xenial image from Canonical with a public IP (EC2, VM, GCE)
- one big* server on the latest Trusty image from Canonical
- an internet gateway (IGW)
I can do this easily using Terraform or Ansible. But, per my current understanding, this would be a separate Ansible playbooks or Terraform configurations for each cloud environment (AWS, Azure, GCP).
Does a tool exist that would allow me to point to a single configuration and pass the cloud in which to provision the stack as an option.
i.e.
toolname create --config=my_simple_stack --provider=azure
or
toolname create --config=my_simple_stack --provider=gcp
Then if my_simple_stack configuration needed to change, the change could be made in one place rather than three.
* sizes being ballpark as I realize that available VM sizes are not necessarily consistent across providers. So small might be 2+ core / 2+ GB RAM and big might be 16+ core / 16+ GB RAM depending on what the provider offers.