Skip to content

GitHub Action automatically copying variables' definitions from a single file to many modules

License

Notifications You must be signed in to change notification settings

devops-infra/action-terraform-copy-vars

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date
Feb 12, 2025
Apr 13, 2020
Jun 29, 2021
Feb 17, 2025
Jun 29, 2021
Jun 28, 2021
Jun 29, 2021
Jun 29, 2021
Apr 26, 2020
Apr 26, 2020

Repository files navigation

GitHub Action coping Terraform variables across modules

GitHub Action automatically copying variables' definitions from a single file to many modules.

Dockerized as devopsinfra/action-terraform-copy-vars.

Features:

  • 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_file and will use whole definitions of variables from it.
  • For every module matching dirs_with_modules will search files matching files_with_vars and replace matching variables from all_vars_file.
  • To not loose the changes combine with my other action devops-infra/action-commit-push.

Badge swag

Master branch Other branches
GitHub repo GitHub code size in bytes GitHub last commit GitHub license
DockerHub Docker version Image size Docker Pulls

Reference

    - name: Fail on different veriables' definitions
      uses: devops-infra/[email protected]
      with:
        fail_on_changes: true
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.

Examples

Fail action if not all variables in variables.tf in terragrunt 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@v2
    - name: Fail on different veriables' definitions
      uses: devops-infra/[email protected]
      with:
        fail_on_changes: true

Copy 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@v2
    - name: Update Terraform variables
      uses: devops-infra/[email protected]
      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]"