首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Terraform在Azure yaml管道上第二次应用失败

Terraform在Azure yaml管道上第二次应用失败
EN

Stack Overflow用户
提问于 2022-10-25 04:06:03
回答 1查看 37关注 0票数 0

我正在使用Azure YAML管道中的Terraform部署Azure blob存储。

从零开始的部署工作并部署了许多资源,包括资源组和blob存储。但是,第二个部署失败了,表示资源组已经存在。terraform计划(在第二次尝试中)也显示了要创建的旧资源,因此在terraform应用时应该失败。检查后,它不会将我的terraform状态文件(在第一次部署之后)存储在Azure blob/容器中。

管道配置:

代码语言:javascript
运行
复制
steps:
- bash: |
    cd ./terraform
    terraform -version
    terraform init \
      -backend-config="storage_account_name=$(tfcicd-blob-account-name-kv)" \
      -backend-config="access_key=$(tfcicd-blob-key-kv)" \
      -backend-config="container_name=$(terraformStateContainer)" \
      -backend-config="key=$(terraformStateFile)"
  displayName: Terraform Init

- bash: |
    cd ./terraform
    terraform plan \
      -var-file=$(terraformVarFile) \
      -out $(terraformPlanFile)
  displayName: Terraform Plan
  env:
    ARM_SUBSCRIPTION_ID:        $(tfcicd-subscription-id-kv)
    ARM_CLIENT_ID:              $(tfcicd-sp-clientid-kv)
    ARM_CLIENT_SECRET:          $(tfcicd-client-secret-kv)
    ARM_TENANT_ID:              $(tfcicd-sp-tenantid-kv)

- bash: |
    cd ./terraform
    terraform apply -auto-approve $(terraformPlanFile)
  displayName: Terraform Apply
  env:
    ARM_SUBSCRIPTION_ID:        $(tfcicd-subscription-id-kv)
    ARM_CLIENT_ID:              $(tfcicd-sp-clientid-kv)
    ARM_CLIENT_SECRET:          $(tfcicd-client-secret-kv)
    ARM_TENANT_ID:              $(tfcicd-sp-tenantid-kv)

Terraform透露,我在terraform/后端目录中有一个backend.tf文件。

代码语言:javascript
运行
复制
terraform {
  backend "azurerm" {
  }
}

我不知道为什么它没有将状态文件存储在blob存储中,也不确定我在这里做错了什么。任何线索都将不胜感激。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-10-25 06:23:38

backend.tf文件必须包含tfstate文件的所有值。

代码语言:javascript
运行
复制
terraform {
  backend "azurerm" {
    resource_group_name  = "storageaccountrg"
    storage_account_name = "storageaccountname"
    container_name       = "containername"
    key                  = "statefilename.tfstate"
  }
}

这是我为Init的任务。

代码语言:javascript
运行
复制
- task: Bash@3
            displayName: 'Terraform Init'
            env:
              ARM_CLIENT_ID: $(AZURE_CLIENT_ID)
              ARM_CLIENT_SECRET: $(AZURE_CLIENT_SECRET)
              ARM_SUBSCRIPTION_ID: $(AZURE_SUBSCRIPTION_ID)
              ARM_TENANT_ID: $(AZURE_TENANT_ID)
            inputs:
              targetType: inline
              script: |
                terraform init \
                  -backend-config="access_key=$(stgaccount-key1)"
              workingDirectory: "$(System.DefaultWorkingDirectory)/$(FILE_PATH)"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74189021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档