terraform - Manages a Terraform deployment (and plans)¶
New in version 2.5.
Synopsis¶
- Provides support for deploying resources with Terraform and pulling resource information back into Ansible.
Parameters¶
Parameter | Choices/Defaults | Comments |
---|---|---|
backend_config
(added in 2.7) |
A group of key-values to provide at init stage to the -backend-config parameter.
|
|
binary_path |
The path of a terraform binary to use, relative to the 'service_path' unless you supply an absolute path.
|
|
force_init
bool |
|
To avoid duplicating infra, if a state file can't be found this will force a `terraform init`. Generally, this should be turned off unless you intend to provision an entirely new Terraform deployment.
|
lock |
Enable statefile locking, if you use a service that accepts locks (such as S3+DynamoDB) to store your statefile.
|
|
lock_timeout |
How long to maintain the lock on the statefile, if you use a service that accepts locks (such as S3+DynamoDB).
|
|
plan_file |
The path to an existing Terraform plan file to apply. If this is not specified, Ansible will build a new TF plan and execute it. Note that this option is required if 'state' has the 'planned' value.
|
|
project_path
required |
The path to the root of the Terraform directory with the vars.tf/main.tf/etc to use.
|
|
purge_workspace
bool (added in 2.7) |
|
Only works with state = absent
If true, the workspace will be deleted after the "terraform destroy" action.
The 'default' workspace will not be deleted.
|
state |
|
Goal state of given stage/project
|
state_file |
The path to an existing Terraform state file to use when building plan. If this is not specified, the default `terraform.tfstate` will be used.
This option is ignored when plan is specified.
|
|
targets |
A list of specific resources to target in this plan/application. The resources selected here will also auto-include any dependencies.
|
|
variables |
A group of key-values to override template variables or those in variables files.
|
|
variables_file |
The path to a variables file for Terraform to fill into the TF configurations.
|
|
workspace
(added in 2.7) |
Default: default
|
The terraform workspace to work with.
|
Examples¶
# Basic deploy of a service
- terraform:
project_path: '{{ project_dir }}'
state: present
# Define the backend configuration at init
- terraform:
project_path: 'project/'
state: "{{ state }}"
force_init: true
backend_config:
region: "eu-west-1"
bucket: "some-bucket"
key: "random.tfstate"
Return Values¶
Common return values are documented here, the following are the fields unique to this module:
Key | Returned | Description | |
---|---|---|---|
command
string
|
always |
Full `terraform` command built by this module, in case you want to re-run the command outside the module or debug a problem.
Sample:
terraform apply ...
|
|
outputs
complex
|
on success |
A dictionary of all the TF outputs by their assigned name. Use `.outputs.MyOutputName.value` to access the value.
Sample:
{"bukkit_arn": {"sensitive": false, "type": "string", "value": "arn:aws:s3:::tf-test-bukkit"}
|
|
sensitive
bool
|
always |
Whether Terraform has marked this value as sensitive
|
|
type
string
|
always |
The type of the value (string, int, etc)
|
|
value
|
always |
The value of the output as interpolated by Terraform
|
|
stdout
string
|
always |
Full `terraform` command stdout, in case you want to display it or examine the event log
|
Status¶
This module is flagged as preview which means that it is not guaranteed to have a backwards compatible interface.
Maintenance¶
This module is flagged as community which means that it is maintained by the Ansible Community. See Module Maintenance & Support for more info.
For a list of other modules that are also maintained by the Ansible Community, see here.
Author¶
- Ryan Scott Brown @ryansb
Hint
If you notice any issues in this documentation you can edit this document to improve it.