首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Azure DevOps Terraform可以使用存储帐户SAS令牌来存储远程状态文件吗?

Azure DevOps Terraform可以使用存储帐户SAS令牌来存储远程状态文件吗?
EN

Stack Overflow用户
提问于 2021-05-11 04:28:15
回答 1查看 680关注 0票数 2

我正在尝试创建一个Azure DevOps管道,以便在Azure中构建一个地形环境。我希望tfstate文件在Azure存储帐户中是远程的。如果您希望存储帐户保持可公开访问,那么有很多简单的示例可以这样做。

不过,我不知道。我希望使用SAS令牌限制对存储帐户的访问。

然而,我正经历着一段困难时期:

在这个subject.

  • Finding上找到合理的引用,任何帮助我在管道中定义sas令牌的

我的想法是,SAS令牌将是一个安全管道变量或变量组的一部分,然后插入到管道yaml中,然后传递给底层的terraform。

尝试脚本和TerraformTaskV1结构的尝试都失败了。在init命令的管道构建过程中收到的最新错误是:

Error: Failed to get existing workspaces: storage: service returned error: StatusCode=403, ErrorCode=AuthorizationFailure, ErrorMessage=This request is not authorized to perform this operation.

我相信这告诉我,sas令牌定义失败了,因为它没有被应用。我已经在我们订阅的VM中手动测试了令牌。

以下是当前的尝试:

代码语言:javascript
运行
复制
- task: ms-devlabs.custom-terraform-tasks.custom-terraform-release-task.TerraformTaskV1@0
    displayName: 'Terraform init'
    inputs:
      provider: 'azurerm'
      command: 'init'
      workingDirectory: '$(System.DefaultWorkingDirectory)/modules/terraform/basic-sastoken'
      backendServiceArm: $(service_connection)
      backendAzureRmResourceGroupName: $(resource_group_name)
      backendAzureRmStorageAccountName: $(storage_account_name)
      backendAzureRmContainerName: $(container_name)
      backendAzureRmKey: $(key)
      commandOptions: -input=false -var "sastoken=$(sas_token)"

好吧,那我有什么选择?

这是一项不可能的任务吗?在狭窄的Microsoft快乐路径之外,这不受支持吗?我需要建立自己的代理和规模设置吗?那能帮上忙吗。有什么合适的推荐信吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-11 09:22:50

请不要使用SAS令牌,而是使用服务主体来访问存储帐户。给SP缴费在储存帐户上的权利,你应该是好的去!

代码语言:javascript
运行
复制
steps:
- task: ms-devlabs.custom-terraform-tasks.custom-terraform-release-task.TerraformTaskV1@0
  displayName: 'Terraform : init'
  inputs:
    workingDirectory: '$(System.DefaultWorkingDirectory)/<YOUR TERRAFORM FILES>'
    backendServiceArm: '<SERVICE CONNECTION YOU CREATED>'
    backendAzureRmResourceGroupName: '<RESOURCE GROUP YOUR STATE STORAGE ACCOUNT IS LOCATED'
    backendAzureRmStorageAccountName: <NAME OF STORAGE ACCOUNT WITH STATE>
    backendAzureRmContainerName: <CONTAINER NAME>
    backendAzureRmKey: '<TERRAFORM STATE KEY>'

用您的值删除<>。关于服务连接,可以在DevOps :)中创建它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67480566

复制
相关文章

相似问题

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