initial commit
This commit is contained in:
55
docs/terraform/ansible-inventory-generation.md
Normal file
55
docs/terraform/ansible-inventory-generation.md
Normal file
@ -0,0 +1,55 @@
|
||||
# Generating a Ansible Inventory File from Terraform
|
||||
|
||||
## Overview
|
||||
|
||||
Often when working with automated deployments you will want to generate a dynamic inventory file for Ansible (usually after your infrastructure has been provisioned). This is a simple snippet to generate an inventory file from Terraform.
|
||||
|
||||
## Terraform Snippet
|
||||
|
||||
First we need to create an ouput variable to hold the inventory file.
|
||||
|
||||
::: code-group
|
||||
|
||||
```hcl [ouputs.tf]
|
||||
output "ansible_inventory_yml" {
|
||||
description = "An Ansible inventory (in YAML format) containing IP addresses as required by the Ansible playbook to configure the servers."
|
||||
value = local.ansible_inventory_yml
|
||||
}
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
Next we will create the local variable that will hold the inventory file.
|
||||
|
||||
::: info
|
||||
|
||||
In this example we are using a DigitalOcean droplet, but you can use any Terraform resource that has an IP address.
|
||||
|
||||
:::
|
||||
|
||||
::: code-group
|
||||
|
||||
```hcl [locals.tf]
|
||||
locals {
|
||||
ansible_inventory_yml = <<-EOF
|
||||
all:
|
||||
hosts:
|
||||
app:
|
||||
ansible_host: ${digitalocean_droplet.server.ipv4_address}
|
||||
EOF
|
||||
}
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::: tip
|
||||
|
||||
It's better to use a local and output variable rather then a local_file as this avoids spurious plan noise when running on CI runners.
|
||||
|
||||
:::
|
||||
|
||||
Once all configured you can run `terraform apply` and the inventory file will be ouput to the console. To create the file you can pipe the output to a file (either in the console or in your CI pipeline).
|
||||
|
||||
```bash
|
||||
terraform output -raw ansible_inventory_yml > ansible-inventory.yml
|
||||
```
|
3
docs/terraform/index.md
Normal file
3
docs/terraform/index.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Terraform Snippets and Musings
|
||||
|
||||
#### [Generating a Ansible Inventory File from Terraform](./ansible-inventory-generation.md)
|
Reference in New Issue
Block a user