Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här snabbstarten skapar du ett Azure Batch-konto, ett Azure Storage-konto och två Batch-pooler med Terraform. Batch är en molnbaserad jobbschemaläggningstjänst som parallelliserar och distribuerar bearbetningen av stora datavolymer på många datorer. Den används vanligtvis för uppgifter som att återge 3D-grafik, analysera stora datamängder eller bearbeta video. I det här fallet innehåller de resurser som skapas ett Batch-konto (som är den centrala organiseringsentiteten för distribuerade bearbetningsuppgifter), ett lagringskonto för att lagra de data som ska bearbetas och två Batch-pooler, som är grupper av virtuella datorer som utför uppgifterna.
Terraform möjliggör definition, förhandsversion och distribution av molninfrastruktur. Med Terraform skapar du konfigurationsfiler med hjälp av HCL-syntax. Med HCL-syntaxen kan du ange molnleverantören – till exempel Azure – och de element som utgör din molninfrastruktur. När du har skapat konfigurationsfilerna skapar du en körningsplan som gör att du kan förhandsgranska ändringarna i infrastrukturen innan de distribueras. När du har verifierat ändringarna, tillämpar du implementeringsplanen för att distribuera infrastrukturen.
- Ange den version av Terraform som krävs och vilka leverantörer som krävs.
- Definiera Azure-providern utan ytterligare funktioner.
- Definiera variabler för resursgruppens plats och namnprefix.
- Generera ett slumpmässigt namn för Azure-resursgruppen.
- Skapa en resursgrupp med det genererade namnet på en angiven plats.
- Generera en slumpmässig sträng för lagringskontots namn.
- Skapa ett lagringskonto med det genererade namnet i den skapade resursgruppen.
- Generera en slumpmässig sträng för Batch-kontonamnet.
- Skapa ett Batch-konto med det genererade namnet i den skapade resursgruppen och länkad till det skapade lagringskontot.
- Generera ett slumpmässigt namn för Batch-poolen.
- Skapa en Batch-pool med en fast skala i den skapade resursgruppen och länkad till det skapade Batch-kontot.
- Skapa en Batch-pool med autoskalning i den skapade resursgruppen och länkad till det skapade Batch-kontot.
- Mata ut namnen på den skapade resursgruppen, lagringskontot, Batch-kontot och båda Batch-poolerna.
Förutsättningar
- Skapa ett Azure-konto med en aktiv prenumeration. Du kan skapa ett konto kostnadsfritt.
- Installera och konfigurera Terraform.
Implementera Terraform-koden
Anteckning
Exempelkoden för den här artikeln finns på Azure Terraform GitHub-lagringsplatsen. Du kan visa loggfilen som innehåller testresultaten från aktuella och tidigare versioner av Terraform.
Se fler artiklar och exempelkod som visar hur du använder Terraform för att hantera Azure-resurser.
Skapa en katalog där du kan testa och köra Terraform-exempelkoden och göra den till den aktuella katalogen.
Skapa en fil med namnet
main.tfoch infoga följande kod:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } resource "random_string" "storage_account_name" { length = 8 lower = true numeric = false special = false upper = false } resource "azurerm_storage_account" "example" { name = random_string.storage_account_name.result resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location account_tier = "Standard" account_replication_type = "LRS" } resource "random_string" "batch_account_name" { length = 8 lower = true numeric = false special = false upper = false } resource "azurerm_batch_account" "example" { name = random_string.batch_account_name.result resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location storage_account_id = azurerm_storage_account.example.id storage_account_authentication_mode = "StorageKeys" } resource "random_pet" "azurerm_batch_pool_name" { prefix = "pool" } resource "azurerm_batch_pool" "fixed" { name = "${random_pet.azurerm_batch_pool_name.id}-fixed-pool" resource_group_name = azurerm_resource_group.rg.name account_name = azurerm_batch_account.example.name display_name = "Fixed Scale Pool" vm_size = "Standard_D4_v3" node_agent_sku_id = "batch.node.ubuntu 22.04" fixed_scale { target_dedicated_nodes = 2 resize_timeout = "PT15M" } storage_image_reference { publisher = "Canonical" offer = "0001-com-ubuntu-server-jammy" sku = "22_04-lts" version = "latest" } start_task { command_line = "echo 'Hello World from $env'" task_retry_maximum = 1 wait_for_success = true common_environment_properties = { env = "TEST" } user_identity { auto_user { elevation_level = "NonAdmin" scope = "Task" } } } metadata = { "tagName" = "Example tag" } } resource "azurerm_batch_pool" "autopool" { name = "${random_pet.azurerm_batch_pool_name.id}-autoscale-pool" resource_group_name = azurerm_resource_group.rg.name account_name = azurerm_batch_account.example.name display_name = "Auto Scale Pool" vm_size = "Standard_D4_v3" node_agent_sku_id = "batch.node.ubuntu 22.04" auto_scale { evaluation_interval = "PT15M" formula = <<EOF startingNumberOfVMs = 1; maxNumberofVMs = 25; pendingTaskSamplePercent = $PendingTasks.GetSamplePercent(180 * TimeInterval_Second); pendingTaskSamples = pendingTaskSamplePercent < 70 ? startingNumberOfVMs : avg($PendingTasks.GetSample(180 * TimeInterval_Second)); $TargetDedicatedNodes=min(maxNumberofVMs, pendingTaskSamples); EOF } storage_image_reference { publisher = "Canonical" offer = "0001-com-ubuntu-server-jammy" sku = "22_04-lts" version = "latest" } }Skapa en fil med namnet
outputs.tfoch infoga följande kod:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "storage_account_name" { value = azurerm_storage_account.example.name } output "batch_account_name" { value = azurerm_batch_account.example.name } output "batch_pool_fixed_name" { value = azurerm_batch_pool.fixed.name } output "batch_pool_autopool_name" { value = azurerm_batch_pool.autopool.name }Skapa en fil med namnet
providers.tfoch infoga följande kod:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }Skapa en fil med namnet
variables.tfoch infoga följande kod:variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } 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." }
Initiera Terraform
Kör terraform init för att initiera Terraform-distributionen. Det här kommandot laddar ned den Azure-provider som krävs för att hantera dina Azure-resurser.
terraform init -upgrade
Viktiga punkter:
- Parametern
-upgradeuppgraderar nödvändiga provider-plugin-program till den senaste versionen som uppfyller konfigurationens versionsbegränsningar.
Skapa en Terraform-körningsplan
Kör terraform plan för att skapa en körplan.
terraform plan -out main.tfplan
Viktiga punkter:
- Kommandot
terraform planskapar en körplan, men kör den inte. I stället avgör den vilka åtgärder som krävs för att skapa den konfiguration som anges i konfigurationsfilerna. Med det här mönstret kan du kontrollera om körningsplanen matchar dina förväntningar innan du gör några ändringar i faktiska resurser. - Med den valfria
-outparametern kan du ange en utdatafil för planen. Med hjälp av parametern-outser du till att planen du granskade är exakt vad som tillämpas.
Tillämpa en Terraform-körningsplan
Kör terraform apply för att tillämpa exekveringsplanen på din molninfrastruktur.
terraform apply main.tfplan
Viktiga punkter:
-
terraform applyExempelkommandot förutsätter att du tidigare kördeterraform plan -out main.tfplan. - Om du har angett ett annat filnamn för parametern
-outanvänder du samma filnamn i anropet tillterraform apply. - Om du inte använde parametern
-outanroparterraform applydu utan några parametrar.
Verifiera resultatet
Kör az batch account show för att visa Batch-kontot.
az batch account show --name <batch_account_name> --resource-group <resource_group_name>
I kommandot ovan ersätter du <batch_account_name> med namnet på ditt Batch-konto och <resource_group_name> med namnet på resursgruppen.
Rensa resurser
Gör följande när du inte längre behöver de resurser som skapats via Terraform:
Kör terraform plan och ange
destroy.terraform plan -destroy -out main.destroy.tfplanViktiga punkter:
- Kommandot
terraform planskapar en körplan, men kör den inte. I stället avgör den vilka åtgärder som krävs för att skapa den konfiguration som anges i konfigurationsfilerna. Med det här mönstret kan du kontrollera om körningsplanen matchar dina förväntningar innan du gör några ändringar i faktiska resurser. - Med den valfria
-outparametern kan du ange en utdatafil för planen. Med hjälp av parametern-outser du till att planen du granskade är exakt vad som tillämpas.
- Kommandot
Kör terraform apply för att tillämpa utförandeplanen.
terraform apply main.destroy.tfplan
Felsöka Terraform i Azure
Felsöka vanliga problem när du använder Terraform i Azure.