Présentation du fournisseur AzAPI de Terraform
Le fournisseur AzAPI est une couche fine au-dessus des API REST Azure ARM. Il vous permet de gérer n'importe quel type de ressource Azure en utilisant n'importe quelle version d'API, ce qui vous permet d'utiliser les dernières fonctionnalités d'Azure. AzAPI est un fournisseur de premier ordre conçu pour être utilisé seul ou en tandem avec le fournisseur AzureRM.
Ressources
Pour vous permettre de gérer toutes les ressources et fonctionnalités Azure sans nécessiter de mises à jour, le fournisseur AzAPI inclut les ressources génériques suivantes :
Nom de la ressource | Description |
---|---|
azapi_resource | Utilisée pour gérer entièrement toute ressource Azure (plan de contrôle) (API) avec un CRUD complet. Exemples de cas d'utilisation : Nouveau service en avant-première Nouvelle fonctionnalité ajoutée à un service existant Fonctionnalité / service existant non couvert actuellement. |
azapi_update_resource | Utilisé pour gérer des ressources ou des parties de ressources qui n'ont pas de CRUD complet Exemples de cas d'utilisation : Mise à jour de nouvelles propriétés d'un service existant Mise à jour d'une ressource enfant pré-créée - telle qu'un enregistrement DNS SOA. |
azapi_resource_action | Permet d'effectuer une seule opération sur une ressource sans en gérer le cycle de vie. Exemples de cas d'utilisation : Arrêter une machine virtuelle Ajouter un secret à un Key Vault |
azapi_data_plane_resource | Utilisé pour gérer un sous-ensemble spécifique de ressources de plan de données Azure. Exemples de cas d'utilisation : Contacts de certificats KeyVault Bibliothèques de l'espace de travail Synapse |
Hiérarchie d'utilisation
Dans l'ensemble, l'utilisation doit suivre les étapes suivantes :
- Il est toujours recommandé de commencer par effectuer autant d'opérations que possible dans
azapi_resource
- Si le type de ressource n'existe pas dans
azapi_resource
mais fait partie d'un des types pris en charge parazapi_data_plane_resource
, utilisez-le à la place. - Si la ressource existe déjà dans AzureRM ou si elle possède une propriété qui n'est pas accessible dans
azapi_resource
, utilisezazapi_update_resource
pour accéder à ces propriétés spécifiques. Les ressources queazapi_resource
ouazapi_data_plane_resource
ne prennent pas en charge ne peuvent pas être mises à jour par le biais de cette ressource. - Si vous essayez d'effectuer une action qui n'est pas basée sur une ressource Azure CRUD-friendly,
azapi_resource_action
est moins simple queazapi_update_resource
mais plus flexible.
Exemples de configuration de ressource
L'extrait de code suivant configure une ressource qui n'existe pas actuellement dans le fournisseur AzureRM :
resource "azapi_resource" "publicip" {
type = "Microsoft.Network/Customipprefixes@2021-03-01"
name = "exfullrange"
parent_id = azurerm_resource_group.example.id
location = "westus2"
body = {
properties = {
cidr = "10.0.0.0/24"
signedMessage = "Sample Message for WAN"
}
}
}
L'extrait de code suivant configure une propriété de prévisualisation pour une ressource existante d'AzureRM :
resource "azapi_update_resource" "test" {
type = "Microsoft.ContainerRegistry/registries@2020-11-01-preview"
resource_id = azurerm_container_registry.acr.id
body = {
properties = {
anonymousPullEnabled = var.bool_anonymous_pull
}
}
}
L'extrait de code suivant configure une action de ressource sur une ressource AzureRM existante :
resource "azapi_resource_action" "vm_shutdown" {
type = "Microsoft.Compute/virtualMachines@2023-07-01"
resource_id = azurerm_linux_virtual_machine.example.id
action = "powerOff”
}
L'extrait de code suivant configure une ressource qui n'existe pas actuellement dans le fournisseur AzureRM en raison de son provisionnement sur le plan de données :
resource "azapi_data_plane_resource" "dataset" {
type = "Microsoft.Synapse/workspaces/datasets@2020-12-01"
parent_id = trimprefix(data.azurerm_synapse_workspace.example.connectivity_endpoints.dev, "https://")
name = "example-dataset"
body = {
properties = {
type = "AzureBlob",
typeProperties = {
folderPath = {
value = "@dataset().MyFolderPath"
type = "Expression"
}
fileName = {
value = "@dataset().MyFileName"
type = "Expression"
}
format = {
type = "TextFormat"
}
}
parameters = {
MyFolderPath = {
type = "String"
}
MyFileName = {
type = "String"
}
}
}
}
}
Authentification à l'aide du fournisseur AzAPI
Le fournisseur AzAPI permet les mêmes méthodes d'authentification que le fournisseur AzureRM. Pour plus d'informations sur les options d'authentification, voir Authentifier Terraform auprès d'Azure.
Avantages de l'utilisation du fournisseur AzAPI
Le fournisseur AzAPI présente les fonctionnalités suivantes :
- Prise en charge de tous les services de plan de contrôle Azure :
- Services et fonctionnalités d'évaluation.
- Toutes les versions d’API
- Fidélité totale du fichier d'état Terraform
- Les propriétés et les valeurs sont enregistrées dans l’état
- Aucune dépendance envers Swagger
- Authentification Azure commune et cohérente
- Extension robuste du code VS
Expérience et cycle de vie du fournisseur AzAPI
Cette section décrit certains outils qui vous aideront à utiliser le fournisseur AzAPI.
Extension VS Code et Language Server
L'extension VS Code de l'AzAPI fournit une expérience de création riche avec les avantages suivants :
- Liste de tous les types de ressources disponibles et des versions de l'API.
- Auto-complétion des propriétés et valeurs autorisées pour toute ressource.
- Affichage de conseils au survol d'une propriété.
- Validation de la syntaxe
- Auto-complétion avec des exemples de code.
Outil de migration AzAPI2AzureRM
Le fournisseur AzureRM offre l'expérience Terraform la plus intégrée pour la gestion des ressources Azure. Par conséquent, l'utilisation recommandée des fournisseurs AzAPI et AzureRM est la suivante :
- Pendant que le service ou la fonctionnalité est en cours d'évaluation, utilisez le fournisseur AzAPI.
- Une fois le service officiellement lancé, utilisez le fournisseur AzureRM.
L'outil AzAPI2AzureRM est conçu pour faciliter la migration du fournisseur AzAPI vers le fournisseur AzureRM.
AzAPI2AzureRM est un outil open source qui automatise le processus de conversion des ressources AzAPI en ressources AzureRM.
AzAPI2AzureRM a deux modes : planifier et migrer :
- Plan affiche les ressources AzAPI qui peuvent être migrées.
- Migrate migre les ressources AzAPI vers des ressources AzureRM à la fois dans les fichiers HCL et dans l'état.
AzAPI2AzureRM garantit qu'après la migration, votre configuration Terraform et votre état sont alignés sur votre état réel. Vous pouvez valider la mise à jour de l'état en exécutant terraform plan
après avoir terminé la migration pour vérifier que rien n'a changé.
Utilisation du fournisseur AzAPI
Installez l'extension VS Code
Ajoutez le fournisseur AzAPI à votre configuration Terraform.
terraform { required_providers { azapi = { source = "Azure/azapi" } } } provider "azapi" { # More information on the authentication methods supported by # the AzureRM Provider can be found here: # https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs # subscription_id = "..." # client_id = "..." # client_secret = "..." # tenant_id = "..." }
Déclarez une ou plusieurs ressources AzAPI comme indiqué dans l'exemple de code suivant :
resource "azapi_resource" "example" { name = "example" parent_id = data.azurerm_machine_learning_workspace.existing.id type = "Microsoft.MachineLearningServices/workspaces/computes@2021-07-01" location = "eastus" body = { properties = { computeType = "ComputeInstance" disableLocalAuth = true properties = { vmSize = "STANDARD_NC6" } } } }