Skip to content

Latest commit

 

History

History
321 lines (256 loc) · 18.6 KB

DOCS.md

File metadata and controls

321 lines (256 loc) · 18.6 KB

Description

This plugin enables you to run Terraform against providers in a Vela pipeline.

Source Code: https://github.com/go-vela/vela-terraform

Registry: https://hub.docker.com/r/target/vela-terraform

Usage

NOTE:

Users should refrain from using latest as the tag for the Docker image.

It is recommended to use a semantically versioned tag instead.

Sample of adding installing terraform version:

steps:
  - name: apply
    image: target/vela-terraform:latest
    pull: always
    parameters:
      action: apply
      auto_approve: true # Required for versions of Terraform 0.12.x
      version: 0.11.7

Sample of adding init options to Terraform configuration:

steps:
  - name: apply
    image: target/vela-terraform:latest
    pull: always
    parameters:
      action: apply
      auto_approve: true # Required for versions of Terraform 0.12.x
      init_options:
        get_plugins: true

Sample of applying Terraform configuration:

steps:
  - name: apply
    image: target/vela-terraform:latest
    pull: always
    parameters:
      action: apply
      auto_approve: true # Required for versions of Terraform 0.12.x

Sample of destroying Terraform configuration:

steps:
  - name: destroy
    image: target/vela-terraform:latest
    pull: always
    parameters:
      action: destroy
      auto_approve: true # Required for versions of Terraform 0.12.x

Sample of formatting Terraform configuration files:

steps:
  - name: fmt
    image: target/vela-terraform:latest
    pull: always
    parameters:
      action: fmt

Sample of planning Terraform configuration:

steps:
  - name: plan
    image: target/vela-terraform:latest
    pull: always
    parameters:
      action: plan

Sample of validating Terraform configuration:

steps:
  - name: validate
    image: target/vela-terraform:latest
    pull: always
    parameters:
      action: validate

Secrets

NOTE: Users should refrain from configuring sensitive information in your pipeline in plain text.

Internal

Users can use Vela internal secrets to substitute these sensitive values at runtime:

steps:
  - name: apply
    image: target/vela-terraform:latest
    pull: always
+   secrets: [ terraform_username, terraform_password ]
    parameters:
      action: apply
      auto_approve: true # Required for versions of Terraform 0.12.x
-     username: octocat
-     password: superSecretPassword

This example will add the secrets to the apply step as environment variables:

  • TERRAFORM_USERNAME=<value>
  • TERRAFORM_PASSWORD=<value>

External

The plugin accepts the following files for authentication:

Parameter Volume Configuration
password /vela/parameters/terraform/password, /vela/secrets/terraform/password
username /vela/parameters/terraform/username, /vela/secrets/terraform/username

Users can use Vela external secrets to substitute these sensitive values at runtime:

steps:
  - name: apply
    image: target/vela-terraform:latest
    pull: always
    parameters:
      action: apply
      auto_approve: true # Required for versions of Terraform 0.12.x
-     username: octocat
-     password: superSecretPassword

This example will read the secret values in the volume stored at /vela/secrets/

Parameters

NOTE:

The plugin supports reading all parameters via environment variables or files.

Any values set from a file take precedence over values set from the environment.

Terraform commands will be invoked in the current directory by default.

The following parameters are used to configure the image:

Name Description Required Default Environment Variables
action action to perform with Terraform true N/A PARAMETER_ACTION
TERRAFORM_ACTION
init_options options to use for Terraform init operation false N/A PARAMETER_INIT_OPTIONS
TERRAFORM_INIT_OPTIONS
log_level set the log level for the plugin true info PARAMETER_LOG_LEVEL
TERRAFORM_LOG_LEVEL
machine netrc machine name to communicate with true github.com PARAMETER_MACHINE
TERRAFORM_MACHINE
VELA_NETRC_MACHINE
password netrc password for authentication true set by Vela PARAMETER_PASSWORD
TERRAFORM_PASSWORD
VELA_NETRC_PASSWORD
username netrc user name for authentication true set by Vela PARAMETER_USERNAME
TERRAFORM_USERNAME
VELA_NETRC_USERNAME
version set the Terraform CLI version true 1.2.7 PARAMETER_VERSION
TERRAFORM_VERSION

