我们正在为Azure资源创建Terraform模块;我们已经在项目中为其提供了各自的存储库,但是当尝试在发布管道中调用模块时,会出现超时或错误128。
这可以作为具有部署权限的用户在管道外运行,但是我们正在使用服务主体在发布管道内进行部署,该发布管道也具有正确的权限;看起来问题在于服务主体在Azure DevOps中没有权限。
我们最初在托管的构建代理上进行过尝试,但是如果我们需要存储任何永久性信息,则刚刚部署了自己的私有代理。
模块“ rg” { source =“ git :: https://dev.azure.com/ ***** / Terraform / _git / azmodresourcegroup // module?ref = v1.0” }
这看起来像是一个供股问题,但是有人可以为我指出解决方法吗?
错误是: C:\ Program Files \ Git \ bin \ git.exe以128退出:克隆到'.terraform \ modules \
或长时间(30分钟)超时。
答案 0 :(得分:0)
对于面临此问题的其他任何人,我们要解决的唯一方法是使用用户帐户中的PAT; Service Principal仍用于构建,但是从拥有对Project权限的用户帐户添加PAT可以解决此问题,然后我们仅使用令牌替换来确保PAT不会最终出现在代码中。
答案 1 :(得分:0)
只需说明一下,引用私有AzureDevOps存储库中托管的terraform模块/使用个人访问令牌进行身份验证即可。
module "example_module" {
source = "git::https://INSERT_ORG_NAME:INSERT_TOKEN@dev.azure.com/INSERT_ORG_NAME/terraform_module/_git/terraform_module?ref=INSERT_TAG"
}
答案 2 :(得分:0)
您可以考虑使用System.AccessToken
。此预定义变量包含构建管道的访问令牌,并且未链接到用户。
您可以在构建期间读取令牌。