在 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_addressend_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 以了解它。有点难,不过我觉得对你来说不是问题。