Terraform 0.4.0 is out, with the remote modules feature! As per my last post, I’ve been playing around with this already, and I thought it was worth showing off my simple example of this feature actually being used.
It’s wrapped up in a way that you can fork my 2 repositories and play with it yourself, and I encourage you to do so
If you take the example VPC from my last post (with the state file committed), you can now pull in the data in another terraform repository like this and then use the outputs it defines like this.
This is pretty neat, and it’ll be super cool to allow multiple teams to work on different layers of the infrastructure, using the consul state store and ACLs, more news on that once I’ve had chance to play with it.
Unfortunately, the credentials file feature didn’t make 0.4.0, and I do math that isn’t possible in master now, so you’ll still need to use my fork if you want to use my examples verbatim.
I’ve written a bunch of modules to power my examples though, most of which work on unpatched terraform, and I thought that I’d list them (in most to least reuseable order) so that you don’t have to dig through all the code or my github to find them :)
- tf_aws_virttype – Match an AMI type (e.g. m3.xlarge) to its virtualization type (e.g. hvm)
- tf_aws_availability_zones – Work out which azs each of your accounts has access to for easy lookup/templating across accounts.
- tf_aws_ubuntu_ami – Look up Ubuntu AMIs
- tf_aws_coreos_ami – Look up the most recent CoreOS AMI
- terraform-vpc – Build out an initial VPC with 2 AZs
- terraform-vpc-nat – Build NAT instances out on top of a VPC made with terraform-vpc
- tf_aws_mesos – Launch a Mesos cluster into a VPC and across multiple AZs
- terraform-aws-coreos-kubernates-cluster – Kubernates cluster on CoreOS (n.b. not yet working out the box, needs patched terraform)