The following parameters can be used within the init_options to configure the image:

Name Description Required Default
backend configure the backend for this configuration true N/A
backend_configs this is merged with what is in the configuration file true N/A
force_copy suppress prompts about copying state data true N/A
from_module copy the contents of the given module into the target directory before initialization true N/A
get download any modules for this configuration true N/A
get_plugins download any missing plugins for this configuration true N/A
input ask for input for variables if not directly set true N/A
lock lock the state file when locking is supported false N/A
lock_timeout duration to retry a state lock false N/A
no_color disables colors in output false N/A
plugin_dirs directory containing plugin binaries; overrides all default search paths for plugins false N/A
reconfigure reconfigure the backend, ignoring any saved configuration false N/A
upgrade install the latest version allowed within configured constraints false N/A
verify_plugins verify the authenticity and integrity of automatically downloaded plugins false N/A

Apply

The following parameters are used to configure the apply action:

Command uses Terraform CLI command defaults if not overridden in config.

Name Description Required Default Environment Variables
auto_approve skip interactive approval of applying resources false false PARAMETER_AUTO_APPROVE
TERRAFORM_AUTO_APPROVE
backup path to backup the existing state file false N/A PARAMETER_BACKUP
TERRAFORM_BACKUP
directory the directory containing Terraform files to apply false . PARAMETER_DIRECTORY
TERRAFORM_DIRECTORY
lock lock the state file when locking is supported false false PARAMETER_LOCK
TERRAFORM_LOCK
lock_timeout duration to retry a state lock false N/A PARAMETER_LOCK_TIMEOUT
TERRAFORM_LOCK_TIMEOUT
no_color disables colors in output false false PARAMETER_NO_COLOR
TERRAFORM_NO_COLOR
parallelism number of concurrent operations as Terraform walks its graph false N/A PARAMETER_PARALLELISM
TERRAFORM_PARALLELISM
refresh update state prior to checking for differences false false PARAMETER_REFRESH
TERRAFORM_REFRESH
state path to read and save state false N/A PARAMETER_STATE
TERRAFORM_STATE
state_out path to write updated state file false N/A PARAMETER_STATE_OUT
TERRAFORM_STATE_OUT
target resource to target false N/A PARAMETER_TARGET
TERRAFORM_TARGET
vars a map of variables to pass to the Terraform (<key>=<value>) false N/A PARAMETER_VARS
TERRAFORM_VARS
var_files a list of var files to use false N/A PARAMETER_VAR_FILES
TERRAFORM_VAR_FILES

Destroy

The following parameters are used to configure the destroy action:

Command uses Terraform CLI command defaults if not overridden in config.

Name Description Required Default Environment Variables
auto_approve skip interactive approval of destroying resources false false PARAMETER_AUTO_APPROVE
TERRAFORM_AUTO_APPROVE
backup path to backup the existing state file false N/A PARAMETER_BACKUP
TERRAFORM_BACKUP
directory the directory containing Terraform files to destroy false . PARAMETER_DIRECTORY
TERRAFORM_DIRECTORY
lock lock the state file when locking is supported false false PARAMETER_LOCK
TERRAFORM_LOCK
lock_timeout duration to retry a state lock false N/A PARAMETER_LOCK_TIMEOUT
TERRAFORM_LOCK_TIMEOUT
no_color disables colors in output false false PARAMETER_NO_COLOR
TERRAFORM_NO_COLOR
parallelism number of concurrent operations as Terraform walks its graph false N/A PARAMETER_PARALLELISM
TERRAFORM_PARALLELISM
refresh update state prior to checking for differences false false PARAMETER_REFRESH
TERRAFORM_REFRESH
state path to read and save state false N/A PARAMETER_STATE
TERRAFORM_STATE
state_out path to write updated state file false N/A PARAMETER_STATE_OUT
TERRAFORM_STATE_OUT
target resource to target false N/A PARAMETER_TARGET
TERRAFORM_TARGET
vars a map of variables to pass to the Terraform (<key>=<value>) false N/A PARAMETER_VARS
TERRAFORM_VARS
var_files a list of var files to use false N/A PARAMETER_VAR_FILES
TERRAFORM_VAR_FILES

