2014-09-19 23:34:41 +02:00
|
|
|
# Terraformed Inventory
|
|
|
|
|
2014-09-24 20:47:37 +02:00
|
|
|
This is a little Go app which generates an dynamic [Ansible] [ansible] inventory
|
2015-06-05 05:17:39 +02:00
|
|
|
from a [Terraform] [tf] state file. It allows one to spawn a bunch of VMs with
|
2015-06-03 23:44:14 +02:00
|
|
|
Terraform, then (re-)provision them with Ansible. It's pretty neat.
|
2014-09-24 20:47:37 +02:00
|
|
|
|
2015-06-05 05:17:39 +02:00
|
|
|
Currently, only **AWS** and **DigitalOcean** are supported.
|
|
|
|
|
2014-09-24 20:47:37 +02:00
|
|
|
|
2015-02-09 22:51:45 +01:00
|
|
|
# Installation
|
|
|
|
|
|
|
|
On OSX, install it with Homebrew:
|
|
|
|
|
|
|
|
brew install https://raw.github.com/adammck/terraform-inventory/master/homebrew/terraform-inventory.rb
|
2014-09-24 20:47:37 +02:00
|
|
|
|
2015-02-09 22:51:45 +01:00
|
|
|
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.
|
2014-09-24 20:47:37 +02:00
|
|
|
|
2015-02-09 22:51:45 +01:00
|
|
|
|
|
|
|
## Usage
|
2014-09-24 20:47:37 +02:00
|
|
|
|
2015-05-27 20:10:43 +02:00
|
|
|
Ansible doesn't (seem to) support calling the inventory script with parameters,
|
2015-06-04 16:20:16 +02:00
|
|
|
so you can specify the path to the state file using the `TI_TFSTATE` environment
|
|
|
|
variable, like so:
|
2015-05-27 20:10:43 +02:00
|
|
|
|
2015-06-05 06:03:42 +02:00
|
|
|
TI_TFSTATE=deploy/terraform.tfstate ansible-playbook --inventory-file=terraform-inventory deploy/playbook.yml
|
2015-05-27 20:10:43 +02:00
|
|
|
|
|
|
|
Alternately, you can create a little shell script and call that. Something like:
|
2014-09-24 20:47:37 +02:00
|
|
|
|
|
|
|
#!/bin/bash
|
2014-09-25 00:54:39 +02:00
|
|
|
terraform-inventory $@ deploy/terraform.tfstate
|
2014-09-24 20:47:37 +02:00
|
|
|
|
2014-09-25 00:54:39 +02:00
|
|
|
Then run Ansible with the script as an inventory:
|
|
|
|
|
|
|
|
ansible-playbook --inventory-file=bin/inventory deploy/playbook.yml
|
2014-09-19 23:34:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
## Development
|
|
|
|
|
2015-02-09 22:51:45 +01:00
|
|
|
It's just a Go app, so the usual:
|
2014-09-19 23:34:41 +02:00
|
|
|
|
2015-02-09 22:51:45 +01:00
|
|
|
go get github.com/adammck/terraform-inventory
|
|
|
|
cd $GOPATH/adammck/terraform-inventory
|
2014-09-19 23:34:41 +02:00
|
|
|
go build
|
|
|
|
|
2015-06-05 04:43:56 +02:00
|
|
|
To test against an example statefile, run:
|
|
|
|
|
|
|
|
terraform-inventory --list fixtures/example.tfstate
|
|
|
|
terraform-inventory --host=web-aws fixtures/example.tfstate
|
|
|
|
|
2015-06-05 03:48:53 +02:00
|
|
|
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.
|
|
|
|
|
2014-09-19 23:34:41 +02:00
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
MIT.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[ansible]: http://www.ansible.com
|
|
|
|
[tf]: http://www.terraform.io
|