I think this could really help people who want to use different cloud constructs like subnets. It sounds like it would help this situation for example:
I’m not sure I fully understand the situation, but if you had a Terraform template backend, you could use it to create an subnet an in AWS VPC for every Juju space or potentially use Terraform’s import feature to import the existing infrastructure.
Another use-case I thought of was if you had applications you were running and you wanted to use a scalable load-balancer that will automatically update your DNS records as it scales, AWS ELB and Route56 DNS would be a natural fit, but I don’t know that it is possible to have Juju spin up machines connected to ELB.
Or what if you wanted to spin up Amazon Lightsail servers instead of EC2 instanaces?
Still, something I realized is that maybe you wouldn’t want to make it specific to Terraform. While Terraform sticks out as the de-facto way to do this kind of provisioning right now, what if some other tool came up later, or what if you wanted to use Chef? Maybe what we need is a way to create Juju cloud plugins that could use any provisioner that they wanted.
It seems like it could be a good idea to design these plugins like Docker volume plugins. The plugin listens on a Unix domain socket ( or a Windows named pipe? ) and serves an HTTP API that Juju uses to instruct the plugin on how to deploy infrastructure.
This would blow open the doors for all kinds of integrations and I think it would remove what may be Juju’s single largest limitation.
It would be a step in the direction of allowing integrations with other services like Spotinst which would allow you, for fault tolerant workloads, to get server hosting at massive scale at incredible discounts.