1
1
mirror of https://github.com/adammck/terraform-inventory synced 2024-11-26 07:43:46 +01:00
Terraform State → Ansible Dynamic Inventory
Go to file
Adam Mckaig 47c0c9f64c Rename ENV var to TF_STATE
The old one is still supported.
2015-06-05 00:17:23 -04:00
fixtures Update fixtures 2015-06-05 00:03:42 -04:00
homebrew Add Homebrew formula 2015-02-09 16:51:45 -05:00
.gitignore Add example.tf with DO resource 2015-06-04 22:41:22 -04:00
cli_test.go Refactor to remove Terraform dependency 2015-02-09 16:37:30 -05:00
cli.go Add Digital Ocean support 2015-06-04 22:43:56 -04:00
main.go Rename ENV var to TF_STATE 2015-06-05 00:17:23 -04:00
parser_test.go Remove crap test 2015-06-05 00:07:57 -04:00
parser.go Prefer public IP if available 2015-06-05 00:03:59 -04:00
README.md Rename ENV var to TF_STATE 2015-06-05 00:17:23 -04:00
version_test.go Add version info to binaries 2015-02-09 16:37:43 -05:00
version.go Add version info to binaries 2015-02-09 16:37:43 -05:00

Terraformed Inventory

This is a little Go app which generates an dynamic Ansible ansible inventory from a [Terraform] tf state file. It allows one to spawn a bunch of VMs with Terraform, then (re-)provision them with Ansible. It's pretty neat.

Currently, only AWS and DigitalOcean are supported.

Installation

On OSX, install it with Homebrew:

brew install https://raw.github.com/adammck/terraform-inventory/master/homebrew/terraform-inventory.rb

This is only a tiny tool, so it's not in the main Homebrew repo. Feel free to add it, if you think that would be useful.

Usage

Ansible doesn't (seem to) support calling the inventory script with parameters, so you can specify the path to the state file using the TF_STATE environment variable, like so:

TF_STATE=deploy/terraform.tfstate ansible-playbook --inventory-file=terraform-inventory deploy/playbook.yml

Alternately, you can create a little shell script and call that. Something like:

#!/bin/bash
terraform-inventory $@ deploy/terraform.tfstate

Then run Ansible with the script as an inventory:

ansible-playbook --inventory-file=bin/inventory deploy/playbook.yml

Development

It's just a Go app, so the usual:

go get github.com/adammck/terraform-inventory
cd $GOPATH/adammck/terraform-inventory
go build

To test against an example statefile, run:

terraform-inventory --list fixtures/example.tfstate
terraform-inventory --host=web-aws fixtures/example.tfstate

To update the fixtures, populate fixtures/secrets.tfvars with your DO and AWS account details, and run fixtures/update. You probably don't need to do this.

License

MIT.