GitHub Action automatically copying variables' definitions from a single file to many modules.
- Docker Hub: devopsinfra/action-terraform-copy-vars:latest
- GitHub Packages: ghcr.io/devops-infra/action-terraform-copy-vars:latest
- It's main use will be everywhere where Terraform is used with more than one module in a monorepo.
- Reads file defined with
all_vars_fileand will use whole definitions of variables from it. - For every module matching
dirs_with_moduleswill search files matchingfiles_with_varsand replace matching variables fromall_vars_file. - To not loose the changes combine with my other action devops-infra/action-commit-push.
Perfect for automation workflows and integrates seamlessly with devops-infra/action-commit-push.
This action supports three tag levels for flexible versioning:
vX: latest patch of the major version (e.g.,v1).vX.Y: latest patch of the minor version (e.g.,v1.2).vX.Y.Z: fixed to a specific release (e.g.,v1.2.3).
- name: Run the action
uses: devops-infra/action-terraform-copy-vars@v1.0.0
with:
dirs_with_modules: modules
files_with_vars: variables.tf
all_vars_file: all-variables.tf
fail_on_missing: false| Input Variable | Required | Default | Description |
|---|---|---|---|
dirs_with_modules |
No | terraform |
Comma separated list of directory prefixes with modules. |
files_with_vars |
No | variables.tf |
Comma separated list of files containing variables in directories matching dirs_with_modules. |
all_vars_file |
No | all-variables.tf |
Name of a file containing base definitions of all variables. |
fail_on_missing |
No | false |
Whether action should fail if all_vars_file is missing some definitions from modules. |
Fail action if not all variables in variables.tf in terraform subdirectories match their definitions in all-variables.tf.
name: Check Terraform variables
on:
push
jobs:
terraform-copy-vars:
runs-on: ubuntu-latest
steps:
- name: Checkout repoistory
uses: actions/checkout@v5
- name: Fail on different variables' definitions
uses: devops-infra/action-terraform-copy-vars@v1.0.0
with:
fail_on_changes: trueCopy variables definitions from all-variables.tf to all variables.tf in modules subdirectories and commit updated files back to the repository using my other action devops-infra/action-commit-push.
name: Copy Terraform variables accross modules
on:
push
jobs:
terraform-copy-vars:
runs-on: ubuntu-latest
steps:
- name: Checkout repoistory
uses: actions/checkout@v5
- name: Update Terraform variables
uses: devops-infra/action-terraform-copy-vars@v1.0.0
with:
dirs_with_modules: modules
files_with_vars: variables.tf
all_vars_file: all-variables.tf
- name: Commit changes to repo
uses: devops-infra/action-commit-push@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
commit_prefix: "[AUTO-VARIABLES]"Contributions are welcome! See CONTRIBUTING. This project is licensed under the MIT License - see the LICENSE file for details.
This project is licensed under the MIT License - see the LICENSE file for details.
If you have any questions or need help, please:
- π Create an issue
- π Star this repository if you find it useful!