Beschrijf Azure-resources als ARM Template

Dit artikel is meer dan een jaar geleden gepubliceerd. De informatie kan verouderd zijn.
ARM Template is een json-formaatbestand dat Azure-resources definieert.
ARM Template helpt u de praktijk van infrastructuur als een code te realiseren.
ARM Template is echter in de eerste plaats een beetje moeilijk te maken.
Dus deze keer ga ik je vertellen hoe je ARM Template efficiënt kunt maken, wanneer je een nieuwe bron moet implementeren.
Ik zal beginnen met het uitleggen van de manier om snel te begrijpen hoe een nieuwe bron als json-indeling moet worden beschreven, en vervolgens enkele voorbeelden te laten zien.
1. Sjabloon exporteren vanuit Azure Portal
Het is moeilijk om helemaal opnieuw een sjabloon te maken. Dus ik raad u aan om eerst de doelresource op Azure Portal te maken en vervolgens de sjabloon van de resource te exporteren om deze als referentie te gebruiken.
Hier kunt u zien dat uw bron wordt beschreven als ARM Template .
2. Lees officiële documenten
Vervolgens kunt u verwijzen naar de officiële documenten van Microsoft 1. In dit document kunt u zien wat voor soort eigenschappen zijn gedefinieerd, wat voor soort waarde kan worden gespecificeerd, enz. U kunt de geëxporteerde sjabloon wijzigen door deze documenten te lezen. Onderaan elke referentiepagina vindt u ook voorbeeldsjablonen.
3. Controleer de REST API-referentie
In sommige gevallen kunt u geen uitleg vinden over de details van een eigendomsobject van ARM Template .
In dat geval kan de REST API-referentie u helpen.
Wanneer u uw ARM Template uitvoert, worden bijbehorende REST-API's aangeroepen in de backend.
Dit betekent dat u de objectdefinitie kunt raden aan de hand van de REST API-referentie 2.
Andere tips
Template Function
U kunt sjabloonfuncties gebruiken om Azure-resources effectief weer te geven.
U kunt bijvoorbeeld de copy gebruiken om een matrixobject te maken.
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}Stel dat ipAddressArray een tekenreeksparameter is die een set IP-adressen vertegenwoordigt die is gesplitst door een komma.
10.0.0.0/16,10.0.1.0/16,...
Deze ARM Template wordt als volgt samengesteld:
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}U kunt zien dat ipSecurityRestrictions wordt gedefinieerd door de copy .
Zie het officiële document van Microsoft 3 voor meer informatie.
Andere tools
Resource Explorer
Resource Explorer 4 is ook handig voor u om te begrijpen hoe u de resource als json-indeling beschrijft.
Deze tool is handig wanneer u de eigenschappen van de bron wilt controleren.
Stel dat u managedId moet managedId van 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 helpt u de structuur van de resource te begrijpen.
In dit geval kunt u de id ophalen via identity.principalId .
Hier is dus de template function om toegang te krijgen tot de id;
1"[reference(parameters('resourceId'), 'api-version', 'Full').identity.principalId]"ARM Template Viewer
ARM Template Viewer , een uitbreiding van Visual Studio Code , is ook handig om uw bronnen te visualiseren.
Hier is een diagram gemaakt door ARM Template Viewer .
Het zal u helpen te begrijpen hoe elke bron van elkaar afhangt.
Samenvatting
In dit artikel heb ik uitgelegd hoe u efficiënt een nieuwe ARM Template .
Nu kunt u alle bronnen maken die u nodig heeft via ARM Template . Succes!




