Décrire les ressources Azure comme ARM Template

Cet article a été publié il y a plus d'un an. Les informations peuvent être obsolètes.
ARM Template est un fichier au format json qui définit les ressources Azure.
ARM Template vous aide à réaliser la pratique de l'infrastructure en tant que code.
Cependant, ARM Template est un peu difficile à créer en premier lieu.
Donc, cette fois, je vais vous dire comment créer efficacement un ARM Template , lorsque vous devez déployer une nouvelle ressource.
Je vais commencer par vous expliquer comment comprendre rapidement comment décrire une nouvelle ressource au format json, puis vous montrer quelques exemples.
1. Exporter le modèle depuis Azure Portal
Il est difficile de créer un modèle à partir de zéro. Je vous recommande donc de créer d'abord la ressource cible sur Azure Portal, puis d'exporter le modèle de la ressource pour l'utiliser comme référence.
Ici, vous pouvez voir que votre ressource est décrite comme un ARM Template .
2. Lisez les documents officiels
Ensuite, vous pouvez vous référer aux documents officiels de Microsoft 1. Dans ce document, vous pouvez trouver quel type de propriétés sont définies, quel type de valeur peut être spécifié, etc. Vous pouvez modifier le modèle exporté en lisant ces documents. Vous pouvez également trouver des exemples de modèles au bas de chaque page de référence.
3. Vérifiez la référence de l'API REST
Dans certains cas, vous ne pouvez trouver aucune explication sur le détail d'un objet de propriété du ARM Template .
Dans ce cas, la référence de l'API REST peut vous aider.
Lorsque vous exécutez votre ARM Template , les API REST associées sont appelées dans le backend.
Cela signifie que vous pouvez deviner la définition de l'objet par référence à l'API REST 2.
Autres astuces
Template Function
Vous pouvez utiliser des fonctions de modèle pour représenter efficacement les ressources Azure.
Par exemple, vous pouvez utiliser la fonction de copy pour créer un objet tableau.
1{2 "$schema": "https://schema.management.azure.com/schemas/2018-05-01/deploymentTemplate.json#",3 "contentVersion": "1.0.0.0",4 "parameters": {5 "ipAddressArray": {6 "type": "string",7 "metadata": {8 "description": "IP Address split by a comma."9 }10 }11 },12 "resources": [13 {14 "type": "Microsoft.Web/sites/config",15 "name": "functionConfig",16 "apiVersion": "2018-11-01",17 "location": "[resourceGroup().location]",18 "scale": null,19 "properties": {20 "copy": [21 {22 "name": "ipSecurityRestrictions",23 "count": "[length(split(parameters('ipAddressArray'), ','))]",24 "input": {25 "ipAddress": "[string(split(parameters('ipAddressArray'), ',')[copyIndex('ipSecurityRestrictions')])]",26 "name": "[concat(resourceGroup().location, copyIndex('ipSecurityRestrictions'))]"27 }28 }29 ]30 }31 }32 ]33}Supposons que ipAddressArray est un paramètre de chaîne qui représente un ensemble d'adresses IP divisé par une virgule.
10.0.0.0/16,10.0.1.0/16,...
Ce ARM Template sera compilé comme suit:
1{2 "$schema": "https://schema.management.azure.com/schemas/2018-05-01/deploymentTemplate.json#",3 "contentVersion": "1.0.0.0",4 "parameters": {5 "ipAddressArray": {6 "type": "string",7 "metadata": {8 "description": "IP Address split by comma"9 }10 }11 },12 "resources": [13 {14 "type": "Microsoft.Web/sites/config",15 "name": "functionConfig",16 "apiVersion": "2018-11-01",17 "location": "japaneast",18 "scale": null,19 "properties": {20 "ipSecurityRestrictions": [21 {22 "ipAddress": "10.0.0.0/16",23 "name": "japaneast0"24 },25 {26 "ipAddress": "10.0.1.0/16",27 "name": "japaneast1"28 },29 ...30 ]31 }32 }33 ]34}Vous pouvez voir que ipSecurityRestrictions est défini par la fonction de copy .
Pour plus d'informations, consultez le document officiel de Microsoft 3.
Autres outils
Resource Explorer
Resource Explorer 4 est également utile pour comprendre comment décrire la ressource au format json.
Cet outil est utile lorsque vous souhaitez vérifier les propriétés de la ressource.
Supposons que vous managedId obtenir managedId depuis la API Management .
1{2 "value": [3 {4 "id": "/subscriptions/your-subscription-id/resourceGroups/your-resource-group-name/providers/Microsoft.ApiManagement/service/your-api-management-service-name",5 "name": "your-apim-name",6 "type": "Microsoft.ApiManagement/service",7 "location": "Japan East",8 "etag": "xxx",9 "properties": {10 "publisherEmail": "xxx",11 "publisherName": "xxx",12 "notificationSenderEmail": "xxx",13 "provisioningState": "Succeeded",14 "targetProvisioningState": "",15 "createdAtUtc": "2020-04-13T09:37:25.5871876Z",16 "gatewayUrl": "https://your-apim-name.azure-api.net",17 "gatewayRegionalUrl": "xxx",18 "portalUrl": "https://your-apim-name.portal.azure-api.net",19 "developerPortalUrl": "https://your-apim-name.developer.azure-api.net",20 "managementApiUrl": "https://your-apim-name.management.azure-api.net",21 "scmUrl": "https://your-apim-name.scm.azure-api.net",22 "hostnameConfigurations": [],23 "publicIPAddresses": [24 "x.x.x.x"25 ],26 "privateIPAddresses": null,27 "additionalLocations": null,28 "virtualNetworkConfiguration": null,29 "customProperties": {30 "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10": "False",31 "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11": "False",32 "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Ssl30": "False",33 "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168": "False",34 "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10": "False",35 "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11": "False",36 "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30": "False",37 "Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2": "False"38 },39 "virtualNetworkType": "None",40 "certificates": null41 },42 "sku": {43 "name": "Developer",44 "capacity": 145 },46 "identity": {47 "type": "SystemAssigned",48 "principalId": "your-id",49 "tenantId": "your-tenant"50 }51 },Resource Explorer vous aidera à comprendre la structure de la ressource.
Dans ce cas, vous pouvez récupérer l'id via identity.principalId .
Voici donc la template function pour accéder à l'id;
1"[reference(parameters('resourceId'), 'api-version', 'Full').identity.principalId]"ARM Template Viewer
ARM Template Viewer , qui est une extension de Visual Studio Code , est également utile pour visualiser vos ressources.
Voici un diagramme créé par ARM Template Viewer .
Il vous aidera à comprendre comment chaque ressource dépend les unes des autres.
Résumé
Dans cet article, j'ai expliqué comment créer efficacement un nouveau ARM Template .
Vous pouvez maintenant créer toutes les ressources dont vous avez besoin via le ARM Template . Bonne chance!




