azurerm_network_interface中的network_security_group_id属性已更改

87次阅读
没有评论

问题描述

在使用Terraform创建Azure资源时,遇到了一个问题。他们在azurerm_network_interface资源中添加了一个network_security_group_id属性,但是在运行terraform plan命令时,出现了一个错误提示,说network_security_group_id参数不被支持。用户猜测这个属性可能在某个版本中被移动到了其他地方,但是在文档中找不到相关设置的信息。用户想知道network_security_group_id属性应该放在哪里。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案

在azurerm_network_interface资源中,network_security_group_id属性已经被移除。取而代之的是使用network_security_group_association资源来关联子网和网络安全组。下面是一个示例配置:

resource "azurerm_subnet" "subnet-internal-1" {
  name                 = "${var.prefix}-internal-1"
  resource_group_name  = azurerm_resource_group.geofriends.name
  virtual_network_name = azurerm_virtual_network.vn.name
  address_prefixes     = ["10.0.0.0/24"]
}

resource "azurerm_network_security_group" "allow-ssh" {
  name                    = "${var.prefix}-allow-ssh"
  location                = var.location
  resource_group_name     = azurerm_resource_group.geofriends.name

  security_rule {
    name                   = "SSH"
    priority               = 1001
    direction              = "Inbound"
    access                 = "Allow"
    protocol               = "Tcp"
    source_port_range      = var.ssh-source-address
    destination_port_range = var.ssh-destination-address
    source_address_prefix  = var.ssh-source-address
    destination_address_prefix = var.ssh-destination-address
  }
}

resource "azurerm_subnet_network_security_group_association" "sec-group-association" {
  subnet_id                 = azurerm_subnet.subnet-internal-1.id
  network_security_group_id = azurerm_network_security_group.allow-ssh.id
}

在上面的示例中,我们定义了一个azurerm_subnet资源和一个azurerm_network_security_group资源。然后,我们使用azurerm_subnet_network_security_group_association资源将子网subnet-internal-1与allow-ssh安全组关联起来。这样,子网subnet-internal-1就包含了allow ssh安全组。

通过使用network_security_group_association资源,你可以实现与network_security_group_id属性相同的功能,并且更加灵活和可控。

正文完