Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku szybkiego startu utworzysz konto Azure Batch, konto Azure Storage i dwie pule Batch za pomocą Terraform. Batch to oparta na chmurze usługa planowania zadań, która równoległie i dystrybuuje przetwarzanie dużych ilości danych na wielu komputerach. Jest on zwykle używany do zamiatania parametrycznego, symulacji Monte Carlo, modelowania ryzyka finansowego i innych aplikacji obliczeniowych o wysokiej wydajności. Konto usługi Batch to zasób najwyższego poziomu w usłudze Batch, który zapewnia dostęp do pul, zleceń i zadań. Konto magazynu służy do przechowywania wszystkich plików używanych i generowanych przez usługę Batch oraz zarządzania nimi, podczas gdy dwie pule usługi Batch to kolekcje węzłów obliczeniowych, które wykonują zadania.
Narzędzie Terraform umożliwia definiowanie, wyświetlanie wersji zapoznawczej i wdrażanie infrastruktury chmury. Za pomocą narzędzia Terraform tworzysz pliki konfiguracji przy użyciu składni HCL. Składnia listy HCL umożliwia określenie dostawcy chmury — takiego jak platforma Azure — oraz elementów tworzących infrastrukturę chmury. Po utworzeniu plików konfiguracji utworzysz plan wykonywania , który umożliwia wyświetlenie podglądu zmian infrastruktury przed ich wdrożeniem. Po zweryfikowaniu zmian należy zastosować plan wykonywania w celu wdrożenia infrastruktury.
- Określ wymaganą wersję programu Terraform i wymaganych dostawców.
- Zdefiniuj dostawcę platformy Azure bez dodatkowych funkcji.
- Zdefiniuj zmienne lokalizacji grupy zasobów i prefiks nazwy grupy zasobów.
- Wygeneruj losową nazwę grupy zasobów przy użyciu podanego prefiksu.
- Utwórz grupę zasobów platformy Azure z wygenerowaną nazwą w określonej lokalizacji.
- Wygeneruj losowy ciąg znaków, który będzie używany jako nazwa konta przechowywania.
- Utwórz konto Storage o wygenerowanej nazwie w utworzonej grupie zasobów, w tej samej lokalizacji, z warstwą konta standardowego i lokalnie nadmiarową replikacją Storage.
- Wygeneruj kolejny losowy ciąg, który ma być używany jako nazwa konta usługi Batch.
- Utwórz konto usługi Batch z wygenerowaną nazwą w utworzonej grupie zasobów w tej samej lokalizacji i połącz je z utworzonym kontem Storage w trybie uwierzytelniania kluczy Storage.
- Wygeneruj losową nazwę dla puli Batch z przedrostkiem "pool".
- Utwórz pulę usługi Batch o stałej skali przy użyciu wygenerowanej nazwy w utworzonej grupie zasobów połączonej z utworzonym kontem usługi Batch o rozmiarze standardowej maszyny wirtualnej A1, jednostce SKU agenta węzła Ubuntu 22.04 i zadaniu uruchamiania, które powtarza "Hello World from $env" z maksymalnie jednym ponowieniem próby i czeka na powodzenie.
- Utwórz kolejną pulę usługi Batch z automatycznym skalowaniem przy użyciu tej samej wygenerowanej nazwy w utworzonej grupie zasobów połączonej z utworzonym kontem usługi Batch z standardowym rozmiarem maszyny wirtualnej A1, jednostką SKU agenta systemu Ubuntu 22.04 i formułą autoskalowania.
- Wyprowadź nazwy utworzonej grupy zasobów, konta magazynu, konta usługi Batch i obu pul usługi Batch.
Wymagania wstępne
- Utwórz konto platformy Azure z aktywną subskrypcją. Możesz bezpłatnie utworzyć konto.
- Instalowanie i konfigurowanie narzędzia Terraform.
Implementowanie kodu narzędzia Terraform
Uwaga
Przykładowy kod tego artykułu znajduje się w repozytorium GitHub programu Azure Terraform. Możesz wyświetlić plik dziennika zawierający wyniki testu z bieżących i poprzednich wersji programu Terraform.
Zobacz więcej artykułów i przykładowego kodu pokazującego, jak zarządzać zasobami platformy Azure przy użyciu narzędzia Terraform.
Utwórz katalog, w którym chcesz przetestować i uruchomić przykładowy kod programu Terraform, i ustaw go jako bieżący katalog.
Utwórz plik o nazwie
main.tfi wstaw następujący 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_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" } }Utwórz plik o nazwie
outputs.tfi wstaw następujący 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 }Utwórz plik o nazwie
providers.tfi wstaw następujący 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 {} }Utwórz plik o nazwie
variables.tfi wstaw następujący 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." }
Inicjowanie narzędzia Terraform
Uruchom narzędzie terraform init, aby zainicjować wdrożenie narzędzia Terraform. To polecenie pobiera dostawcę platformy Azure wymaganego do zarządzania zasobami platformy Azure.
terraform init -upgrade
Kluczowe punkty:
- Parametr
-upgradeuaktualnia niezbędne wtyczki dostawcy do najnowszej wersji, która jest zgodna z ograniczeniami wersji konfiguracji.
Tworzenie planu wykonania programu Terraform
Uruchom terraform plan, aby utworzyć plan wykonania.
terraform plan -out main.tfplan
Kluczowe punkty:
- Polecenie
terraform plantworzy plan wykonania, ale nie wykonuje go. Zamiast tego określa, jakie akcje są niezbędne do utworzenia konfiguracji określonej w plikach konfiguracji. Ten wzorzec umożliwia sprawdzenie, czy plan wykonania jest zgodny z oczekiwaniami przed wprowadzeniem jakichkolwiek zmian w rzeczywistych zasobach. - Opcjonalny
-outparametr umożliwia określenie pliku wyjściowego dla planu. Użycie parametru-outgwarantuje, że sprawdzony plan jest dokładnie tym, co jest stosowane.
Zastosowanie planu wykonawczego Terraform
Uruchom terraform apply, aby zastosować plan wykonania do infrastruktury w chmurze.
terraform apply main.tfplan
Kluczowe punkty:
- Przykładowe polecenie
terraform applyzakłada, że wcześniej uruchomionoterraform plan -out main.tfplan. - Jeśli określono inną nazwę pliku parametru
-out, użyj tej samej nazwy pliku w wywołaniu metodyterraform apply. - Jeśli nie użyłeś parametru
-out, wywołajterraform applybez żadnych parametrów.
Weryfikowanie wyników
Uruchom az batch account show, aby wyświetlić konto usługi Batch.
az batch account show --name <batch_account_name> --resource-group <resource_group_name>
Zastąp <batch_account_name> nazwą konta Batch i <resource_group_name> nazwą grupy zasobów.
Czyszczenie zasobów
Jeśli zasoby utworzone za pomocą narzędzia Terraform nie są już potrzebne, wykonaj następujące czynności:
Uruchom plan terraform i określ flagę
destroy.terraform plan -destroy -out main.destroy.tfplanKluczowe punkty:
- Polecenie
terraform plantworzy plan wykonania, ale nie wykonuje go. Zamiast tego określa, jakie akcje są niezbędne do utworzenia konfiguracji określonej w plikach konfiguracji. Ten wzorzec umożliwia sprawdzenie, czy plan wykonania jest zgodny z oczekiwaniami przed wprowadzeniem jakichkolwiek zmian w rzeczywistych zasobach. - Opcjonalny
-outparametr umożliwia określenie pliku wyjściowego dla planu. Użycie parametru-outgwarantuje, że sprawdzony plan jest dokładnie tym, co jest stosowane.
- Polecenie
Uruchom terraform apply aby zastosować plan wykonania.
terraform apply main.destroy.tfplan
Rozwiązywanie problemów z programem Terraform na platformie Azure
Rozwiązywanie typowych problemów podczas korzystania z programu Terraform na platformie Azure.