在Azure中使用Terraform将ASG详细信息包含在NSG规则中时出现错误

yzuktlbb  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(141)

我正试图实现NSG规则使用terraform和tryin包括ASG ID的规则。在执行terrafomr计划时,UT给了我以下错误。此外,我已经在Azure门户中创建了ASG,我正在尝试使用Data Block.

将其包含在规则中

destination_application_security_group_ids = ["data,azurerm_application_security_group.id"]

请问有人可以帮助这个错误吗
给定的值不适用于在modules\Nsg\nsg_variables.tf:20,1 -21中声明的module.Nsg.var.nsg_rules:元素1:属性“destination_application_security_group_ids”是必需的。

fnx2tebb

fnx2tebb1#

我尝试使用Terraform为ASG提供NSG,并且我能够成功地提供需求。
当您尝试创建或更新NSG规则时发生了上述错误。它指出,在Terraform中定义安全规则时,您必须在NSG规则中下面提到的3个值中仅提供一个精确值

  1. DestinationAddressPrefixes
  2. DestinationAddressPrefix
  3. DestinationApplicationSecurityGroups
    在规则中同时使用任何两个或三个会导致你提到的错误。
    错误中提到的数据模块声明中也存在语法错误。
    由于您希望将ASG与NSG及其规则链接,因此我根据您的要求使用以下配置。

我的地形配置:

main.tf:

provider "azurerm" {
      features {}
    }
    
    data "azurerm_resource_group" "example" {
        name = "demorgvkrg"
    }
    
    data "azurerm_application_security_group" "example" {
      name                = "examplevk-asg"
      resource_group_name = data.azurerm_resource_group.example.name
    }
    
    
    
    resource "azurerm_network_security_group" "example" {
      name                = "acceptanceTestSecurityGroupvk1"
      location            = "east us"
      resource_group_name = data.azurerm_resource_group.example.name
    }
    
    resource "azurerm_network_security_rule" "example" {
      name                        = "test123"
      priority                    = 1001
      direction                   = "Outbound"
      access                      = "Allow"
      protocol                    = "Tcp"
      source_port_range           = "*"
      destination_port_range      = "80"
      source_address_prefix       = "*"
      resource_group_name         = "demorgvkrg"
      network_security_group_name = "acceptanceTestSecurityGroupvk1"
      destination_application_security_group_ids = [data.azurerm_application_security_group.example.id]
}

输出:

相关问题