我有以下代码,添加了一条防火墙规则
resource "azurerm_sql_firewall_rule" "main" {
name = "${azurerm_sql_server.main.name}-firewall"
resource_group_name = var.resource_group_name
server_name = azurerm_sql_server.main.name
start_ip_address = "0.0.0.0"
end_ip_address = "0.0.0.0"
}
我需要添加一些规则,我该如何在terraform中执行此操作,并且值可以来自配置文件?
答案 0 :(得分:0)
据我所知,有两种方法可以在同一代码中创建许多规则。
一种是在资源中使用count
属性。这样,您可以使用count.index
命名规则,并使用列表存储start_ip_address
和end_ip_address
,如下所示:
resource "azurerm_sql_firewall_rule" "main" {
count = "${var.rule_number}"
name = "${azurerm_sql_server.main.name}-firewall-${count.index}"
resource_group_name = var.resource_group_name
server_name = azurerm_sql_server.main.name
start_ip_address = "${element(var.start_ip_address, count.index)}"
end_ip_address = "${element(var.end_ip_address, count.index)}"
}
这是我向您推荐的方式,它简单又合适。
另一种方法是在资源中使用for和for_each循环。看一下document来了解它。有点困难,但我认为这对您来说不是问题。