我有一个terraform脚本,它试图引用同一资源中的属性。我需要将"azurerm_container_group.aci_caddy.fqdn“传递给容器组中的容器实例。
resource "azurerm_container_group" "aci_caddy" {
resource_group_name = "aci_caddy"
location = local.location
name = "aci_caddy"
os_type = "Linux"
dns_name_label = "aci-caddykang"
container {
name = "app"
image = "apptest:latest"
cpu = "0.5"
memory = "0.5"
environment_variables = {
SITE_ADDRESS = "${azurerm_container_group.aci_caddy.fqdn}"
}
}
}但是我收到了错误信息。
│ Error: Self-referential block
│
│ on aci-caddy-main.tf line 29, in resource "azurerm_container_group" "aci_caddy":
│ 29: SITE_ADDRESS = "${azurerm_container_group.aci_caddy.fqdn}"
│
│ Configuration for azurerm_container_group.aci_caddy may not refer to itself.有什么办法可以做到吗?谢谢。
发布于 2021-12-28 03:29:19
您应该能够使用您的SITE_ADDRESS导出dns_name_label。所以,不用硬编码dns_name_label。可以在Terraform中创建一个变量。
variable "dns_label" {
type = string
}然后在容器组资源中引用此变量。
resource "azurerm_container_group" "aci_caddy" {
resource_group_name = "aci_caddy"
location = local.location
name = "aci_caddy"
os_type = "Linux"
dns_name_label = var.dns_label
container {
name = "app"
image = "apptest:latest"
cpu = "0.5"
memory = "0.5"
environment_variables = {
SITE_ADDRESS = "${var.dns_label}-westus.azurecontainer.io"
}
}
}如果您想进一步改进这一点,可以了解如何从azurerm提供程序数据源获取区域/位置。我没有暴露在天蓝色供应商,所以找不到这个很快。但我知道,FQDN是使用您的dns_name_label和.azurecontainer.io派生的。
发布于 2021-12-27 22:33:10
您不能在其内部引用资源:azurerm_container_group.aci_caddy.fqdn,因为它尚未创建。您必须为您的SITE_ADDRESS创建新变量或本地值。
https://stackoverflow.com/questions/70497806
复制相似问题