在terraform azurerm_应用程序服务中使用。azurerm_应用程序服务中的出站ip_地址。ip_限制

在terraform azurerm_应用程序服务中使用。azurerm_应用程序服务中的出站ip_地址。ip_限制,azure,terraform,Azure,Terraform,我有两个azurerm_应用程序_服务。第一 resource "azurerm_app_service" "first" { name = "${local.webAppFirstCloudName}" location = "${azurerm_resource_group.rg.location}" resource_group_name = "${azurerm_resource_group.rg.name}" app_service_plan_id = "${azur

我有两个azurerm_应用程序_服务。第一

resource "azurerm_app_service" "first" {
  name = "${local.webAppFirstCloudName}"
  location = "${azurerm_resource_group.rg.location}"

  resource_group_name = "${azurerm_resource_group.rg.name}"
  app_service_plan_id = "${azurerm_app_service_plan.plan.id}"
  ...
上述web应用程序可通过互联网通过公共ip访问

第二个是可以通过公共ip通过internet访问的。但是在这里我想设置第一个webapp的ip地址。因此,第二个应用程序只能通过第一个Web应用程序访问

以下是描述:

resource "azurerm_app_service" "second" {
  name = "${local.webAppSecondCloudName}"
  location = "${azurerm_resource_group.rg.location}"

  resource_group_name = "${azurerm_resource_group.rg.name}"
  app_service_plan_id = "${azurerm_app_service_plan.plan.id}"

  tags = {
    ApplicationName = "${var.applicationName}"
    BU-CostCenter = "${var.buCostCenter}"
    CostCenter = "${var.costCenter}"
    ProjectNumber = "${var.projectNumber}"
    Requester = "${var.requester}"
    Environment = "${var.environment}"
    Owner = "${var.owner}"
  }

  site_config {
    scm_type = "LocalGit"
    linux_fx_version = "JAVA|8-jre8"

    ip_restriction = "${split(",", azurerm_app_service.webAppLsgCloud.outbound_ip_addresses)}"

  }

  app_settings = {
    JAVA_OPTS = "-Xmx2G -Dspring.profiles.active=${var.stage} -Djava.net.preferIPOv4Stack=true -Dserver.port=80 -Dazure.cosmosdb.key=${azurerm_cosmosdb_account.db.primary_master_key} -Dazure.cosmosdb.uri=${azurerm_cosmosdb_account.db.endpoint} -Dazure.storage.account-name=${azurerm_storage_account.storage.name} -Dazure.storage.account-key=${azurerm_storage_account.storage.primary_access_key}"
    WEBSITE_HTTPLOGGING_RETENTION_DAYS = "7"
  }
}
进入后

PS C:\workspaces\intellij\terraform> terraform plan -var-file="cloud.dev.tfvars" -out=execution-plan
Acquiring state lock. This may take a few moments...

Error: azurerm_app_service.second: site_config.0.ip_restriction: should be a list

有人知道如何将列表转换为适当的限制格式吗?

ip\U限制本身就是一个子块,请参阅

要在terraform中正确使用它,您需要

site_config {
  scm_type = "LocalGit"
  linux_fx_version = "JAVA|8-jre8"
   ip_restriction {
    ip_address  = azurerm_app_service.webAppLsgCloud.outbound_ip_addresses
  }
}
但是,由于WebApplsCloud.outbound_ip_addresses是一个地址列表,因此必须使用一组块,或者从terraform v0.12.0开始使用
动态
块,类似于:

site_config {
  scm_type = "LocalGit"
  linux_fx_version = "JAVA|8-jre8"

  dynamic "ip_restriction" {
    for_each = azurerm_app_service.webAppLsgCloud.outbound_ip_addresses
      content {
        ip_address  = cidrhost(ip_restriction.value,0)
        subnet_mask = cidrmask(ip_restriction.value)
      }
  }
}


将值包装在
[]
中。所以类似于
ip_restriction=[“${split(“,”,azurerm_app_service.webapplsgloud.outbound_ip_addresses)}”
我收到消息
错误:azurerm_app_service.second:“site_config.0.ip_restriction.0.ip_address”:必填字段未设置
。ip限制的结构应该类似于
[{ip\u address=“185.46.212.0”subnet\u mask=“255.255.254.0”}、{ip\u address=“40.67.217.201”subnet\u mask=“255.255.255”}
[{ip\u address=“185.46.212.0/32”}、{ip\u address=“40.67.217.201/32”}]
尝试添加足够的IP筛选器部分,以允许将足够的项目添加到WhiteListDips列表中,查看@NancyXiong,但如何确定我将拥有多少出站IP地址?在Java中,我只想做一个循环,但在terraform中,我一无所知。。