Skip to content

Warning

You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?

HashiCorp - Setup Terraform

Actions
Sets up Terraform CLI in your GitHub Actions workflow
v1.0.1
Verified creator
Star (1.4K)

Verified

GitHub has manually verified the creator of the action as an official partner organization. For more info see About badges in GitHub Marketplace.

setup-terraform

Continuous Integration Setup Terraform

This action sets up Terraform CLI in your GitHub Actions workflow by:

  • Downloading a specific version of Terraform CLI and adding it to the PATH.
  • Configuring the Terraform CLI configuration file with a Terraform Cloud/Enterprise hostname and API token.
  • Optionally installing a wrapper to wrap subsequent calls of the terraform binary and expose its STDOUT, STDERR, and exit code as outputs named stdout, stderr, and exitcode respectively.

Usage

This action can be run on ubuntu-latest, windows-latest, and macos-latest GitHub Actions runners. When running on windows-latest the shell should be set to Bash.

The default configuration installs the latest version of Terraform CLI and installs the wrapper to wrap subsequent calls to the terraform binary.

steps:
- uses: hashicorp/setup-terraform@v1 

A specific version of Terraform CLI can be installed.

steps:
- uses: hashicorp/setup-terraform@v1 
  with:
    terraform_version: 0.12.24

Credentials for Terraform Cloud (app.terraform.io) can be configured.

steps:
- uses: hashicorp/setup-terraform@v1 
  with:
    cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }}

Credentials for Terraform Enterprise can be configured.

steps:
- uses: hashicorp/setup-terraform@v1 
  with:
    cli_config_credentials_hostname: 'terraform.example.com'
    cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }}

The wrapper installation can be skipped.

steps:
- uses: hashicorp/setup-terraform@v1 
  with:
    terraform_wrapper: false

Subsequent steps can access outputs when the wrapper is installed.

steps:
- uses: hashicorp/setup-terraform@v1

- run: terraform init

- id: plan
  run: terraform plan -no-color

- run: echo ${{ steps.plan.outputs.stdout }}
- run: echo ${{ steps.plan.outputs.stderr }}
- run: echo ${{ steps.plan.outputs.exitcode }}

The outputs can be used in subsequent steps to comment on the pull request:

steps:
- uses: hashicorp/setup-terraform@v1

- run: terraform init

- id: plan
  run: terraform plan -no-color

- uses: actions/[email protected]
  if: github.event_name == 'pull_request'
  env:
    STDOUT: "```${{ steps.plan.outputs.stdout }}```"
  with:
    github-token: ${{ secrets.GITHUB_TOKEN }}
    script: |
      github.issues.createComment({
        issue_number: context.issue.number,
        owner: context.repo.owner,
        repo: context.repo.repo,
        body: process.env.STDOUT
      })

Inputs

The following inputs are supported.

  • cli_config_credentials_hostname - (optional) The hostname of a Terraform Cloud/Enterprise instance to place within the credentials block of the Terraform CLI configuration file.

  • cli_config_credentials_token - (optional) The API token for a Terraform Cloud/Enterprise instance to place within the credentials block of the Terraform CLI configuration file.

  • terraform_version - (optional) The version of Terraform CLI to install. A value of latest will install the latest version of Terraform CLI. Defaults to latest.

  • terraform_wrapper - (optional) Whether or not to install a wrapper to wrap subsequent calls of the terraform binary and expose its STDOUT, STDERR, and exit code as outputs named stdout, stderr, and exitcode respectively. Defaults to true.

Outputs

This action does not configure any outputs directly. However, when the terraform_wrapper input is set to true, the following outputs will be available for subsequent steps that call the terraform binary.

  • stdout - The STDOUT stream of the call to the terraform binary.

  • stderr - The STDERR stream of the call to the terraform binary.

  • exitcode - The exit code of the call to the terraform binary..

License

Mozilla Public License v2.0

Code of Conduct

Code of Conduct

HashiCorp - Setup Terraform is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.

About

Sets up Terraform CLI in your GitHub Actions workflow
v1.0.1

Verified

GitHub has manually verified the creator of the action as an official partner organization. For more info see About badges in GitHub Marketplace.

HashiCorp - Setup Terraform is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.