Terraform Azure 应用服务 - ip_restrictions
Terraform Azure App Service - ip_restrictions
我正在尝试在我的 Azure 应用服务应用程序中设置 IP 限制块
在执行 Terraform 计划或申请时,我收到以下错误:
错误:azurerm_app_service.app-service-1::无效或未知密钥:ip_restriction
我根据应用服务(Web 应用)资源的 Terraform 文档使用了 ip_restriction
这是我正在使用的 AppService 部署代码:
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" = ""
}
谢谢
所以你 运行 遇到了语法错误。正如我在去年了解到的那样,文档阅读起来可能会令人困惑。如果您阅读有关 ip_restriction 的部分,它会说需要一个或多个。这意味着它需要一个数组。
文档中还有一部分告诉您它在数组中需要一个具有 ip_address 和 subnet_mask 属性的对象。即here
因此,要解决您的问题,您需要 ip_restriction。
ip_restriction = [
{
ip_address = "10.0.0.0"
}
]
希望对您有所帮助。
对于那些感兴趣的人,这里是在 Terraform 中使用 ipRestrictions 的方法
ip 限制是 Site_Config {}
的一部分
使用方法见下:
AppService.tf:
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"
}
}
@jamies 不幸的是答案不正确 IP_restriction 不是一个包含一个或多个的列表,而是一个可重复的块。
@gvazzana 是正确的格式。
但是,有一个陷阱.. 会导致您看到的错误。
在 Tf 中,我们习惯于以完整的 CIDR 格式输入 IP 地址,例如 10.23.97.201/23 或 192.68.50.0/24,本节的 azure 门户甚至会这样显示它们。
但是对于这个特定的块,在 terraform 中,你必须按照老派的方式来做。例如:
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"
}
}
如果您有一长串地址和范围,这当然会很痛苦。
现在 Terraform 版本 0.12.0 已经发布,我们应该能够利用新的 dynamic
块样式以及 cidrhost
和 cidrmask
功能来简化事情.
例如:
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
我正在尝试在我的 Azure 应用服务应用程序中设置 IP 限制块
在执行 Terraform 计划或申请时,我收到以下错误: 错误:azurerm_app_service.app-service-1::无效或未知密钥:ip_restriction
我根据应用服务(Web 应用)资源的 Terraform 文档使用了 ip_restriction
这是我正在使用的 AppService 部署代码:
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" = ""
}
谢谢
所以你 运行 遇到了语法错误。正如我在去年了解到的那样,文档阅读起来可能会令人困惑。如果您阅读有关 ip_restriction 的部分,它会说需要一个或多个。这意味着它需要一个数组。
文档中还有一部分告诉您它在数组中需要一个具有 ip_address 和 subnet_mask 属性的对象。即here
因此,要解决您的问题,您需要 ip_restriction。
ip_restriction = [
{
ip_address = "10.0.0.0"
}
]
希望对您有所帮助。
对于那些感兴趣的人,这里是在 Terraform 中使用 ipRestrictions 的方法
ip 限制是 Site_Config {}
的一部分使用方法见下:
AppService.tf:
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"
}
}
@jamies 不幸的是答案不正确 IP_restriction 不是一个包含一个或多个的列表,而是一个可重复的块。
@gvazzana 是正确的格式。 但是,有一个陷阱.. 会导致您看到的错误。
在 Tf 中,我们习惯于以完整的 CIDR 格式输入 IP 地址,例如 10.23.97.201/23 或 192.68.50.0/24,本节的 azure 门户甚至会这样显示它们。
但是对于这个特定的块,在 terraform 中,你必须按照老派的方式来做。例如:
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"
}
}
如果您有一长串地址和范围,这当然会很痛苦。
现在 Terraform 版本 0.12.0 已经发布,我们应该能够利用新的 dynamic
块样式以及 cidrhost
和 cidrmask
功能来简化事情.
例如:
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