我的大部分Azure基础结构都由Terraform管理。 但是,我很快发现许多小细节丢失了。
例如不完全支持客户机密https://github.com/terraform-providers/terraform-provider-azuread/issues/95
似乎无法向APIM添加Active Directory提供程序 How Do I Add Active Directory To APIM Using Terraform?
创建APIM会留下无法删除的演示产品 How Can I Remove Demo Products From APIM Created With Terraform?
等,等等。
这些解决方案似乎正在利用cli
或者回退到REST API: 例如 https://docs.microsoft.com/en-us/rest/api/apimanagement/2019-01-01/apis/delete
如何将Terraform与CLI和REST API混合使用?
它们可以嵌入在terraform中吗?
还是在地形完成后我只运行一些命令来运行它们?
是否可以跨平台执行这些命令?
在Terraform之后运行CLI和REST API是否会导致状态错误并可能在下次运行terraform时引起问题?
答案 0 :(得分:0)
如何将Terraform与CLI和REST API混合使用?
您可以使用Terraform设置程序local-exec
或remote-exec
。通过这些方式,您可以使用CLI命令或REST API运行脚本。有关更多详细信息,请参见local-exec
和remote-exec
。但是您需要照顾好他们。这两种方式仅运行脚本并显示输出,但没有输出。
如果要在同一Terraform文件中将脚本结果用于其他资源,则需要使用Terraform外部数据源,请参见详细信息here。
更新:
这里是一个例子。
Bash脚本文件vmTags.sh
:
#!/bin/bash
az vm show -d -g myGroup -n myVM --query tags
Terraform外部数据源:
data "external" "test" {
program = ["/bin/bash", "./vmTags.sh"]
}
output "value" {
value = "${data.external.test.result}"
}