1

问题

我发现在使用资源提供程序时可以将应用程序安全组 (ASG) 集成到网络接口中,但在使用azurestack资源提供程序不能这样做azurerm

我的理解

我不明白为什么我不能。我实际上不明白 Azure Stack 和 Azure RM 之间的区别。 本文建议 Azure Stack 用于混合部署,Azure RM(或 Azure Provider)用于纯云部署。

我和其他同事之前所做的所有工作都与azurerm. 如果可以的话,我宁愿坚持下去azurerm。或者,如果可能的话,我想“混合和匹配” azurermand azurestackazurestack仅在必要时使用,就像在这种情况下一样。但我真的很想知道为什么有些事情只有一个提供商才有可能,因为就纯 Azure 服务而言,它们都应该提供相同的产品。


有任何想法吗?

但最终,我只是想解决将网络接口附加到 VM 的问题,其中 NIC 具有关联的 ASG。如果可能的话,我想这样做azurerm。我可以用它来做azurestack,只要azurestack与通过它启动的其他服务兼容azurerm

4

1 回答 1

1

无需使用azurestack将 NIC 与 ASG 关联

Terraform 提供程序azurerm具有称为的资源azurerm_network_interface_application_security_group_association

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/network_interface_application_security_group_association

您只需要创建 ASG 并将其与 NIC 关联。

例子:

resource "azurerm_resource_group" "example" {
  name     = "example-resources"
  location = "West Europe"
}

resource "azurerm_virtual_network" "example" {
  name                = "example-network"
  address_space       = ["10.0.0.0/16"]
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
}

resource "azurerm_subnet" "example" {
  name                 = "internal"
  resource_group_name  = azurerm_resource_group.example.name
  virtual_network_name = azurerm_virtual_network.example.name
  address_prefixes     = ["10.0.1.0/24"]
}

resource "azurerm_application_security_group" "example" {
  name                = "example-asg"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
}

resource "azurerm_network_interface" "example" {
  name                = "example-nic"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name

  ip_configuration {
    name                          = "testconfiguration1"
    subnet_id                     = azurerm_subnet.example.id
    private_ip_address_allocation = "Dynamic"
  }
}

resource "azurerm_network_interface_application_security_group_association" "example" {
  network_interface_id          = azurerm_network_interface.example.id
  application_security_group_id = azurerm_application_security_group.example.id
}
于 2021-01-13T13:53:17.557 回答