Je fais référence aux sous-réseaux existants comme ci-dessous, mais je souhaite qu'un NSG soit créé et attaché au sous-réseau. Cela me donne une erreur.
Le code pour la réfraction et l'ajout de NSG est ci-dessous:
Error: data.azurerm_subnet.tf-sn-erx-app: : invalid or unknown key: security_group Error: data.azurerm_subnet.tf-sn-erx-sql: : invalid or unknown key: security_group
Cependant, lorsque je lance, terraform, une erreur ci-dessous est signalée.
data "azurerm_subnet" "tf-sn-erx-app" { name = "${var.subnet_app_name}" virtual_network_name = "${data.azurerm_virtual_network.tf-vn-erx.name}" resource_group_name = "${data.azurerm_resource_group.tf-rg-erx-external.name}" security_group = "${azurerm_network_security_group.tf-nsg-erx-application.id}" } data "azurerm_subnet" "tf-sn-erx-sql" { name = "${var.subnet_sql_name}" virtual_network_name = "${data.azurerm_virtual_network.tf-vn-erx.name}" resource_group_name = "${data.azurerm_resource_group.tf-rg-erx-external.name}" security_group = "${azurerm_network_security_group.tf-nsg-erx-sql.id}" } resource "azurerm_network_security_group" "tf-nsg-erx-application" { name = "${var.application_nsg}" location = "${data.azurerm_resource_group.tf-rg-erx-external.location}" resource_group_name = "${data.azurerm_resource_group.tf-rg-erx-external.name}" } resource "azurerm_network_security_rule" "tf-nsr-erx-application-5985" { name = "Open Port 5985" priority = 100 direction = "Inbound" access = "Allow" protocol = "Tcp" source_port_range = "*" destination_port_range = "5985" source_address_prefix = "*" destination_address_prefix = "*" resource_group_name = "${data.azurerm_resource_group.tf-rg-erx-external.name}" network_security_group_name = "${azurerm_network_security_group.tf-nsg-erx-application.name}" } resource "azurerm_network_security_rule" "tf-nsr-erx-application-5986" { name = "Open Port 5986" priority = 101 direction = "Inbound" access = "Allow" protocol = "Tcp" source_port_range = "*" destination_port_range = "5986" source_address_prefix = "*" destination_address_prefix = "*" resource_group_name = "${data.azurerm_resource_group.tf-rg-erx-external.name}" network_security_group_name = "${azurerm_network_security_group.tf-nsg-erx-application.name}" }
Quel est le problème?
3 Réponses :
Il n'y a pas de clé de security_group
dans la source de données azurerm_subnet
Argument Reference name - (Required) Specifies the name of the Subnet. virtual_network_name - (Required) Specifies the name of the Virtual Network this Subnet is located within. resource_group_name - (Required) Specifies the name of the resource group the Virtual Network is located in.
https://www.terraform.io/docs/providers/azurerm/d/subnet.html p >
Je suppose ce qu'il dit - vous devriez supprimer cette clé :)
@ 4c74356b41 oui
Comme le dit @BMW, il n'y a pas de propriété security_group
dans les données azurerm_subnet
. Si vous souhaitez associer un NSG au sous-réseau existant, vous pouvez utiliser < code> azurerm_subnet_network_security_group_association pour y parvenir. Utilisez simplement les données azurerm_subnet
pour faire référence à votre sous-réseau existant et créer un NSG pour celui-ci ou utiliser l'existant.
Je l'ai fait fonctionner avec le code ci-dessous:
resource "azurerm_network_interface" "tf-ni-erx-mkconn" { count = 3 name = "${var.mkconn_base_hostname}${format("%02d",count.index+1)}-nic01" location = "${data.azurerm_resource_group.tf-rg-erx-external.location}" resource_group_name = "${data.azurerm_resource_group.tf-rg-erx-external.name}" network_security_group_id = "${azurerm_network_security_group.tf-nsg-erx-application.id}"
Si c'est la solution, pourquoi vous demandez-vous comment créer un NSG sur le sous-réseau existant?! Cela ne répond pas à la question.
@CharlesXu Je l'ai compris après avoir posté la question. Je peux joindre quelques captures d'écran. Cela fonctionne sûrement.
Ouais, ça marche. Mais cela montre que le NSG associé à la carte réseau. Vous pouvez également associer le NSG au sous-réseau en tant que question.
Ok, lequel doit être suivi. NSG à NIC ou au sous-réseau suivant les meilleures pratiques de sécurité, pouvez-vous me conseiller s'il vous plaît?
Ce sont toutes des pratiques, juste pour votre choix. Pour sous-réseau, c'est pour tous les services du sous-réseau. Pour NIC, c'est juste pour celui auquel il est associé.
J'ai voté comme la bonne réponse en faveur de la question réelle. Mon problème est résolu de la manière dont j'ai fourni une réponse.
Mais si vous souhaitez gérer complètement les règles NSG pour tous les services du sous-réseau, vous devez essayer le NSG sur le sous-réseau.
Merci @CharlesXu pour le rôle principal. J'explorerai de cette façon. Ils n'ont pas une vision claire de l'architecture.
@CharlesXu et BMW, excuses pour le retard. J'étais en vacances de Pâques. Cela fonctionne comme ci-dessous: `` `` network_security_group_id = "$ {azurerm_network_security_group.tf-nsg-erx-application.id} " `` `
Alors, devrais-je poster cela comme réponse, cela fonctionne certainement. J'ai tous les NI sont associés aux IP maintenant.
Si vous utilisez des éléments dans ma réponse, vous devriez le marquer au lieu d'en ajouter un autre. Vous obtenez la réponse de ma part et me renvoyez la marque.
Plus de mise à jour?
@CharlesXu apprécie votre persévérance avec passion! J'ai publié la réponse, au moins cela a fonctionné pour moi. Merci à vous et à BMW.