Rychlý start: Vytvoření zóny a záznamu Azure DNS pomocí Terraformu
Tento článek ukazuje, jak pomocí Terraformu vytvořit zónu Azure DNS a záznam A v této zóně.
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 provádě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 pro název skupiny prostředků Azure pomocí random_pet
- Vytvoření skupiny prostředků Azure pomocí azurerm_resource_group
- Vytvoření náhodné hodnoty pomocí random_string
- Vytvoření zóny Azure DNS pomocí azurerm_dns_zone
- Vytvoření záznamu Azure DNS A pomocí azurerm_dns_a_record
Požadavky
Implementace kódu Terraformu
Poznámka
Ukázkový kód pro tento článek se nachází v úložišti Azure Terraform Na GitHubu. Projděte si další články a ukázkový kód, který ukazuje, jak používat Terraform ke správě prostředků Azure.
Vytvořte adresář, ve kterém otestujete a spustíte 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.2" 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" { name = random_pet.rg_name.id location = var.resource_group_location } resource "random_string" "azurerm_dns_zone_name" { length = 13 lower = true numeric = false special = false upper = false } resource "azurerm_dns_zone" "zone" { name = ( var.dns_zone_name != null ? var.dns_zone_name : "www.${random_string.azurerm_dns_zone_name.result}.azurequickstart.org" ) resource_group_name = azurerm_resource_group.rg.name } resource "azurerm_dns_a_record" "record" { name = "www" resource_group_name = azurerm_resource_group.rg.name zone_name = azurerm_dns_zone.zone.name ttl = var.dns_ttl records = var.dns_records }
Vytvořte soubor s názvem
variables.tf
a vložte následující kód:variable "resource_group_location" { type = string default = "eastus" description = "Location for all resources." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random value so name is unique in your Azure subscription." } variable "dns_zone_name" { type = string default = null description = "Name of the DNS zone." } variable "dns_ttl" { type = number default = 3600 description = "Time To Live (TTL) of the DNS record (in seconds)." } variable "dns_records" { type = list(string) default = ["1.2.3.4", "1.2.3.5"] description = "List of IPv4 addresses." }
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 "dns_zone_name" { value = azurerm_dns_zone.zone.name } output "name_servers" { value = azurerm_dns_zone.zone.name_servers }
Inicializace Terraformu
Spuštěním příkazu terraform init inicializujete 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 potřebné moduly plug-in poskytovatele na nejnovější verzi, která vyhovuje omezením 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 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í parametru-out
zajistí, že plán, který jste zkontrolovali, je přesně ten, který se použije. - Další informace o trvalých plánech provádění a zabezpečení najdete v části upozornění zabezpečení.
Použití plánu spuštění Terraformu
Spuštěním příkazu terraform apply použijte plán spuštění pro vaši 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 parametr zadali
-out
jiný název souboru, použijte stejný název souboru ve voláníterraform apply
. - Pokud jste parametr nepoužíli, zavolejte
terraform apply
ho-out
bez jakýchkoli 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 zóny DNS.
dns_zone_name=$(terraform output -raw dns_zone_name)
Spuštěním příkazu az network dns zone show zobrazte informace o nové zóně DNS.
az network dns zone show \ --resource-group $resource_group_name \ --name $dns_zone_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í parametru-out
zajistí, že plán, který jste zkontrolovali, je přesně ten, který se použije. - Další informace o trvalých plánech provádění a zabezpečení najdete v části upozornění zabezpečení.
- 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