我正在尝试创建一个Azure DevOps管道,以便在Azure中构建一个地形环境。我希望tfstate文件在Azure存储帐户中是远程的。如果您希望存储帐户保持可公开访问,那么有很多简单的示例可以这样做。
不过,我不知道。我希望使用SAS令牌限制对存储帐户的访问。
然而,我正经历着一段困难时期:
在这个subject.
我的想法是,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中手动测试了令牌。
以下是当前的尝试:
- 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快乐路径之外,这不受支持吗?我需要建立自己的代理和规模设置吗?那能帮上忙吗。有什么合适的推荐信吗?
发布于 2021-05-11 09:22:50
请不要使用SAS令牌,而是使用服务主体来访问存储帐户。给SP缴费在储存帐户上的权利,你应该是好的去!
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 :)中创建它。
https://stackoverflow.com/questions/67480566
复制相似问题