如何将 terraform 状态集成到 github 操作工作流程中?

Sau*_*ron 7 terraform terraform-provider-azure github-actions

我有 github 操作工作流程,概述了启动 terraform 以在 Azure 中创建资源的简单过程。我缺少的是如何集成 terraform 状态文件,以便在顺序运行此工作流程时,它应该将当前状态与 main.tf 文件进行比较,并且只允许净更改。目前,如果我按顺序运行此命令,第二次总是会失败,因为资源已经在 Azure 中创建。

如何配置下面的 github 工作流程以允许 terraform 状态文件比较?,我还没有找到执行此操作的单个来源

github 仓库布局: 在此输入图像描述

github操作工作流程:

name: Terraform deploy to Azur

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    
    steps:
    - name: "Checkout"
      uses: actions/checkout@master
      
    - name: "Terraform Init"
      uses: hashicorp/terraform-github-actions@master
      with:
       tf_actions_version: 0.12.13
       tf_actions_subcommand: "init"

    - name: "Terraform Plan"
      uses: hashicorp/terraform-github-actions@master
      with:
       tf_actions_version: 0.12.13
       tf_actions_subcommand: "plan"
       args: -var="client_secret=${{ secrets.clientSecret }}"
             -var="client_id=${{ secrets.clientId }}"
             -var="tenant_id=${{ secrets.tenantId }}"
             -var="sub=${{ secrets.sub }}"
                  
    - name: "Terraform Apply"
      uses: hashicorp/terraform-github-actions@master
      with:
       tf_actions_version: 0.12.13
       tf_actions_subcommand: "apply"
       args: -var="client_secret=${{ secrets.clientSecret }}"
             -var="client_id=${{ secrets.clientId }}"
             -var="tenant_id=${{ secrets.tenantId }}"
             -var="sub=${{ secrets.sub }}"    
Run Code Online (Sandbox Code Playgroud)

Mar*_*k B 7

您需要向 Terraform添加后端配置,以便它将状态文件存储在外部某处,以便在每次运行时引用和更新。

  • 就是这样,它被错过的原因是因为我同时也在寻求保护后端,即。没有像“access_key =硬编码guid”这样的调用,所以我还需要阅读环境变量和存储秘密 (2认同)