在 terraform 中添加多个 azure sql 防火墙规则
add multiple azure sql firewall rules in terraform
我有以下添加一个防火墙规则的代码
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 中执行此操作,这些值是否可以来自配置文件?
据我所知,有两种方法可以在同一代码中创建多个规则。
一种是使用资源中的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 以了解它。有点难,不过我觉得对你来说不是问题。
我有以下添加一个防火墙规则的代码
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 中执行此操作,这些值是否可以来自配置文件?
据我所知,有两种方法可以在同一代码中创建多个规则。
一种是使用资源中的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 以了解它。有点难,不过我觉得对你来说不是问题。