Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u Terraform gebruikt om een virtuele Machine van Windows Server 2019 Datacenter te maken in een lab in Azure DevTest Labs met behulp van Terraform-.
In dit artikel leert u het volgende:
- Maak een willekeurige huisdiernaam voor de naam van de Azure-resourcegroep met behulp van random_pet
 - Een Azure-resourcegroep maken met behulp van azurerm_resource_group
 - Een willekeurig wachtwoord maken met behulp van random_password
 - Een lab maken in Azure DevTest Labs met behulp van azurerm_dev_test_lab
 - Een virtueel netwerk maken in Azure DevTest Labs met behulp van azurerm_dev_test_virtual_network
 - Een virtuele Windows-machine maken in Azure DevTest Labs met behulp van azurerm_dev_test_windows_virtual_machine
 
Vereiste voorwaarden
De Terraform-code implementeren
Notitie
De voorbeeldcode voor dit artikel bevindt zich in de Azure Terraform GitHub-opslagplaats. U kunt het logboekbestand met de testresultaten van de huidige en vorige versies van Terraform bekijken.
Zie meer artikelen en voorbeeldcode over het gebruik van Terraform voor het beheren van Azure-resources
Maak een map waarin u de Terraform-voorbeeldcode wilt testen en uitvoeren en deze de huidige map wilt maken.
Maak een bestand met de naam
main.tfen voeg de volgende code in:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "random_string" "vm_suffix" { length = 5 upper = false special = false numeric = false } resource "azurerm_resource_group" "rg" { name = random_pet.rg_name.id location = var.resource_group_location } resource "random_password" "password" { count = var.password == null ? 1 : 0 length = 20 special = true min_numeric = 1 min_upper = 1 min_lower = 1 min_special = 1 } locals { password = try(random_password.password[0].result, var.password) } resource "azurerm_dev_test_lab" "lab" { name = var.lab_name location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name } resource "azurerm_dev_test_virtual_network" "vnet" { name = "Dtl${var.lab_name}" lab_name = azurerm_dev_test_lab.lab.name resource_group_name = azurerm_resource_group.rg.name } resource "azurerm_dev_test_windows_virtual_machine" "vm" { name = "ExampleVM-${random_string.vm_suffix.result}" lab_name = azurerm_dev_test_lab.lab.name lab_subnet_name = "Dtl${var.lab_name}Subnet" resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location storage_type = "Standard" size = var.vm_size username = var.user_name password = local.password allow_claim = false lab_virtual_network_id = azurerm_dev_test_virtual_network.vnet.id gallery_image_reference { offer = "WindowsServer" publisher = "MicrosoftWindowsServer" sku = "2019-Datacenter" version = "latest" } }Maak een bestand met de naam
outputs.tfen voeg de volgende code in:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "lab_name" { value = azurerm_dev_test_lab.lab.name } output "vm_name" { value = azurerm_dev_test_windows_virtual_machine.vm.name } output "password" { sensitive = true value = local.password }Maak een bestand met de naam
providers.tfen voeg de volgende code in:terraform { required_version = ">=0.12" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }Maak een bestand met de naam
variables.tfen voeg de volgende code in:variable "resource_group_location" { type = string default = "eastus" description = "Location for all resources." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." } variable "lab_name" { type = string description = "The name of the new lab instance to be created" default = "ExampleLab" } variable "vm_size" { type = string description = "The size of the vm to be created." default = "Standard_D4_v3" } variable "user_name" { type = string description = "The username for the local account that will be created on the new vm." default = "exampleuser" } variable "password" { type = string description = "The password for the local account that will be created on the new vm." sensitive = true default = null }
Terraform initialiseren
Voer terraform init- uit om de Terraform-implementatie te initialiseren. Met deze opdracht wordt de Azure-provider gedownload die is vereist voor het beheren van uw Azure-resources.
terraform init -upgrade
belangrijke punten:
- De 
-upgradeparameter werkt de benodigde providerinvoegtoepassingen bij naar de nieuwste versie die voldoet aan de versiebeperkingen van de configuratie. 
Een Terraform-uitvoeringsplan maken
Voer terraform-plan uit om een uitvoeringsplan te maken.
terraform plan -out main.tfplan
belangrijke punten:
- Met de opdracht 
terraform planwordt een uitvoeringsplan gemaakt, maar niet uitgevoerd. In plaats daarvan wordt bepaald welke acties nodig zijn om de configuratie te maken die is opgegeven in uw configuratiebestanden. Met dit patroon kunt u controleren of het uitvoeringsplan aan uw verwachtingen voldoet voordat u wijzigingen aanbrengt in de werkelijke resources. - Met de optionele parameter 
-outkunt u een uitvoerbestand voor het plan opgeven. Door de parameter-outte gebruiken, zorgt u ervoor dat het plan dat u hebt gecontroleerd precies is toegepast. 
Een Terraform-uitvoeringsplan toepassen
Voer terraform apply uit om het uitvoeringsplan toe te passen op uw cloudinfrastructuur.
terraform apply main.tfplan
belangrijke punten:
- In het voorbeeld 
terraform applyopdracht wordt ervan uitgegaan dat u eerderterraform plan -out main.tfplanhebt uitgevoerd. - Als u een andere bestandsnaam hebt opgegeven voor de parameter 
-out, gebruikt u diezelfde bestandsnaam in de aanroep vanterraform apply. - Als u de parameter 
-outniet hebt gebruikt, roept uterraform applyzonder parameters aan. 
De resultaten controleren
Haal de Azure-ressourcenaam op waarin het lab is gemaakt.
resource_group_name=$(terraform output -raw resource_group_name)Haal de naam van het lab op.
lab_name=$(terraform output -raw lab_name)Voer az lab vm list uit om de virtuele machines weer te geven voor het lab dat u in dit artikel hebt gemaakt.
az lab vm list --resource-group $resource_group_name \ --lab-name $lab_name
Hulpmiddelen opruimen
Voer de volgende stappen uit wanneer u de resources die zijn gemaakt via Terraform niet meer nodig hebt:
Voer terraform-plan uit en geef de vlag
destroyop.terraform plan -destroy -out main.destroy.tfplanbelangrijke punten:
- Met de opdracht 
terraform planwordt een uitvoeringsplan gemaakt, maar niet uitgevoerd. In plaats daarvan wordt bepaald welke acties nodig zijn om de configuratie te maken die is opgegeven in uw configuratiebestanden. Met dit patroon kunt u controleren of het uitvoeringsplan aan uw verwachtingen voldoet voordat u wijzigingen aanbrengt in de werkelijke resources. - Met de optionele parameter 
-outkunt u een uitvoerbestand voor het plan opgeven. Door de parameter-outte gebruiken, zorgt u ervoor dat het plan dat u hebt gecontroleerd precies is toegepast. 
- Met de opdracht 
 Voer terraform apply uit om het uitvoeringsplan toe te passen.
terraform apply main.destroy.tfplan
Problemen met Terraform in Azure oplossen
Veelvoorkomende problemen oplossen bij het gebruik van Terraform in Azure