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

标签 terraform github-actions terraform-provider-azure

我有 github 操作工作流,其中概述了启动 terraform 以在 Azure 中创建资源的简单过程。我缺少的是如何集成 terraform 状态文件,以便在此工作流的顺序运行时,它应该将当前状态与 main.tf 文件进行比较,并且只允许净更改。目前如果我按顺序运行它,第二次总是会失败,因为资源已经在 Azure 中创建了。
我如何配置下面的 github 工作流以允许 terraform 状态文件比较?,我还没有找到这样做的单一来源
github 仓库布局:
enter image description here
github Action 工作流程:

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 }}"    

最佳答案

您需要add a backend configuration到您的 Terraform,以便它将状态文件存储在外部某处,以便在每次运行时引用和更新。

关于terraform - 如何将 terraform 状态集成到 github 操作工作流中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64397938/

相关文章:

azure - 通过 Terraform 创建 Azure 自动化启动/停止解决方案

github - 如何在 github 复合操作步骤中动态设置环境变量?

node.js - Github 操作 - 未处理的拒绝 SequelizeConnectionError : no PostgreSQL user name specified in startup packet

azure - Terraform 计划在 Azure 云中失败

amazon-web-services - 如何将 sagemaker createApp 添加到用户配置文件执行角色?

javascript - 在另一个存储库中使用该操作时如何访问 GitHub Action 存储库的文件?

azure - 如何在 Azure 中取消静态公共(public) IP+网络接口(interface)与 VM 的关联?

azure - 如何为 Azure 可用性集中的虚拟机数量创建 Terraform for_each 循环

Azure 存储帐户防火墙规则阻止使用 azure devops 进行 terraform 部署

aws-api-gateway - REGIONAL 处于事件状态时无法导入 EDGE 的证书