Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Użyj azapi_resource_action jako zarządzanego zasobu programu Terraform, aby wykonać operacje imperatywne, zmieniające stan na zasobach Azure. W tym przykładzie utworzysz konto magazynowe Azure, a następnie zaktualizujesz jego klucze dostępu.
azapi_resource_action ma dwie formy użycia:
- Zasób: wykonuje operację zmiany stanu podczas . Narzędzie Terraform śledzi działania w stanie i może opcjonalnie je odwrócić na
terraform destroy. - Źródło danych: Wykonuje operację tylko do odczytu podczas planowania. Zobacz poradnik szybkiego startu dla źródła danych działań na zasobach, aby zapoznać się z tym scenariuszem.
Jeśli potrzebujesz narzędzia Terraform, użyj formularza zasobu, aby wykonać operację Azure, która nie jest oparta na standardowym cyklu życia tworzenia/odczytu/aktualizacji/usuwania — na przykład rotacji poświadczeń, uruchamiania lub zatrzymywania maszyny wirtualnej albo wyzwalania trybu failover.
- Utwórz konto magazynowe za pomocą dostawcy AzureRM
- Obracanie klucza dostępu do konta magazynu za pomocą polecenia
azapi_resource_action
Wymagania wstępne
- Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Skonfiguruj program Terraform: jeśli jeszcze tego nie zrobiono, skonfiguruj program Terraform przy użyciu jednej z następujących opcji:
Po zalogowaniu się do witryny Azure Portal przy użyciu konta Microsoft używana jest domyślna subskrypcja platformy Azure dla tego konta.
Narzędzie Terraform automatycznie uwierzytelnia się przy użyciu informacji z domyślnej subskrypcji platformy Azure.
Uruchom az account show, aby zweryfikować bieżące konto Microsoft i subskrypcję Azure.
az account show
Wszelkie zmiany wprowadzone za pośrednictwem narzędzia Terraform znajdują się w wyświetlanej subskrypcji platformy Azure. Jeśli chcesz, pomiń pozostałą część tego artykułu.
Wdrożenie kodu Terraform
Utwórz katalog, w którym chcesz przetestować przykładowy kod narzędzia Terraform i ustawić go jako bieżący katalog.
Utwórz plik o nazwie
providers.tfi wstaw następujący kod: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 {} } provider "azapi" {}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 value to create a unique name." } variable "storage_account_name_prefix" { type = string default = "st" description = "Prefix of the storage account name that's combined with a random value to create a unique name." }Utwórz plik o nazwie
main.tfi wstaw następujący kod:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "random_string" "storage_suffix" { length = 8 upper = false special = false } resource "azurerm_resource_group" "example" { location = var.resource_group_location name = random_pet.rg_name.id } resource "azurerm_storage_account" "example" { name = "${var.storage_account_name_prefix}${random_string.storage_suffix.result}" resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location account_tier = "Standard" account_replication_type = "LRS" } resource "azapi_resource_action" "regenerate_key" { type = "Microsoft.Storage/storageAccounts@2023-01-01" resource_id = azurerm_storage_account.example.id action = "regenerateKey" method = "POST" body = { keyName = "key1" } }Kluczowe kwestie dotyczące używania
azapi_resource_actionjako zasobu:- Pole
actionokreśla operację ARM do wykonania. W przypadku rotacji kluczy konta magazynowego użyj poleceniaregenerateKey. - Pole
methodokreśla metodę HTTP. Większość akcji imperatywnych używa metodyPOST. - Atrybut
bodyprzekazuje dane do akcji. W przypadku ponownego tworzenia klucza określ, który klucz (key1lubkey2) chcesz zamienić. - Akcja jest wykonywana podczas
terraform applyi śledzona w stanie Terraform.
- Pole
Utwórz plik o nazwie
outputs.tfi wstaw następujący kod:output "resource_group_name" { value = azurerm_resource_group.example.name } output "storage_account_name" { value = azurerm_storage_account.example.name }
Uruchom terraform init, aby zainicjalizować wdrożenie Terraform. To polecenie pobiera wymagany dostawcę Azure do zarządzania zasobami Azure.
terraform init -upgrade
Kluczowe punkty:
- Parametr
-upgradeuaktualnia niezbędne wtyczki dostawcy do najnowszej wersji, która jest zgodna z ograniczeniami wersji konfiguracji.
Uruchom terraform plan, aby utworzyć plan realizacji.
terraform plan -out main.tfplan
Kluczowe punkty:
- Polecenie
terraform plantworzy plan wykonania, ale nie wykonuje go. Zamiast tego, określa, jakie działania są niezbędne do stworzenia konfiguracji określonej w plikach konfiguracyjnych. Ten wzorzec pozwala Ci zweryfikować, czy plan wykonania spełnia Twoje oczekiwania, zanim wprowadzisz jakiekolwiek zmiany do rzeczywistych zasobów. - Opcjonalny parametr
-outpozwala określić plik wyjściowy dla planu. Użycie parametru-outzapewnia, że plan, który przejrzałeś, zostanie dokładnie zastosowany.
Uruchom terraform apply, aby zastosować plan wykonawczy do infrastruktury chmury.
terraform apply main.tfplan
Kluczowe punkty:
- Przykładowe polecenie
terraform applyzakłada, że wcześniej uruchomiono polecenieterraform plan -out main.tfplan. - Jeśli podałeś inną nazwę pliku dla parametru
-out, użyj tej samej nazwy pliku w wywołaniuterraform apply. - Jeśli nie użyłeś parametru
-out, wywołajterraform applybez żadnych parametrów.
Weryfikowanie wyników
Po zakończeniu terraform apply klucz konta magazynu został obrócony. Rotację kluczy można sprawdzić, sprawdzając klucze konta magazynu w Azure.
Uruchom az storage account keys list, aby wyświetlić klucze konta magazynu.
az storage account keys list \
--resource-group <resource_group_name> \
--account-name <storage_account_name>
Pole value zawiera bieżący klucz.
Przykłady innych operacji zasobów
Zasób azapi_resource_action współpracuje z wieloma operacjami Azure. Oto typowe przykłady:
-
Virtual Machines:
deallocate,start,restart,powerOff,reimage -
Magazyny kluczy:
purge(w przypadku magazynów usuniętych tymczasowo),rotate(dla kluczy zarządzanych) -
App Services:
swap(dla miejsc wdrożenia),restart -
Bazy danych:
failover,promote - Compute resources: Dowolna operacja uwidoczniona przez interfejs API REST Azure, który modyfikuje stan bez tworzenia lub niszczenia zasobu
Uprzątnij zasoby
Jeśli zasoby utworzone za pomocą narzędzia Terraform nie są już potrzebne, wykonaj następujące czynności:
Uruchom terraform plan oraz 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 działania są niezbędne do stworzenia konfiguracji określonej w plikach konfiguracyjnych. Ten wzorzec pozwala Ci zweryfikować, czy plan wykonania spełnia Twoje oczekiwania, zanim wprowadzisz jakiekolwiek zmiany do rzeczywistych zasobów. - Opcjonalny parametr
-outpozwala określić plik wyjściowy dla planu. Użycie parametru-outzapewnia, że plan, który przejrzałeś, zostanie dokładnie zastosowany.
- 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 narzędzia Terraform na platformie Azure