Beschreiben von Azure-Ressourcen als ARM Template

Dieser Artikel wurde vor über einem Jahr veröffentlicht. Die Informationen könnten veraltet sein.
ARM Template ist eine Datei im JSON-Format, die Azure-Ressourcen definiert.
ARM Template Sie die Praxis der Infrastruktur als Code realisieren.
Die Erstellung einer ARM Template ist jedoch in erster Linie etwas schwierig.
Dieses Mal werde ich Ihnen erklären, wie Sie ARM Template effizient erstellen, wenn Sie eine neue Ressource bereitstellen müssen.
Ich erkläre zunächst, wie Sie schnell verstehen, wie eine neue Ressource als JSON-Format beschrieben wird, und zeige Ihnen dann einige Beispiele.
1. Exportieren Sie die Vorlage aus Azure Portal
Es ist schwierig, eine Vorlage von Grund auf neu zu erstellen. Ich empfehle daher, zuerst die Zielressource in Azure Portal zu erstellen und dann die Vorlage der Ressource zu exportieren, um sie als Referenz zu verwenden.
Hier sehen Sie, dass Ihre Ressource als ARM Template .
2. Lesen Sie die offiziellen Dokumente
Als Nächstes können Sie auf offizielle Microsoft-Dokumente 1 verweisen. In diesem Dokument finden Sie, welche Art von Eigenschaften definiert sind, welche Art von Wert angegeben werden kann usw. Sie können die exportierte Vorlage ändern, indem Sie diese Dokumente lesen. Beispielvorlagen finden Sie auch unten auf jeder Referenzseite.
3. Überprüfen Sie die REST-API-Referenz
In einigen Fällen finden Sie keine Erklärungen zu den Details eines Eigenschaftsobjekts der ARM Template .
In diesem Fall kann Ihnen die REST-API-Referenz helfen.
Wenn Sie Ihre ARM Template ausführen, werden zugehörige REST-APIs im Backend aufgerufen.
Dies bedeutet, dass Sie die Objektdefinition anhand der REST-API-Referenz 2 erraten können.
Andere Tipps
Template Function
Sie können Vorlagenfunktionen verwenden, um Azure-Ressourcen effektiv darzustellen.
Sie können beispielsweise die copy verwenden, um ein Array-Objekt zu erstellen.
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}Angenommen, ipAddressArray ist ein Zeichenfolgenparameter, der eine durch Komma getrennte IP-Adresse darstellt.
10.0.0.0/16,10.0.1.0/16,...
Diese ARM Template wird wie folgt kompiliert:
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}Sie können sehen , ipSecurityRestrictions ist definiert durch copy
Weitere Informationen finden Sie im offiziellen Microsoft-Dokument 3.
Andere Werkzeuge
Resource Explorer
Resource Explorer 4 ist auch hilfreich, um zu verstehen, wie die Ressource als JSON-Format beschrieben wird.
Dieses Tool ist nützlich, wenn Sie die Eigenschaften der Ressource überprüfen möchten.
Angenommen, Sie müssen die verwaltete managedId von der API Management managedId .
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 hilft Ihnen, die Struktur der Ressource zu verstehen.
In diesem Fall können Sie die ID über identity.principalId abrufen.
Hier ist also die template function für den Zugriff auf die ID.
1"[reference(parameters('resourceId'), 'api-version', 'Full').identity.principalId]"ARM Template Viewer
ARM Template Viewer , eine Erweiterung von Visual Studio Code , ist auch nützlich, um Ihre Ressourcen zu visualisieren.
Hier ist ein Diagramm, das von ARM Template Viewer .
Es wird Ihnen helfen zu verstehen, wie jede Ressource voneinander abhängt.
Zusammenfassung
In diesem Artikel habe ich erklärt, wie eine neue ARM Template effizient erstellt wird.
Jetzt können Sie über die ARM Template alle benötigten Ressourcen erstellen. Viel Glück!




