Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure a deux fournisseurs Terraform officiels : AzureRM et AzAPI. Les deux fournisseurs gèrent Azure ressources via Terraform, mais ils utilisent différentes approches. La compréhension de ces différences vous permet de choisir le fournisseur approprié ou la combinaison de fournisseurs pour votre projet.
Vue d’ensemble de chaque fournisseur
AzureRM est le fournisseur standard de gestion des ressources Azure avec Terraform. Il fournit des blocs de ressources organisés et typés avec une validation intégrée, un comportement cohérent et une documentation globale de la communauté. Toutefois, AzureRM ne prend en charge qu’un sous-ensemble de types de ressources et de versions d’API Azure, et les nouvelles fonctionnalités sont souvent en retard par rapport aux versions de Azure.
AzAPI est une couche mince sur les API REST Azure Resource Manager (ARM). Il prend en charge n’importe quel type de ressource Azure à n’importe quelle version de l’API, y compris les fonctionnalités et services en préversion non encore pris en charge dans AzureRM. AzAPI vous donne un accès direct à l’API ARM sans attendre les mises à jour du fournisseur.
Quand utiliser AzureRM
Utilisez AzureRM comme fournisseur principal quand :
- Les ressources que vous gérez sont entièrement prises en charge dans AzureRM avec des versions d’API stables.
- Vous souhaitez organiser des schémas de ressources avec une validation intégrée et une bonne prise en charge de l’IDE.
- Votre équipe accorde de l'importance aux larges ressources communautaires, aux exemples et à la disponibilité des modules.
- Vous gérez des services Azure bien établis qui n'ont pas besoin d'accéder aux fonctionnalités en préversion.
AzureRM est la bonne valeur par défaut pour la plupart des équipes qui s’appuient sur Azure. Commencez par AzureRM et ajoutez-le à AzAPI uniquement si nécessaire.
Quand utiliser AzAPI
Utilisez AzAPI comme fournisseur principal, ou pour compléter AzureRM, quand :
- Vous devez gérer les ressources Azure qui ne sont pas encore supportées dans AzureRM.
- Vous devez utiliser une version d’API spécifique, y compris les versions préliminaires, qu’AzureRM n’expose pas.
- Vous avez besoin d’accéder aux propriétés de ressources qu’AzureRM ne surface pas.
- Vous souhaitez contrôler entièrement la version de l’API pour des raisons de conformité ou de reproductibilité.
- Vous gérez les ressources immédiatement après la publication d'Azure, avant qu'AzureRM n'ajoute la prise en charge.
Quand utiliser les deux fournisseurs ensemble
AzureRM et AzAPI sont conçus pour fonctionner côte à côte. Un modèle courant consiste à utiliser AzureRM pour la plupart de votre infrastructure lors de l’utilisation d’AzAPI pour l’accès direct à l’API ARM si nécessaire :
- Permet
azapi_update_resourcede définir des propriétés sur des ressources gérées par AzureRM qu’AzureRM n’expose pas. - Utilisez
azapi_resourcepour gérer un nouveau service ou une fonctionnalité de prévisualisation pendant que le reste de votre pile utilise AzureRM. - Permet
azapi_resource_actiond’effectuer des opérations sur des ressources gérées par AzureRM qui ne correspondent pas à un cycle de vie de création/lecture/mise à jour/suppression standard.
# 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"
}
}
}
}
Choix d’une stratégie à long terme
AzureRM-primary : gérez toutes les ressources dans AzureRM et utilisez AzAPI uniquement comme pont temporaire pour les fonctionnalités non encore prises en charge. Migrez les ressources AzAPI vers AzureRM au fur et à mesure que la prise en charge devient disponible à l’aide de l’outilaztfmigrate.
AzAPI-primary : gérez toutes les ressources via AzAPI pour un contrôle de version d’API cohérent et un accès anticipé aux nouvelles fonctionnalités. Cette approche nécessite davantage de configuration, mais vous offre un contrôle total sur la version de l’API de chaque ressource.
La plupart des équipes doivent commencer par une stratégie AzureRM-primary et adopter AzAPI si nécessaire.
Comparaison des fonctionnalités
| Caractéristique | AzureRM | AzAPI |
|---|---|---|
| Prend en charge tous les types de ressources Azure | Non : sous-ensemble organisé | Oui |
| Prend en charge les versions d’API en préversion | Non | Oui |
| Schémas de ressources organisés | Oui | Non |
| Validation de propriété intégrée | Oui | Partiel (via validation préliminaire) |
| Complétion automatique de l’IDE pour les propriétés | Oui | Oui (avec l’extension VS Code) |
| Exportation de réponse / filtrage JMESPath | Non | Oui |
| Gestion des ressources du plan de données | Oui | Oui (types de ressources sélectionnés) |
| Fonctions de fournisseurs pour la création d’ID | Non | Oui (v2.0 et versions ultérieures) |
| Validation préliminaire lors de la planification | Oui (types de ressources sélectionnés) | Oui : activer la validation préliminaire |