Format

The following parameters are used to configure the fmt action:

Command uses Terraform CLI command defaults if not overridden in config.

Name Description Required Default Environment Variables
check validate if the input is formatted false false PARAMETER_CHECK
TERRAFORM_CHECK
diff diffs of formatting changes false false PARAMETER_DIFF
TERRAFORM_DIFF
directory the directory containing Terraform files to format false . PARAMETER_DIRECTORY
TERRAFORM_DIRECTORY
list list files whose formatting differs false false PARAMETER_LIST
TERRAFORM_LIST
write write result to source file instead of STDOUT false false PARAMETER_WRITE
TERRAFORM_WRITE

Plan

The following parameters are used to configure the plan action:

Command uses Terraform CLI command defaults if not overridden in config.

Name Description Required Default Environment Variables
destroy destroy all resources managed by the given configuration and state false false PARAMETER_DESTROY
TERRAFORM_DESTROY
detailed_exit_code return detailed exit codes when the command exits false false PARAMETER_DETAILED_EXIT_CODE
TERRAFORM_DETAILED_EXIT_CODE
directory the directory containing Terraform files to plan false . PARAMETER_DIRECTORY
TERRAFORM_DIRECTORY
input ask for input for variables if not directly set false false PARAMETER_INPUT
TERRAFORM_INPUT
lock lock the state file when locking is supported false false PARAMETER_LOCK
TERRAFORM_LOCK
lock_timeout duration to retry a state lock false N/A PARAMETER_LOCK_TIMEOUT
TERRAFORM_LOCK_TIMEOUT
module_depth specifies the depth of modules to show in the output false N/A PARAMETER_MODULE_DEPTH
TERRAFORM_MODULE_DEPTH
no_color disables colors in output false false PARAMETER_NO_COLOR
TERRAFORM_NO_COLOR
parallelism number of concurrent operations as Terraform walks its graph false N/A PARAMETER_PARALLELISM
TERRAFORM_PARALLELISM
refresh update state prior to checking for differences false false PARAMETER_REFRESH
TERRAFORM_REFRESH
state path to read and save state false N/A PARAMETER_STATE
TERRAFORM_STATE
target resource to target false N/A PARAMETER_TARGET
TERRAFORM_TARGET
vars a map of variables to pass to the Terraform (<key>=<value>) false N/A PARAMETER_VARS
TERRAFORM_VARS
var_files a list of var files to use false N/A PARAMETER_VAR_FILES
TERRAFORM_VAR_FILES

Validate

The following parameters are used to configure the validate action:

Command uses Terraform CLI command defaults if not overridden in config.

Name Description Required Default Environment Variables
check_variables command will check whether all required variables have been specified false false PARAMETER_CHECK_VARIABLES
TERRAFORM_CHECK_VARIABLES
directory the directory containing Terraform files to validate false . PARAMETER_DIRECTORY
TERRAFORM_DIRECTORY
no_color disables colors in output false false PARAMETER_NO_COLOR
TERRAFORM_NO_COLOR
vars a map of variables to pass to the Terraform (<key>=<value>) false N/A PARAMETER_VARS
TERRAFORM_VARS
var_files a list of var files to use false N/A PARAMETER_VAR_FILES
TERRAFORM_VAR_FILES

Template

COMING SOON!

Troubleshooting

You can start troubleshooting this plugin by tuning the level of logs being displayed:

steps:
  - name: apply
    image: target/vela-terraform:latest
    pull: always
    parameters:
      action: apply
      auto_approve: true
+     log_level: trace

You can also instruct the Terraform CLI to output verbose logging:

steps:
  - name: apply
    image: target/vela-terraform:latest
    pull: always
+   environment:
+     TF_LOG: TRACE
    parameters:
      action: apply
      auto_approve: true

Below are a list of common problems and how to solve them: