使用GitHub Actions来验证Terraform的计划和其他内容

我将介绍如何在GitHub Actions中运行terraform plan等命令。
如果涉及到处理AWS资源,可能需要添加步骤,我也会一并介绍。

首先

我的Terraform存储库的目录结构如下所示。

.
├── .github
│   └── workflows
│       └── test_terraform.yml # これを扱います
├── .gitignore
├── docker-compose.yml
└── src
    ├── .terraform/
    ├── .terraform.lock.hcl
    ├── module_aws.tf
    ├── modules
    │   └── aws/ # この配下にresource などを記載したファイルを置いている
    └── providers.tf

创建GitHub Actions的工作流程。

name: Terraform test

on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]

jobs:
  terraform_test:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v3
      - name: configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v2
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ap-northeast-1
      - name: terraform setup
        uses: hashicorp/setup-terraform@v2
        with:
          terraform_version: 1.4.2
      - name: Terraform fmt
        id: fmt
        run: terraform fmt -check
        continue-on-error: true
        working-directory: ./src
      - name: Terraform Init
        id: init
        run: terraform init
        working-directory: ./src
      - name: Terraform Validate
        id: validate
        run: terraform validate -no-color
        working-directory: ./src
      - name: Terraform Plan
        id: plan
        run: terraform plan -no-color
        continue-on-error: true
        working-directory: ./src

工作流通过执行terraform的fmt、validate、plan和init来完成这些操作。简要解释一下.yml文件。

on

workflowを実行するタイミングを設定しています。
今回の場合、Pull Requestの作成、更新、reopen、DraftからReady for reviewに変更された時にworkflowが実行されます。

on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]

uses: actions/checkout@v3

GitHub公式に提供されているActionになります。
check outを実施して、workflowでアクセスすることができるようになります

uses: aws-actions/configure-aws-credentials@v2

筆者の環境では、AWSのリソースを利用しているため、credential設定が必要でした
こちらはAWSよりActionが提供されています

これにより、AWSの認証情報とリージョン環境変数を設定し、他のアクションでを利用することができます。
(今回はsecretsでAWSのアクセスキーを渡していますが、外部にキーを渡しているため、role-to-assumeなどを利用する方がよさそうです。参考)

uses: hashicorp/setup-terraform@v2

Action内でTerraform 利用に必要な設定を行なっています。

引数でterraform_version を渡します。自分の使っているTerraform のバージョンと合わせましょう。

通过组合提供的操作,我们可以轻松地创建。
接下来,我想尝试进行计划结果的输出等工作。

广告
将在 10 秒后关闭
bannerAds