首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform应用服务- ip_restrictions

Terraform应用服务- ip_restrictions
EN

Stack Overflow用户
提问于 2018-10-24 17:26:47
回答 3查看 9.7K关注 0票数 6

我正在尝试在Azure应用程序中设置IP限制块

在执行Terraform计划或应用时,我收到以下错误:错误:azurerm_app_service.app-1::无效或未知键: ip_restriction

我为Apps (Web )资源使用了每个Terraform文档的ip_restriction

这里是我使用的AppService部署代码:

代码语言:javascript
复制
resource "azurerm_app_service" "app-service-1" {
  name                    = "${var.app_service_1}"
  location                = "${data.azurerm_resource_group.core-rg.location}"
  resource_group_name     = "${data.azurerm_resource_group.core-rg.name}"
  app_service_plan_id     = "${data.azurerm_app_service_plan.app-service-plan-1.id}"
  https_only              = "True"
  enabled                 = "True"
  client_affinity_enabled = "True"

  site_config {
    always_on                 = "True"
    #default_documents        = ""
    dotnet_framework_version  = "v4.0"
    #http2_enabled            = ""
    #ip_restriction           = ""
    #java_version             = ""
    #java_container           = ""
    #java_container_version   = ""
    managed_pipeline_mode     = "Integrated"
    min_tls_version           = "1.2"
    #php_version              = ""
    #python_version           = ""
    remote_debugging_enabled  = "False"
    #remote_debugging_version = ""
    scm_type                  = "None"
    use_32_bit_worker_process = "False"
    websockets_enabled        = "True"
    #ftps_state               = ""
  }

  app_settings {
    "KeyVaultURI" = ""
    "WEBSITE_NODE_DEFAULT_VERSION" = "6.9.1"
  }

  ip_restriction {
   "ip_address"     = ""
   }

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-31 19:48:24

对于感兴趣的人,下面是在Terraform中使用ipRestrictions的方法

ip限制是Site_Config {}的一部分。

请参阅如何在下面使用:

AppService.tf:

代码语言:javascript
复制
resource "azurerm_app_service" "app-service-1" {
  name                    = "${var.app_service_1}"
  location                = "${data.azurerm_resource_group.core-rg.location}"
  resource_group_name     = "${data.azurerm_resource_group.core-rg.name}"
  app_service_plan_id     = "${data.azurerm_app_service_plan.app-service-plan-1.id}"
  https_only              = "True"
  enabled                 = "True"
  client_affinity_enabled = "True"
  site_config {
    always_on                 = "True"
    #default_documents        = ""
    dotnet_framework_version  = "v4.0"
    #http2_enabled            = ""
    #ip_restriction           = ""
    #java_version             = ""
    #java_container           = ""
    #java_container_version   = ""
    managed_pipeline_mode     = "Integrated"
    min_tls_version           = "1.2"
    #php_version              = ""
    #python_version           = ""
    remote_debugging_enabled  = "False"
    #remote_debugging_version = ""
    scm_type                  = "None"
    use_32_bit_worker_process = "False"
    websockets_enabled        = "True"
    #ftps_state               = ""
    ip_restriction {
      ip_address  = "${var.ip_address_1}"
    }
    ip_restriction {
      ip_address  = "${var.ip_address_2}"
    }
    ip_restriction {
      ip_address  = "${var.ip_address_3}"
    }
  }
  app_settings {
    "KeyVaultURI" = ""
    "WEBSITE_NODE_DEFAULT_VERSION" = "6.9.1"
    }
  }
票数 8
EN

Stack Overflow用户

发布于 2019-11-20 09:38:36

@jamies的答案不幸是不正确的,IP_restriction不是一个列表,而是一个可重复的块。

@gvazzana是正确的格式。然而,有一个陷阱..。这将导致您所看到的错误。

在Tf中,我们习惯于输入完整的CIDR格式的IP地址,例如10.23.97.201/23或192.68.50.0/24,本节的蔚蓝门户甚至显示它们。

但对于这个特殊的街区,在地形上,你必须做他们的老派。例:

代码语言:javascript
复制
site_config {
  # For a single IP address
  ip_restriction {
      ip_address = "81.145.174.78"
      } 
  ip_restriction {
  # For an address range 
      ip_address = "10.240.101.0"
      subnet_mask = "255.255.255.0"
     }
}

如果你有一个很长的地址和范围列表的话,这当然是一种痛苦。

现在已经有了0.12.0版的terraform版本,我们应该能够利用新的dynamic块样式以及cidrhostcidrmask函数来简化事情。

例:

代码语言:javascript
复制
dynamic "ip_restriction" {
for_each = var.ip_address_list
  content {
    ip_address  = cidrhost(ip_restriction.value,0)
    subnet_mask = cidrmask(ip_restriction.value)
  }
}

用Terraform v0.12.13测试

票数 10
EN

Stack Overflow用户

发布于 2018-10-26 13:42:33

所以你遇到了一个语法错误。正如我在过去一年中所了解到的那样,这些文档可能会让人费解。如果您阅读限制上的部分,它会说它需要一个或多个。这意味着它需要一个数组。

文档中还有一个部分告诉您,它在数组中期望一个具有ip_address和subnet_mask属性的对象。那是这里

因此,要解决您的问题,您需要下面的ip_restriction。

代码语言:javascript
复制
ip_restriction = [
    {
        ip_address = "10.0.0.0"
    }
]

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52974824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档