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 použijete Terraform k vytvoření služby Azure Application Gateway. Pak otestujete aplikační bránu, abyste měli jistotu, že funguje správně. V tomto příkladu se používá skladová položka Standard v2.
Terraform umožňuje definici, náhled 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.
- Vytvoření skupiny prostředků Azure pomocí azurerm_resource_group
- Vytvoření virtuální sítě Azure pomocí azurerm_virtual_network
- Vytvoření podsítě Azure pomocí azurerm_subnet
- Vytvoření veřejné IP adresy Azure pomocí azurerm_public_ip
- Vytvoření služby Azure Application Gateway pomocí azurerm_application_gateway
- Vytvoření síťového rozhraní Azure pomocí azurerm_network_interface
- Vytvořte přidružení fondu adres příjemců aplikační brány v Azure pomocí azurerm_network_interface_application_gateway_backend_address_pool_association
- Vytvoření virtuálního počítače Azure s Windows pomocí azurerm_windows_virtual_machine
- Vytvoření rozšíření virtuálního počítače Azure pomocí azurerm_virtual_machine_extension
Poznámka:
Frontend služby Application Gateway teď podporuje dual-stack IP adresy (Preview). Teď můžete vytvořit až čtyři front-endové IP adresy: dvě IPv4 adresy (veřejné a soukromé) a dvě IPv6 adresy (veřejné a soukromé).
Požadavky
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_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.tfa vložte následující kód:resource "random_string" "rg" { length = 8 upper = false special = false } resource "azurerm_resource_group" "rg" { name = "101-application-gateway-${random_string.rg.result}" location = "eastus" } resource "azurerm_virtual_network" "vnet" { name = "myVNet" resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location address_space = ["10.21.0.0/16"] } resource "azurerm_subnet" "frontend" { name = "myAGSubnet" resource_group_name = azurerm_resource_group.rg.name virtual_network_name = azurerm_virtual_network.vnet.name address_prefixes = ["10.21.0.0/24"] } resource "azurerm_subnet" "backend" { name = "myBackendSubnet" resource_group_name = azurerm_resource_group.rg.name virtual_network_name = azurerm_virtual_network.vnet.name address_prefixes = ["10.21.1.0/24"] } resource "azurerm_public_ip" "pip" { name = "myAGPublicIPAddress" resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location allocation_method = "Static" sku = "Standard" } resource "azurerm_application_gateway" "main" { name = "myAppGateway" resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location sku { name = "Standard_v2" tier = "Standard_v2" capacity = 2 } gateway_ip_configuration { name = "my-gateway-ip-configuration" subnet_id = azurerm_subnet.frontend.id } frontend_port { name = var.frontend_port_name port = 80 } frontend_ip_configuration { name = var.frontend_ip_configuration_name public_ip_address_id = azurerm_public_ip.pip.id } backend_address_pool { name = var.backend_address_pool_name } backend_http_settings { name = var.http_setting_name cookie_based_affinity = "Disabled" port = 80 protocol = "Http" request_timeout = 60 } http_listener { name = var.listener_name frontend_ip_configuration_name = var.frontend_ip_configuration_name frontend_port_name = var.frontend_port_name protocol = "Http" } request_routing_rule { name = var.request_routing_rule_name rule_type = "Basic" http_listener_name = var.listener_name backend_address_pool_name = var.backend_address_pool_name backend_http_settings_name = var.http_setting_name priority = 1 } } resource "azurerm_network_interface" "nic" { count = 2 name = "nic-${count.index+1}" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name ip_configuration { name = "nic-ipconfig-${count.index+1}" subnet_id = azurerm_subnet.backend.id private_ip_address_allocation = "Dynamic" } } resource "azurerm_network_interface_application_gateway_backend_address_pool_association" "nic-assoc" { count = 2 network_interface_id = azurerm_network_interface.nic[count.index].id ip_configuration_name = "nic-ipconfig-${count.index+1}" backend_address_pool_id = one(azurerm_application_gateway.main.backend_address_pool).id } resource "random_password" "password" { length = 16 special = true lower = true upper = true numeric = true } resource "azurerm_windows_virtual_machine" "vm" { count = 2 name = "myVM${count.index+1}" resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location size = "Standard_DS1_v2" admin_username = "azureadmin" admin_password = random_password.password.result network_interface_ids = [ azurerm_network_interface.nic[count.index].id, ] os_disk { caching = "ReadWrite" storage_account_type = "Standard_LRS" } source_image_reference { publisher = "MicrosoftWindowsServer" offer = "WindowsServer" sku = "2019-Datacenter" version = "latest" } } resource "azurerm_virtual_machine_extension" "vm-extensions" { count = 2 name = "vm${count.index+1}-ext" virtual_machine_id = azurerm_windows_virtual_machine.vm[count.index].id publisher = "Microsoft.Compute" type = "CustomScriptExtension" type_handler_version = "1.10" settings = <<SETTINGS { "commandToExecute": "powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)" } SETTINGS }
Návod
Hodnoty parametrů Name a Tier můžete upravit v rámci resource\applicationGateWay\main\sku pro použití jiné skladové položky. Například: Basic.
Vytvořte soubor s názvem
variables.tfa vložte následující kód:variable "backend_address_pool_name" { default = "myBackendPool" } variable "frontend_port_name" { default = "myFrontendPort" } variable "frontend_ip_configuration_name" { default = "myAGIPConfig" } variable "http_setting_name" { default = "myHTTPsetting" } variable "listener_name" { default = "myListener" } variable "request_routing_rule_name" { default = "myRoutingRule" }Vytvořte soubor s názvem
outputs.tfa vložte následující kód:output "gateway_frontend_ip" { value = "http://${azurerm_public_ip.pip.ip_address}" }
Inicializujte Terraform
Proveďte terraform init pro inicializaci nasazení Terraform. 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 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 vámi zkontrolovaný plán je přesně tím, co bude aplikován.
Implementujte plán Terraformu
Spusťte terraform apply k aplikaci prováděcího plánu 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ů
Když použijete plán provádění, Terraform zobrazí veřejnou IP adresu front-endu. Pokud jste obrazovku vymazali, můžete tuto hodnotu načíst pomocí následujícího příkazu Terraformu:
echo $(terraform output -raw gateway_frontend_ip)Vložte veřejnou IP adresu do adresního řádku webového prohlížeče. Aktualizujte prohlížeč, aby se zobrazil název virtuálního počítače. Platná odpověď ověří úspěšné vytvoření aplikační brány a může se připojit k back-endu.
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 příznak
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 k 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