Caution
This plugin is still in development and is not yet suitable for production usage.
A Buildkite plugin for processing Terraform working directories, enabling you to perform operations such as plan and apply across your infrastructure. Features include support for looping over multiple working directories, Open Policy Agent validation checks against Terraform plans, and rich Buildkite annotations that detail the success or failure of operations.
This project follows the Standard Go Project Layout
Interested in contributing? Please see our Contributing Guide for development setup, coding standards, and workflow information.
Add the following lines to your pipeline.yml:
steps:
- label: ":terraform: Plan infrastructure"
plugins:
- cultureamp/terraform#v0.1.0:
mode: plan
working:
directories:
parent_directory: ./ops/cdktf.out/stacks
name_regex: "^bootstrap"
validations:
- opa:
bundle: ./policies
query: "data.terraform.allow"
outputs:
- buildkite_annotation:
template: ./path/to/go-template
context: ${STEP_ENVIRONMENT}
vars:
- cluster_name: ${CLUSTER_NAME}
computed_vars:
- name: namespace
from: working_dir
regex: ^[^.]+\\.(.+)\\.[^.]+$Operation mode for the plugin. Supported values:
plan- Run terraform planapply- Run terraform apply
Configuration for the working directories containing Terraform configurations.
Configuration for multiple working directories:
parent_directory(string) - Parent directory containing Terraform configurationsname_regex(string) - Regular expression to filter directory namesartifact(string) - Artifact path containing Terraform configurations
Single working directory path (alternative to directories).
List of validation adapters:
OPA (Open Policy Agent) validation configuration:
bundle(Required, string) - OPA bundle path or URL for policy validationquery(Required, string) - OPA query to evaluatecondition(string) - Condition to determine if policy results pass or fail
List of output adaptors:
Buildkite pipeline annotation configuration:
template(string) - Template for formatting the outputcontext(string) - Context for the output formattingvars(array) - Variables to be used in output formattingcomputed_vars(array) - Variables computed from Terraform output
Terraform execution options:
exec_path(string) - Path to the Terraform executableinit_options(object) - Options for terraform init commandplugin_dir(Required, string) - Directory containing Terraform pluginsget_plugins(Required, boolean) - Whether to automatically download plugins