以terraform代码从Azure DevOps的现有项目获取存储库ID

lnlaulya  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(100)

我需要获取现有项目的存储库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也可以完成!
谢谢大家!

41zrol4v

41zrol4v1#

要与外部API交互并将其输出返回给TF的正确方法是通过external data source.TF文档链接提供如何使用和创建此类数据源的示例。

相关问题