【发布时间】:2021-08-01 10:54:54
【问题描述】:
我正在尝试创建一个 Azure DevOps 管道以在 Azure 中构建一个 terraform 环境。我希望 tfstate 文件在 Azure 存储帐户中是远程的。如果您希望存储帐户保持可公开访问,有很多简单的示例可以做到这一点。
但是我没有。我想使用 SAS 令牌限制对存储帐户的访问。
但是我很难过:
- 查找有关此主题的合理参考资料。
- 查找任何有助于我在管道 yaml 中定义 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 令牌定义失败,因为它没有被应用。我已经在我们订阅的虚拟机中手动测试了令牌。
这是当前的尝试:
- 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 Happy Path 之外是否不受支持?我需要构建自己的代理和规模集吗?这甚至会有所帮助。有没有像样的参考资料?
【问题讨论】:
标签: azure-devops azure-pipelines terraform-provider-azure