【问题标题】:Using GithHubAction with Terraform将 GithHubAction 与 Terraform 一起使用
【发布时间】:2021-10-13 13:29:42
【问题描述】:

我正在使用 GitHub Actions 来使用 Terraform 部署我的代码。每当代码被推送到 Testing 分支时,就会触发一个 GitHub Action 来构建代码并运行 terraform apply 。这很好用。

问题是现在我也想要一个Prod 环境。每当代码被推送到Prod 分支时,都应该使用它自己的 s3 远程后端和它的 AWS 账户来构建它。我遇到的问题是我不确定如何配置我的 terraform 文件,以便 terraform GitHubAction 可以使用 Prod 的后端来存储状态文件。请任何能够提供帮助的人。我现在不确定如何设置它。这是我的代码示例


name: "Terraform-Apply-Action"

on:
  push:
    branches:
      - prod

jobs:
  terraform:
    name: "Terraform"
    runs-on: ubuntu-latest
    env:
      AWS_DEFAULT_REGION: "us-east-1"
      AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY}}
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup Terraform
        uses: hashicorp/setup-terraform@v1

      - name: Terraform Init
        id: Init
        run: terraform init

      - name: Terraform Plan
        id: plan
        if: github.event_name == 'push'
        run: terraform plan -no-color
        continue-on-error: true

      - name: Terraform Plan Status
        if: steps.plan.outcome == 'failure'
        run: exit 1

      - name: Terraform Apply
        run: terraform apply -auto-approve

【问题讨论】:

    标签: terraform


    【解决方案1】:

    如果您这样做,则 terraform 的 s3 后端密钥需要在各个分支中有所不同。

    测试:

    terraform {
      backend "s3" {
        bucket = "mybucket"
        key    = "testing/path/to/my/key"
        region = "us-east-1"
      }
    }
    

    产品:

    terraform {
      backend "s3" {
        bucket = "mybucket"
        key    = "prod/path/to/my/key"
        region = "us-east-1"
      }
    }
    

    还有许多其他方法可以解决这个问题 - 但这是一个非常快速和简单的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      • 2017-10-12
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 2023-03-18
      相关资源
      最近更新 更多