Descrivere le risorse di Azure come ARM Template

Questo articolo è stato pubblicato più di un anno fa. Le informazioni potrebbero essere obsolete.
ARM Template è un file in formato json che definisce le risorse di Azure.
ARM Template ti aiuta a realizzare la pratica dell'infrastruttura come codice.
Tuttavia, ARM Template è un po 'difficile da creare in primo luogo.
Quindi, questa volta ti dirò come creare il ARM Template efficiente, quando è necessario distribuire una nuova risorsa.
Inizierò spiegando come capire rapidamente come descrivere una nuova risorsa come formato json, e poi mostrarti alcuni esempi.
1. Esporta modello dal Azure Portal
È difficile creare un modello da zero. Quindi ti consiglio di creare prima la risorsa di destinazione nel portale di Azure e quindi esportare il modello della risorsa per usarlo come riferimento.
Qui puoi vedere che la tua risorsa è descritta come ARM Template .
2. Leggi i documenti ufficiali
Successivamente, puoi fare riferimento ai documenti ufficiali di Microsoft 1. In questo documento, puoi trovare quale tipo di proprietà è definito, quale tipo di valore può essere specificato, ecc. È possibile modificare il modello esportato leggendo questi documenti. Puoi anche trovare modelli di esempio nella parte inferiore di ogni pagina di riferimento.
3. Controlla il riferimento API REST
In alcuni casi, non è possibile trovare spiegazioni sui dettagli di alcuni oggetti proprietà di ARM Template .
In tal caso, il riferimento API REST può esserti di aiuto.
Quando si esegue il ARM Template , le API REST associate vengono chiamate nel back-end.
Ciò significa che puoi indovinare la definizione dell'oggetto tramite il riferimento API REST 2.
Altri consigli
Template Function
È possibile usare le funzioni modello per rappresentare efficacemente le risorse di Azure.
Ad esempio, è possibile utilizzare la funzione di copy per creare un oggetto array.
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}Supponiamo che ipAddressArray sia un parametro stringa che rappresenta un set di indirizzi IP diviso per una virgola.
10.0.0.0/16,10.0.1.0/16,...
Questo ARM Template verrà compilato in questo modo:
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}Puoi vedere ipSecurityRestrictions è definito dalla funzione copy .
Per ulteriori informazioni, consultare il documento ufficiale Microsoft 3.
Altri strumenti
Resource Explorer
Resource Explorer 4 è anche utile per capire come descrivere la risorsa come formato json.
Questo strumento è utile quando si desidera verificare le proprietà della risorsa.
Supponiamo che tu debba ottenere managedId da 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 ti aiuterà a comprendere la struttura della risorsa.
In questo caso, è possibile recuperare l'id tramite identity.principalId .
Quindi, ecco la template function per accedere all'id;
1"[reference(parameters('resourceId'), 'api-version', 'Full').identity.principalId]"ARM Template Viewer
ARM Template Viewer , che è un'estensione di Visual Studio Code , è utile anche per visualizzare le tue risorse.
Ecco un diagramma creato da ARM Template Viewer .
Ti aiuterà a capire come ogni risorsa dipende l'una dall'altra.
Sommario
In questo articolo, ho spiegato come creare in modo efficiente un nuovo ARM Template .
Ora puoi creare qualsiasi risorsa ti serva tramite il ARM Template . In bocca al lupo!




