Azure DevOps Terraform Init - 远程状态 - 无法获取现有工作区: containers.Client#ListBlobs: 发送请求失败: StatusCode=0

8

第一次体验terraform,我正在按照链接中的文档将我的terraform文件放入与Azure DevOps一起使用的发布管道中。一切运行得非常顺利,直到初始化terraform的步骤。它失败并显示以下错误消息:

enter image description here

存储帐户本身已被配置,并且根据文档,该密钥也已成功保存在环境变量中。 我在Azure DevOps发布管道中的terraform init的YAML为: enter image description here 并且用于后端服务terraform脚本为: enter image description here 变量存储为发布管道内部的环境变量,并且有一个替换令牌任务,将__替换为空字符串: enter image description here 这是管道中创建资源组和存储帐户的步骤: enter image description here 最后,将存储密钥存储在ENV变量中的PS脚本: enter image description here 此外,我不明白为什么错误消息中的get http会在terraform.tformstate后附加env
我已经尝试过谷歌搜索,但迄今为止未能解决问题。感谢您的帮助/想法。

分享你的Terraform脚本以及你将在哪里部署这个脚本?是在DevOps中吗?给出YAML文件。 - Charles Xu
我正在使用Azure DevOps发布管道,就像问题中的文档链接所示。 - Ali
它们在发布管道中的环境变量中,并且有一个PowerShell脚本创建存储账户,读取密钥并持久化密钥。 - Ali
我的端上一切正常。你按照文章中的步骤创建发布了吗? - Charles Xu
1
所有东西在我的版本中都正常工作。你能否检查一下init任务中workingDirectory的值是否正确,并确保键值真的是正确的。 - Charles Xu
显示剩余3条评论
3个回答

10

看起来您在变量中拼写storageaccount错误,所以该值没有被替换。您写成了sotrageaccount,t和o的位置颠倒了。


1
哦,你说得非常对。那解决了问题。谢谢,Christian。 - Ali
1
哈!这正是我需要找到问题的灵感。 - Chris F Carroll

1

虽然Christian Pearce回答了这个问题,但是这条信息存在潜在的问题。
您的存储账户设置出现了问题

我的问题在于我将路径信息放入了容器名称中。

- task: TerraformTaskV3@3
  displayName: Terraform Init
  inputs:
    provider: azurerm
    command: init
    backendServiceArm: [service connection]
    backendAzureRmResourceGroupName: [resource group]
    backendAzureRmStorageAccountName: [storage account name]
    backendAzureRmContainerName: [container]/subfolder <-- This is bad and belongs in the Key field
    backendAzureRmKey: ${{ parameters.name }}/${{ parameters.environment }}.tfstate
    workingDirectory: $(Pipeline.Workspace)/Infrastructure

0

提醒一下:当我在 Azure 存储中指定容器名称时(该容器尚未在存储帐户中创建),使用大写字母时出现了相同的错误,结果发现这在 Azure 存储中是不允许的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接