Terraform:如何在 Azure RM 中实施应用程序安全组
Terraform: how to implement Application Security Groups in Azure RM
问题
我发现我可以integrate Application Security Groups (ASG) into a Network Interface when using the azurestack
resource provider, but I cannot do so when using the azurerm
resource provider。
我的理解
我不明白为什么我做不到。我其实不明白 Azure Stack 和 Azure RM 之间的区别。 This article 建议 Azure Stack 用于混合部署,Azure RM(或 Azure Provider)用于纯云部署。
我和其他同事之前所做的所有工作都是 azurerm
。如果可以的话,我宁愿坚持使用 azurerm
。或者,如果可能的话,我想“混合搭配”azurerm
和 azurestack
,仅在必须时才使用 azurestack
,就像本例中那样。但我真的很想知道为什么有些事情只能通过一个提供商实现,因为就纯 Azure 服务而言,它们都应该提供相同的产品。
有什么想法吗?
不过,最终,我只是想解决将网络接口附加到 VM 的问题,其中 NIC 已关联 ASG。如果可能的话,我想用 azurerm
来做到这一点。我可以使用 azurestack
,只要 azurestack
与通过 azurerm
启动的其他服务兼容。
无需使用azurestack
将NIC与ASG关联
Terraform 提供商 azurerm
具有名为 azurerm_network_interface_application_security_group_association
的资源
您只需要创建ASG并关联网卡即可。
示例:
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
}
问题
我发现我可以integrate Application Security Groups (ASG) into a Network Interface when using the azurestack
resource provider, but I cannot do so when using the azurerm
resource provider。
我的理解
我不明白为什么我做不到。我其实不明白 Azure Stack 和 Azure RM 之间的区别。 This article 建议 Azure Stack 用于混合部署,Azure RM(或 Azure Provider)用于纯云部署。
我和其他同事之前所做的所有工作都是 azurerm
。如果可以的话,我宁愿坚持使用 azurerm
。或者,如果可能的话,我想“混合搭配”azurerm
和 azurestack
,仅在必须时才使用 azurestack
,就像本例中那样。但我真的很想知道为什么有些事情只能通过一个提供商实现,因为就纯 Azure 服务而言,它们都应该提供相同的产品。
有什么想法吗?
不过,最终,我只是想解决将网络接口附加到 VM 的问题,其中 NIC 已关联 ASG。如果可能的话,我想用 azurerm
来做到这一点。我可以使用 azurestack
,只要 azurestack
与通过 azurerm
启动的其他服务兼容。
无需使用azurestack
将NIC与ASG关联
Terraform 提供商 azurerm
具有名为 azurerm_network_interface_application_security_group_association
您只需要创建ASG并关联网卡即可。
示例:
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
}