community / community.general / 0.1.1 / module / terraform Manages a Terraform deployment (and plans) Authors: Ryan Scott Brown (@ryansb) preview | supported by communitycommunity.general.terraform (0.1.1) — module
Install with ansible-galaxy collection install community.general:==0.1.1
collections: - name: community.general version: 0.1.1
Provides support for deploying resources with Terraform and pulling resource information back into Ansible.
# 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"
lock: description: - Enable statefile locking, if you use a service that accepts locks (such as S3+DynamoDB) to store your statefile. required: false type: bool state: choices: - planned - present - absent default: present description: - Goal state of given stage/project required: false targets: description: - A list of specific resources to target in this plan/application. The resources selected here will also auto-include any dependencies. required: false plan_file: description: - 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. required: false variables: description: - A group of key-values to override template variables or those in variables files. required: false workspace: default: default description: - The terraform workspace to work with. required: false force_init: default: false description: - 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. required: false type: bool state_file: description: - 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. required: false binary_path: description: - The path of a terraform binary to use, relative to the 'service_path' unless you supply an absolute path. required: false lock_timeout: description: - How long to maintain the lock on the statefile, if you use a service that accepts locks (such as S3+DynamoDB). required: false project_path: description: - The path to the root of the Terraform directory with the vars.tf/main.tf/etc to use. required: true backend_config: description: - A group of key-values to provide at init stage to the -backend-config parameter. required: false variables_file: description: - The path to a variables file for Terraform to fill into the TF configurations. required: false purge_workspace: default: false description: - Only works with state = absent - If true, the workspace will be deleted after the "terraform destroy" action. - The 'default' workspace will not be deleted. required: false type: bool
command: description: Full `terraform` command built by this module, in case you want to re-run the command outside the module or debug a problem. returned: always sample: terraform apply ... type: str outputs: contains: sensitive: description: Whether Terraform has marked this value as sensitive returned: always type: bool type: description: The type of the value (string, int, etc) returned: always type: str value: description: The value of the output as interpolated by Terraform returned: always description: A dictionary of all the TF outputs by their assigned name. Use `.outputs.MyOutputName.value` to access the value. returned: on success sample: '{"bukkit_arn": {"sensitive": false, "type": "string", "value": "arn:aws:s3:::tf-test-bukkit"}' type: complex stdout: description: Full `terraform` command stdout, in case you want to display it or examine the event log returned: always sample: '' type: str