Rychlý start: Vytvoření testovacího prostředí v Azure DevTest Labs pomocí Terraformu

Tento článek ukazuje, jak pomocí Terraformu vytvořit virtuální počítač s Windows Serverem 2019 Datacenter v testovacím prostředí v Azure DevTest Labs pomocí Terraformu.

V tomto článku získáte informace o těchto tématech:

Požadavky

Implementace kódu Terraformu

Poznámka:

Vzorový kód pro tento článek se nachází v úložišti GitHubu Azure Terraformu. Můžete zobrazit soubor protokolu obsahující výsledky testu z aktuálních a předchozích verzí Terraformu.

Další články a ukázkový kód ukazující použití Terraformu ke správě prostředků Azure

  1. Vytvořte adresář, ve kterém chcete otestovat a spustit ukázkový kód Terraformu a nastavit ho jako aktuální adresář.

  2. Vytvořte soubor s názvem main.tf a vložte následující kód:

    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"
      }
    }
    
  3. Vytvořte soubor s názvem outputs.tf a vložte následující kód:

    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
    }
    
  4. Vytvořte soubor s názvem providers.tf a vložte následující kód:

    terraform {
      required_version = ">=0.12"
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>2.0"
        }
        random = {
          source  = "hashicorp/random"
          version = "~>3.0"
        }
      }
    }
    provider "azurerm" {
      features {}
    }
    
  5. Vytvořte soubor s názvem variables.tf a vložte následující kód:

    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
    }
    

Inicializace Terraformu

Spuštěním inicializace nasazení Terraformu spusťte inicializaci terraformu. Tento příkaz stáhne poskytovatele Azure potřebného ke správě prostředků Azure.

terraform init -upgrade

Klíčové body:

  • Parametr -upgrade upgraduje potřebné moduly plug-in zprostředkovatele na nejnovější verzi, která splňuje omezení verzí konfigurace.

Vytvoření plánu provádění Terraformu

Spuštěním plánu terraformu vytvořte plán provádění.

terraform plan -out main.tfplan

Klíčové body:

  • Příkaz terraform plan vytvoří plán provádění, ale nespustí ho. Místo toho určuje, jaké akce jsou nezbytné k vytvoření konfigurace zadané v konfiguračních souborech. Tento model umožňuje ověřit, jestli plán provádění odpovídá vašim očekáváním, než provede jakékoli změny skutečných prostředků.
  • Volitelný -out parametr umožňuje zadat výstupní soubor pro plán. Použití parametru -out zajišťuje, že plán, který jste zkontrolovali, je přesně to, co se použije.

Použití plánu provádění Terraformu

Spuštění terraformu platí pro použití plánu provádění na cloudovou infrastrukturu.

terraform apply main.tfplan

Klíčové body:

  • terraform apply Ukázkový příkaz předpokládá, že jste dříve spustili terraform plan -out main.tfplan.
  • Pokud jste pro -out parametr zadali jiný název souboru, použijte stejný název souboru při volání terraform apply.
  • Pokud jste parametr nepoužíli -out , zavolejte terraform apply bez parametrů.

Ověření výsledků

  1. Získejte název prostředku Azure, ve kterém se testovací prostředí vytvořilo.

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. Získejte název testovacího prostředí.

    lab_name=$(terraform output -raw lab_name)
    
  3. Spuštěním příkazu az lab vm list zobrazíte seznam virtuálních počítačů pro testovací prostředí, které jste vytvořili v tomto článku.

    az lab vm list --resource-group $resource_group_name \
                   --lab-name $lab_name
    

Vyčištění prostředků

Pokud už prostředky vytvořené přes Terraform nepotřebujete, proveďte následující kroky:

  1. Spusťte plán terraformu destroy a zadejte příznak.

    terraform plan -destroy -out main.destroy.tfplan
    

    Klíčové body:

    • Příkaz terraform plan vytvoří plán provádění, ale nespustí ho. Místo toho určuje, jaké akce jsou nezbytné k vytvoření konfigurace zadané v konfiguračních souborech. Tento model umožňuje ověřit, jestli plán provádění odpovídá vašim očekáváním, než provede jakékoli změny skutečných prostředků.
    • Volitelný -out parametr umožňuje zadat výstupní soubor pro plán. Použití parametru -out zajišťuje, že plán, který jste zkontrolovali, je přesně to, co se použije.
  2. Spuštění terraformu platí pro použití plánu provádění.

    terraform apply main.destroy.tfplan
    

Řešení potíží s Terraformem v Azure

Řešení běžných problémů při používání Terraformu v Azure

Další kroky