This is one of a suite of OpenTofu related actions - find them at dflook/terraform-github-actions.
Retrieves the root-level outputs from an OpenTofu remote state.
-
backend_type
The name of the OpenTofu plugin used for backend state
- Type: string
- Required
-
workspace
OpenTofu workspace to get the outputs for
- Type: string
- Optional
- Default:
default
-
backend_config
List of OpenTofu backend config values, one per line.
with: backend_config: token=${{ secrets.BACKEND_TOKEN }}
- Type: string
- Optional
-
backend_config_file
List of OpenTofu backend config files to use, one per line. Paths should be relative to the GitHub Actions workspace
with: backend_config_file: prod.backend.tfvars
- Type: string
- Optional
-
TERRAFORM_CLOUD_TOKENS
API tokens for cloud hosts, of the form
<host>=<token>
. Multiple tokens may be specified, one per line. These tokens may be used with theremote
backend.e.g:
env: TERRAFORM_CLOUD_TOKENS: app.terraform.io=${{ secrets.TF_CLOUD_TOKEN }}
With other registries:
env: TERRAFORM_CLOUD_TOKENS: | app.terraform.io=${{ secrets.TF_CLOUD_TOKEN }} tofu.example.com=${{ secrets.TF_REGISTRY_TOKEN }}
- Type: string
- Optional
An output will be created for each root-level output in the OpenTofu remote state.
For example, with a remote state that has an output created using:
output "service_hostname" {
value = "example.com"
}
Running this action will produce a service_hostname
output with the same value.
See tofu-output for details.
This example sends a request to a url that has previously been provisioned by OpenTofu, by fetching the url from the remote state in S3.
name: Send request
on:
push:
branches:
- main
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
jobs:
get_remote_state:
runs-on: ubuntu-latest
name: Run Test
steps:
- name: Get remote state
uses: dflook/tofu-remote-state@v1
id: remote-state
with:
backend_type: s3
backend_config: |
bucket=terraform-github-actions
key=tofu-remote-state
region=eu-west-2
- name: Send request
run: |
curl "${{ steps.remote-state.outputs.url }}"