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.
Azure ma dwóch oficjalnych dostawców programu Terraform: AzureRM i AzAPI. Obaj dostawcy zarządzają zasobami Azure za pomocą narzędzia Terraform, ale używają różnych podejść. Zrozumienie tych różnic pomaga wybrać odpowiedniego dostawcę — lub kombinację dostawców — dla projektu.
Omówienie każdego dostawcy
AzureRM jest standardowym dostawcą do zarządzania zasobami Azure za pomocą narzędzia Terraform. Udostępnia on wyselekcjonowane, typizowane bloki zasobów ze zintegrowaną walidacją, spójnym zachowaniem i szeroką dokumentacją społeczności. Jednak moduł AzureRM obsługuje tylko podzbiór typów zasobów Azure i wersji API, a nowe funkcje często opóźniają się względem aktualizacji Azure.
AzAPI to cienka warstwa na szczycie interfejsów API REST Azure Resource Manager (ARM). Obsługuje on dowolny typ zasobu Azure w dowolnej wersji interfejsu API, w tym funkcje i usługi w wersji zapoznawczej, które nie są jeszcze obsługiwane w module AzureRM. AzAPI zapewnia bezpośredni dostęp do interfejsu API usługi ARM bez oczekiwania na aktualizacje dostawcy.
Kiedy należy używać modułu AzureRM
Użyj modułu AzureRM jako dostawcy podstawowego, gdy:
- Zasoby, które zarządzasz, są w pełni obsługiwane w module AzureRM ze stabilnymi wersjami interfejsu API.
- Chcesz wyselekcjonowane schematy zasobów z wbudowaną weryfikacją i dobrym wsparciem dla środowiska IDE.
- Twój zespół ceni szerokie zasoby społeczności, przykłady i dostępność modułów.
- Zarządzasz dobrze ugruntowanymi usługami Azure, które nie wymagają dostępu do funkcji w wersji zapoznawczej.
Moduł AzureRM jest właściwym ustawieniem domyślnym dla większości zespołów tworzących Azure. Zacznij od modułu AzureRM i uzupełnij go modułem AzAPI tylko w razie potrzeby.
Kiedy należy używać interfejsu AzAPI
Użyj modułu AzAPI jako dostawcy podstawowego lub uzupełnij moduł AzureRM — gdy:
- Musisz zarządzać zasobami Azure, które nie są jeszcze obsługiwane w usłudze AzureRM.
- Musisz użyć określonej wersji interfejsu API, w tym wersji zapoznawczej, której moduł AzureRM nie uwidacznia.
- Potrzebujesz dostępu do właściwości zasobów, których moduł AzureRM nie wyświetla.
- Chcesz mieć pełną kontrolę nad wersją interfejsu API ze względu na zgodność lub powtarzalność.
- Zarządzasz zasobami natychmiast po wydaniu Azure, zanim AzureRM doda wsparcie.
Kiedy używać obu dostawców razem
Moduły AzureRM i AzAPI zaprojektowano tak, aby działały obok siebie. Typowym wzorcem jest użycie modułu AzureRM dla większości infrastruktury podczas korzystania z interfejsu AzAPI na potrzeby bezpośredniego dostępu do interfejsu API usługi ARM w razie potrzeby:
- Służy
azapi_update_resourcedo ustawiania właściwości w zasobach zarządzanych przez moduł AzureRM, których moduł AzureRM nie ujawnia. - Użyj
azapi_resourcedo zarządzania nową usługą lub funkcją w wersji przedpremierowej, podczas gdy reszta stosu korzysta z modułu AzureRM. - Służy
azapi_resource_actiondo wykonywania operacji na zasobach zarządzanych przez moduł AzureRM, które nie pasują do standardowego cyklu życia tworzenia/odczytu/aktualizacji/usuwania.
# Manage the primary resource with AzureRM
resource "azurerm_kubernetes_cluster" "example" {
name = "my-aks"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "myaks"
default_node_pool {
name = "default"
node_count = 1
vm_size = "Standard_DS2_v2"
}
identity {
type = "SystemAssigned"
}
}
# Use AzAPI to set a property not exposed by AzureRM
resource "azapi_update_resource" "aks_preview_feature" {
type = "Microsoft.ContainerService/managedClusters@2024-02-01"
resource_id = azurerm_kubernetes_cluster.example.id
body = {
properties = {
networkProfile = {
networkDataplane = "cilium"
}
}
}
}
Wybieranie długoterminowej strategii
AzureRM-primary: Zarządzaj wszystkimi zasobami w module AzureRM i używaj interfejsu AzAPI tylko jako tymczasowego mostka dla funkcji, które nie są jeszcze obsługiwane. Migruj zasoby AzAPI do AzureRM, gdy obsługa stanie się dostępna, z użyciem narzędzia aztfmigrate.
AzAPI-primary: zarządzanie wszystkimi zasobami za pomocą interfejsu AzAPI w celu zapewnienia spójnej kontroli wersji interfejsu API i wczesnego dostępu do nowych funkcji. Takie podejście wymaga większej konfiguracji, ale zapewnia pełną kontrolę nad wersją interfejsu API każdego zasobu.
Większość zespołów powinna rozpocząć od strategii opartej na AzureRM i w razie potrzeby przyjąć AzAPI.
Porównanie funkcji
| Funkcja | AzureRM | AzAPI |
|---|---|---|
| Obsługuje wszystkie typy zasobów Azure | Nie — wyselekcjonowany podzbiór | Yes |
| Obsługuje wersje interfejsu API w wersji zapoznawczej | No | Yes |
| Wyselekcjonowane schematy zasobów | Yes | No |
| Sprawdzanie poprawności wbudowanej właściwości | Yes | Częściowe (za pośrednictwem wstępnegolotu) |
| Autouzupełnianie środowiska IDE dla właściwości | Yes | Tak (z rozszerzeniem programu VS Code) |
| Eksportowanie odpowiedzi/filtrowanie JMESPath | No | Yes |
| Zarządzanie zasobami płaszczyzny danych | Yes | Tak (wybrane typy zasobów) |
| Funkcje dostawcy do konstruowania identyfikatorów | No | Tak (wersja 2.0 lub nowsza) |
| Wstępna walidacja przed realizacją planu | Tak (wybrane typy zasobów) | Tak — włącz walidację wstępną |