Încerc să creez două mașini centos 8 cu terraform pe azur.
Șabloanele mele github legătură
Când încerc să aplic, primesc mai jos o eroare legată de politică.
Ați putea vă rog să sugerați cum să remediați acest lucru?
> â Eroare: crearea subrețelei: (Nume „subnetforAutomation”/Nume rețea virtuală „vnetforAutomation”/Grup de resurse „automation_mart”):
> network.SubnetsClient#CreateOrUpdate: Eroare la trimiterea cererii:
> StatusCode=0 -- Eroare originală: Code="RequestDisallowedByPolicy"
> Message="Resursa „subnetforAutomation” a fost interzisă de politică.
> Identificatori de politică:
> „[{\"policyAssignment\":{\"name\":\"Deny-Subnet-Without-Nsg\",\"id\":\"/providers/Microsoft.Management/managementGroups/QSFT-landingzones/ providers/Microsoft.Authorization/policyAssignments/Deny-Subnet-Without-Nsg\"},\"policyDefinition\":{\"name\":\"Subnets
> ar trebui să aibă un grup de securitate de rețea
> \",\"id\":\"/providers/Microsoft.Management/managementGroups/QSFT/providers/Microsoft.Authorization/policyDefinitions/Deny-Subnet-Without-Nsg\"}}]'."
> Target="subnetforAutomation"
> AdditionalInfo=[{"info":{"evaluationDetails":{"evaluatedExpressions":[{"expression":"type","expressionKind":"Field","expressionValue":"Microsoft.Network/virtualNetworks/subnets" ,"operator":"Egal","path":"type","result":"True","targetValue":"Microsoft.Network/virtualNetworks/subnets"},{"expression":"Microsoft.Network/ virtualNetworks/subnets/networkSecurityGroup.id","expressionKind":"Field","operator":"Există","path":"properties.networkSecurityGroup.id","rezultat":"True","targetValue":" false"}]},"policyAssignmentDisplayName":"Deny-Subnet-Without-Nsg","policyAssignmentId":"/providers/Microsoft.Management/managementGroups/QSFT-landingzones/providers/Microsoft.Authorization/policyAssignments/-Deny Without-Nsg","policyAssignmentName":"Deny-Subnet-Without-Nsg","policyAssignmentScope":"/providers/Microsoft.Management/managementGroups/QSFT-landingzones","policyDefinitionDisplayName":"Subnets
> ar trebui să aibă un grup de securitate de rețea
> ","policyDefinitionEffect":"Deny","policyDefinitionId":"/providers/Microsoft.Management/managementGroups/QSFT/providers/Microsoft.Authorization/policyDefinitions/Deny-Subnet-Without-Nsg","policyDefinitionName":"Deny -Subnet-Without-Nsg"},"type":"PolicyViolation"}]
>
> â
> â cu azurerm_subnet.subnet,
> â pe linia main.tf 24, în resursa „azurerm_subnet” „subnet”:
> â 24: resursa „azurerm_subnet” „subnet” {
> â
Am încercat să păstrez în linie, subrețeaua în interiorul vnet. Și problema apare acum când se face trimitere la subrețeaua din blocul de resurse de instanță VM chiar în etapa de plan.
Eroare: atribut neacceptat
â
â pe linia network.tf 26, în resursa „azurerm_network_interface” „exemplu”:
â 26: subnet_id = azurerm_virtual_network.vnet.subnet.id #azurerm_subnet.subnet.id
â
â Nu pot accesa atributele unui set de obiecte. Ați vrut să accesați un atribut pentru toate elementele setului?
âµ
//main.tf
## <https://www.terraform.io/docs/providers/azurerm/r/windows_virtual_machine.html>
resursă „azurerm_windows_virtual_machine” „exemplu” {
nume = var.detalii_mașină.nume
computer_name = var.machine_details.name
resource_group_name = azurerm_resource_group.rg.name
locație = azurerm_resource_group.rg.location
dimensiune = var.machine_details.size
admin_username = var.machine_details.username
admin_password = var.machine_details.parola
network_interface_ids = [
azurerm_network_interface.example.id,
]
os_disk {
cache = „Citește scriere”
storage_account_type = „Standard_LRS”
}
source_image_reference {
editor = „MicrosoftWindowsServer”
oferta = "WindowsServer"
sku = „2019-Datacenter”
versiune = "cel mai recent"
}
}
//network.tf
## <https://www.terraform.io/docs/providers/azurerm/r/virtual_network.html>
resursă „azurerm_virtual_network” „vnet” {
nume = "vNet"
adresa_spațiu = ["10.0.0.0/16"]
locație = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
subrețea{
nume = "intern"
address_prefix = „10.0.2.0/24”
security_group = azurerm_network_security_group.example.id
}
}
## <https://www.terraform.io/docs/providers/azurerm/r/network_interface.html>
resursa „azurerm_network_interface” „exemplu” {
nume = "exemplu-nic"
locație = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
ip_configuration {
nume = "intern"
subnet_id = azurerm_virtual_network.vnet.subnet.id #azurerm_subnet.subnet.id
private_ip_address_allocation = „Dinamic”
public_ip_address_id = azurerm_public_ip.myvm1publicip.id
}
}
resursa „azurerm_public_ip” „myvm1publicip” {
nume = var.public_ip.name
locație = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
allocation_method = var.public_ip.allocation_method
sku = var.public_ip.sku
}
resursă „azurerm_network_security_group” „exemplu” {
nume = var.nsg
locație = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
regulă_securitate {
nume = "test123"
prioritate = 100
directie = "Inbound"
acces = "Permite"
protocol = "Tcp"
source_port_range = "*"
destination_port_range = "*"
source_address_prefix = "*"
destination_address_prefix = "*"
}
}
//provider.tf
## <https://www.terraform.io/docs/providers/azurerm/index.html>
furnizorul „azurerm” {
Caracteristici {}
}
//rg.tf
## <https://www.terraform.io/docs/providers/azurerm/r/resource_group.html>
resursa „azurerm_resource_group” „rg” {
nume = "TerraformTesting2"
locație = var.locație
}
//variabile.tf
variabila „locație” {
tip = șir
description = „Regiunea Azure unde vor fi furnizate toate aceste resurse”
implicit = "eastus2"
}
variabila „public_ip” {
implicit = {
nume = "pip1"
allocation_method = „Dinamic”
sku = „de bază”
}
}
variabila „nsg” {
tip = șir
descriere = „Azure NSG”
implicit = "exemplu-nsg"
}
variabila „detalii_mașină” {
implicit = {
nume = "exemplu-vm2"
dimensiune = "Standard_E2s_v3" #"Standard_F2"
username = "adminname"
parola = "MyPaword!@3"
}
}