Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto rychlém startu vytvoříte účet Azure Batch, účet Azure Storage a dva fondy Batch pomocí Terraformu. Batch je cloudová služba pro plánování úloh, která paralelizuje a distribuuje zpracování velkých objemů dat napříč mnoha počítači. Obvykle se používá pro parametrické úklidy, simulace Monte Carlo, modelování finančních rizik a další vysoce výkonné výpočetní aplikace. Účet Batch je hlavní prostředek ve službě Batch, který zajišťuje přístup k skupinám, úlohám a úkolům. Účet úložiště slouží k ukládání a správě všech souborů používaných a generovaných službou Batch, zatímco dva fondy Batch jsou kolekcemi výpočetních uzlů, které provádějí úlohy.
Terraform umožňuje definovat, prohlížet a nasazovat cloudovou infrastrukturu. Pomocí Terraformu vytvoříte konfigurační soubory pomocí syntaxe HCL. Syntaxe seznamu HCL umožňuje zadat poskytovatele cloudu , například Azure, a prvky, které tvoří vaši cloudovou infrastrukturu. Po vytvoření konfiguračních souborů vytvoříte plán provádění, který vám umožní zobrazit náhled změn infrastruktury před jejich nasazením. Jakmile ověříte změny, použijete plán provádění k nasazení infrastruktury.
- Zadejte požadovanou verzi Terraformu a požadované zprostředkovatele.
- Definujte poskytovatele Azure bez dalších funkcí.
- Definujte proměnné pro umístění skupiny prostředků a předponu názvu skupiny prostředků.
- Pomocí zadané předpony vygenerujte náhodný název skupiny prostředků.
- Vytvořte skupinu prostředků Azure s vygenerovaným názvem v zadaném umístění.
- Vygenerujte náhodný řetězec, který se použije jako název účtu úložiště.
- Vytvořte účet úložiště s vygenerovaným názvem ve vytvořené skupině prostředků ve stejném umístění a s úrovní standardního účtu a místně redundantním typem replikace úložiště.
- Vygenerujte další náhodný řetězec, který se použije jako název účtu Batch.
- Vytvořte účet Batch s vygenerovaným názvem ve vytvořené skupině prostředků ve stejném umístění a propojte ho s vytvořeným účtem úložiště s režimem ověřování klíčů úložiště.
- Vygenerujte náhodný název pro Batch pool s předponou "pool".
- Vytvořte fond Batch s pevným škálováním pomocí vygenerovaného názvu ve vytvořené skupině prostředků, propojeného s vytvořeným účtem Batch, se standardní velikostí virtuálního počítače A1, SKU agenta uzlu Ubuntu 22.04 a spouštěcí úlohou, která vypíše 'Hello World z $env', s maximálním počtem jednoho pokusu o opakování a čeká na úspěšné dokončení.
- Vytvořte další fond Batch s automatickým škálováním, s použitím stejného vygenerovaného názvu, vytvořenou skupinou prostředků propojenou s účtem Batch, se standardní velikostí virtuálního počítače A1, SKU agenta uzlu Ubuntu 22.04 a vzorcem automatického škálování.
- Vypište názvy vytvořené skupiny prostředků, účtu úložiště, účtu Batch a všech fondů Batch.
Požadavky
- Vytvořte účet Azure s aktivním předplatným. Účet si můžete vytvořit zdarma.
- Nainstalujte a nakonfigurujte Terraform.
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.
Podívejte se na další články a ukázkový kód ukazující, jak používat Terraform ke správě prostředků Azure.
Vytvořte adresář, ve kterém chcete otestovat a spustit ukázkový kód Terraformu a nastavit ho jako aktuální adresář.
Vytvořte soubor s názvem
main.tfa vložte následující kód: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_A1" 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_A1" 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" } }Vytvořte soubor s názvem
outputs.tfa vložte následující kód: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 }Vytvořte soubor s názvem
providers.tfa vložte následující kód:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }Vytvořte soubor s názvem
variables.tfa vložte následující kód: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." }
Inicializujte Terraform
Spusťte terraform init a inicializujte nasazení Terraformu. Tento příkaz stáhne poskytovatele Azure potřebného ke správě prostředků Azure.
terraform init -upgrade
klíčové body:
- Parametr
-upgradeaktualizuje potřebné pluginy poskytovatele na nejnovější verzi, která odpovídá verzním omezením konfigurace.
Vytvoření plánu provádění Terraformu
Spusťte terraform plan pro vytvoření plánu provedení.
terraform plan -out main.tfplan
klíčové body:
- Příkaz
terraform planvytvoří 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ý
-outparametr umožňuje zadat výstupní soubor pro plán. Použití parametru-outzajišťuje, že vámi zkontrolovaný plán je přesně tím, co bude aplikován.
Implementujte plán Terraformu
Spusťte terraform apply, abyste aplikovali plán provádění na vaši cloudovou infrastrukturu.
terraform apply main.tfplan
klíčové body:
-
terraform applyUkázkový příkaz předpokládá, že jste dříve spustiliterraform plan -out main.tfplan. - Pokud jste pro
-outparametr zadali jiný název souboru, použijte stejný název souboru při voláníterraform apply. - Pokud jste parametr nepoužíli
-out, zavolejteterraform applybez parametrů.
Ověření výsledků
Spusťte az batch account show, abyste zobrazili účet Batch.
az batch account show --name <batch_account_name> --resource-group <resource_group_name>
Nahraďte <batch_account_name> názvem vašeho účtu Batch a <resource_group_name> názvem vaší skupiny prostředků.
Vyčistěte zdroje
Pokud už prostředky vytvořené přes Terraform nepotřebujete, proveďte následující kroky:
Spusťte terraform plan a zadejte parametr
destroy.terraform plan -destroy -out main.destroy.tfplanklíčové body:
- Příkaz
terraform planvytvoří 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ý
-outparametr umožňuje zadat výstupní soubor pro plán. Použití parametru-outzajišťuje, že vámi zkontrolovaný plán je přesně tím, co bude aplikován.
- Příkaz
Spusťte terraform apply pro aplikaci prováděcího plánu.
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