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.
Terraform umožňuje definici, verzi Preview a nasazení cloudové infrastruktury. 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.
V tomto článku se dozvíte, jak pomocí poskytovatele Terraformu AzAPI spravovat službu Azure, kterou poskytovatel AzureRM v současné době nepodporuje. V ukázkovém kódu se azapi_resource používá ke správě prostředku Azure Container Registry.
- Definování a konfigurace poskytovatelů AzureRM a AzAPI
- Vytvoření skupiny prostředků Azure s jedinečným názvem pomocí poskytovatele AzureRM
- Použití poskytovatele AzureRM k registraci poskytovatele Microsoft.ContainerRegistry ve vašem předplatném
- Vytvoření prostředku Azure Container Registry pomocí zprostředkovatele AzAPI
Požadavky
- Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
Nakonfigurujte Terraform: Pokud jste to ještě neudělali, nakonfigurujte Terraform pomocí jedné z následujících možností:
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
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.tfa vložte následující kód:terraform { required_providers { azapi = { source = "Azure/azapi" version = "~>2.0" } azurerm = { source = "hashicorp/azurerm" version = "~>4.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." } variable "container_registry_name" { type = string default = "" description = "Name of the container registry." }Vytvořte soubor s názvem
main.tfa vložte následující kód:# Create a resource group with a random name. 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 } # Create a user assigned identity resource. resource "azurerm_user_assigned_identity" "example" { name = "example" resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location } # Create a random name for the container registry. resource "random_string" "acr_name" { length = 10 special = false upper = false numeric = false } # Manage a container registry resource. resource "azapi_resource" "example" { type = "Microsoft.ContainerRegistry/registries@2020-11-01-preview" name = coalesce(var.container_registry_name, random_string.acr_name.result) parent_id = azurerm_resource_group.rg.id location = azurerm_resource_group.rg.location identity { type = "SystemAssigned, UserAssigned" identity_ids = [azurerm_user_assigned_identity.example.id] } body = { sku = { name = "Standard" } properties = { adminUserEnabled = true } } tags = { "Key" = "Value" } response_export_values = ["properties.loginServer", "properties.policies.quarantinePolicy.status"] }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 "azure_container_registry_name" { value = azapi_resource.example.name }
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
-upgradeupgraduje 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 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 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 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ů
Získejte název skupiny prostředků.
resource_group_name=$(terraform output -raw resource_group_name)Získejte název registru kontejneru.
azure_container_registry_name=$(terraform output -raw azure_container_registry_name)Spusťte az acr show pro zobrazení registru kontejneru.
az acr show --name $azure_container_registry_name --resource-group $resource_group_name
Vyčištění prostředků
Pokud už prostředky vytvořené přes Terraform nepotřebujete, proveďte následující kroky:
Spusťte plán terraformu
destroya zadejte příznak.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 plán, který jste zkontrolovali, je přesně to, co se použije.
- Příkaz
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