我需要获取现有项目的存储库ID来处理该存储库。似乎除了使用Azure DevOps REST API之外没有其他方法。
我尝试利用REST API在terraform代码中获取repo id:
data "http" "example" {
url = "https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=6.0"
request_headers = {
"Authorization" = "Basic ${base64encode("PAT:${var.personal_access_token}")}"
}
}
output "repository_id" {
value = data.http.example.json.value[0].id
}
当我运行地形计划时,它产生错误:
Error: Unsupported attribute
line 29, in output "repository_id":
29: value = data.http.example.json.value[0].id
我也尝试了jsondecode(jq已经安装):
resource "null_resource" "example" {
provisioner "local-exec" {
command = "curl -s -H 'Authorization: Bearer ${var.pat}' https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=6.0 | jq '.value[0].id'"
interpreter = ["bash", "-c"]
}
}
output "repo_id" {
value = "${jsondecode(null_resource.example.stdout).id}"
}
那也没用!!
Azure DevOps REST API工作正常,我只是无法从响应中获取值到terraform!正确的代码是什么?或者不使用REST API也可以完成!
谢谢大家!
1条答案
按热度按时间41zrol4v1#
要与外部API交互并将其输出返回给TF的正确方法是通过external data source.TF文档链接提供如何使用和创建此类数据源的示例。