Vytvoření systému souborů Azure Managed Lustre pomocí Terraformu
V tomto článku použijete Terraform k vytvoření systému souborů Azure Managed Lustre .
Terraform umožňuje definici, verzi Preview a nasazení cloudové infrastruktury. Pomocí Terraformu vytvoříte konfigurační soubory pomocí syntaxe HCL. Syntaxe HCL umožňuje určit poskytovatele cloudu, například Azure, a prvky, které tvoří vaši cloudovou infrastrukturu. Po vytvoření konfiguračních souborů vytvoříte plán spuštění , který vám umožní zobrazit náhled změn infrastruktury před jejich nasazením. Po ověření změn použijete plán spuštění k nasazení infrastruktury.
V tomto článku získáte informace o těchto tématech:
- Vytvořte náhodnou hodnotu (která se použije v názvu skupiny prostředků) pomocí random_pet
- Vytvoření skupiny prostředků Azure pomocí azurerm_resource_group
- Vytvoření Virtual Network Azure pomocí azurerm_virtual_network
- Vytvoření podsítě Azure pomocí azurerm_subnet
- Vytvořte náhodnou hodnotu (která se použije jako název spravovaného systému souborů Lustre) pomocí random_string
- Vytvoření spravovaného systému souborů Lustre pomocí azurerm_managed_lustre_file_system
Poznámka
Příklad kódu v tomto článku používá random_pet a random_string prostředků k vygenerování jedinečných hodnot pro název skupiny prostředků a název spravovaného systému souborů Lustre. Tyto hodnoty můžete v souborech variables.tf
a main.tf
nahradit vlastními názvy prostředků.
Požadavky
Implementace kódu Terraformu
Poznámka
Vzorový kód pro tento článek se nachází v úložišti Azure Terraform na GitHubu. Můžete zobrazit soubor protokolu obsahující výsledky testů z aktuální a předchozí verze Terraformu.
Projděte si další články a ukázkový kód ukazující použití Terraformu ke správě prostředků Azure.
Vytvořte adresář, ve kterém otestujete ukázkový kód Terraformu a nastavíte ho jako aktuální adresář.
Vytvořte soubor s názvem
providers.tf
a 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
main.tf
a 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" "azurerm_virtual_network_name" { length = 13 lower = true numeric = false special = false upper = false } resource "azurerm_virtual_network" "example" { name = coalesce(var.virtual_network_name, "vnet-${random_string.azurerm_virtual_network_name.result}") resource_group_name = azurerm_resource_group.rg.name address_space = ["10.0.0.0/16"] location = azurerm_resource_group.rg.location } resource "random_string" "azurerm_subnet_name" { length = 13 lower = true numeric = false special = false upper = false } resource "azurerm_subnet" "example" { name = coalesce(var.subnet_name, "subnet-${random_string.azurerm_subnet_name.result}") resource_group_name = azurerm_resource_group.rg.name virtual_network_name = azurerm_virtual_network.example.name address_prefixes = ["10.0.2.0/24"] } resource "random_string" "azurerm_amlfs_name" { length = 13 lower = true numeric = false special = false upper = false } resource "azurerm_managed_lustre_file_system" "example" { name = coalesce(var.amlfs_name, "amlfs-${random_string.azurerm_amlfs_name.result}") resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location sku_name = var.amlfs_sku_name subnet_id = azurerm_subnet.example.id storage_capacity_in_tb = var.amlfs_storage_capacity_in_tb zones = ["1"] maintenance_window { day_of_week = var.amlfs_maintenance_day_of_week time_of_day_in_utc = var.amlfs_maintenance_time_of_day } }
Vytvořte soubor s názvem
variables.tf
a vložte následující kód: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 "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "virtual_network_name" { type = string description = "The name of the virtual network resource. The value will be randomly generated if blank." default = "" } variable "subnet_name" { type = string description = "The name of the virtual network subnet. The value will be randomly generated if blank." default = "" } variable "amlfs_name" { type = string description = "The name of the Manage Lustre file system resource. The value will be randomly generated if blank." default = "" } variable "amlfs_sku_name" { type = string default = "AMLFS-Durable-Premium-40" validation { condition = contains(["AMLFS-Durable-Premium-40", "AMLFS-Durable-Premium-125", "AMLFS-Durable-Premium-250", "AMLFS-Durable-Premium-500"], var.amlfs_sku_name) error_message = "The SKU value must be one of the following: AMLFS-Durable-Premium-40, AMLFS-Durable-Premium-125, AMLFS-Durable-Premium-250, AMLFS-Durable-Premium-500." } description = "SKU name for the Azure Managed Lustre file system." } variable "amlfs_storage_capacity_in_tb" { type = number default = 48 description = "The size of the Managed Lustre file system, in TiB. This might be rounded up." } variable "amlfs_maintenance_day_of_week" { type = string default = "Saturday" validation { condition = contains(["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], var.amlfs_maintenance_day_of_week) error_message = "The maintenance day of week value must be one of the following: Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday." } description = "Day of the week on which the maintenance window will occur." } variable "amlfs_maintenance_time_of_day" { type = string default = "02:00" description = "The time of day (in UTC) to start the maintenance window." }
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 "virtual_network_name" { value = azurerm_virtual_network.example.name } output "subnet_name" { value = azurerm_subnet.example.name } output "managed_lustre_file_system_name" { value = azurerm_managed_lustre_file_system.example.name } output "amlfs_sku_name" { value = azurerm_managed_lustre_file_system.example.sku_name } output "amlfs_storage_capacity_in_tb" { value = azurerm_managed_lustre_file_system.example.storage_capacity_in_tb }
Inicializace Terraformu
Spuštěním příkazu terraform init 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
-upgrade
upgraduje nezbytné moduly plug-in poskytovatele na nejnovější verzi, která vyhovuje omezením verze 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čí, 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ž provedete jakékoli změny skutečných prostředků. - Volitelný
-out
parametr umožňuje zadat výstupní soubor pro plán. Použitím parametru-out
zajistíte, že se plán, který jste zkontrolovali, použije přesně to, co se použije.
Použití plánu provádění Terraformu
Spuštěním příkazu Terraform apply použijte plán spuštění na cloudovou infrastrukturu.
terraform apply main.tfplan
Klíčové body:
- Ukázkový
terraform apply
příkaz předpokládá, že jste dříve spustiliterraform plan -out main.tfplan
příkaz . - 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, zavolejte
terraform apply
ho-out
bez parametrů.
Ověření výsledků
Získejte název skupiny prostředků Azure.
resource_group_name=$(terraform output -raw resource_group_name)
Získejte název spravovaného systému souborů Lustre.
managed_lustre_file_system_name=$(terraform output -raw managed_lustre_file_system_name)
Spuštěním příkazu az amlfs show zobrazte název spravovaného systému souborů Lustre.
az amlfs show --resource-group $resource_group_name \ --name $managed_lustre_file_system_name \
Vyčištění prostředků
Pokud už prostředky vytvořené prostřednictvím Terraformu nepotřebujete, proveďte následující kroky:
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čí, 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ž provedete jakékoli změny skutečných prostředků. - Volitelný
-out
parametr umožňuje zadat výstupní soubor pro plán. Použitím parametru-out
zajistíte, že se plán, který jste zkontrolovali, použije přesně to, co se použije.
- Příkaz
Spuštěním příkazu Terraform apply použijte plán 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
V dalším kroku můžete prozkoumat další informace o službě Azure Managed Lustre.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro