Опишите ресурсы Azure как ARM Template

⏱️2 мин
Поделиться:

ARM Template - это файл формата json, который определяет ресурсы Azure. ARM Template поможет вам реализовать практику инфраструктуры в виде кода. Тем не менее, ARM Template немного сложно создать. Итак, на этот раз я расскажу вам, как эффективно создать ARM Template , когда вам нужно развернуть новый ресурс. Я начну с объяснения способа быстрого понимания того, как описать новый ресурс в формате json, а затем покажу несколько примеров.

1. Экспорт шаблона из Azure Portal

Сложно создать шаблон с нуля. Поэтому я рекомендую сначала создать целевой ресурс на портале Azure, а затем экспортировать шаблон ресурса, чтобы использовать его в качестве справочного материала.

Export template1 Export template2

Здесь вы можете увидеть, что ваш ресурс описан как ARM Template .

2. Читайте официальные документы

Далее вы можете обратиться к официальным документам Microsoft 1. В этом документе вы можете найти, какие свойства определены, какое значение может быть указано и т. Д. Вы можете изменить экспортированный шаблон, прочитав эти документы. Вы также можете найти образцы шаблонов внизу каждой справочной страницы.

Quick start template

3. Проверьте ссылку REST API

В некоторых случаях Вы не можете найти какие-либо пояснения относительно деталей какого-либо объекта свойства в ARM Template . В этом случае вам может помочь ссылка на REST API. Когда вы запускаете ARM Template , в бэкэнде вызываются связанные API REST. Это означает, что вы можете угадать определение объекта по ссылке REST API 2.

Другие советы

Template Function

Вы можете использовать функции шаблона для эффективного представления ресурсов Azure. Например, вы можете использовать функцию copy для создания объекта массива.

json
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}

Предположим, что ipAddressArray является строковым параметром, который представляет собой набор IP-адресов, разделенных запятой. 10.0.0.0/16,10.0.1.0/16,...

Этот ARM Template будет скомпилирован так:

json
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}

Вы можете видеть, что ipSecurityRestrictions определяется функцией copy . Для получения дополнительной информации см. Официальный документ Microsoft 3.

Другие инструменты

Resource Explorer

Resource Explorer 4 также полезен для понимания того, как описать ресурс в формате json.

Resource Explorer

Этот инструмент полезен, когда вы хотите проверить свойства ресурса. Предположим, вам нужно получить managedId из API Management .

json
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": null
41 },
42 "sku": {
43 "name": "Developer",
44 "capacity": 1
45 },
46 "identity": {
47 "type": "SystemAssigned",
48 "principalId": "your-id",
49 "tenantId": "your-tenant"
50 }
51 },

Resource Explorer поможет вам понять структуру ресурса. В этом случае вы можете получить идентификатор с помощью identity.principalId .

Итак, вот template function для доступа к идентификатору;

json
1"[reference(parameters('resourceId'), 'api-version', 'Full').identity.principalId]"

ARM Template Viewer

ARM Template Viewer , который является расширением Visual Studio Code , также полезен для визуализации ваших ресурсов. Вот диаграмма, созданная ARM Template Viewer .

ARM Template Viewer

Это поможет вам понять, как каждый ресурс зависит друг от друга.

Резюме

В этой статье я объяснил, как эффективно создать новый ARM Template . Теперь вы можете создавать любые необходимые ресурсы с помощью ARM Template . Удачи!

Footnotes

  1. Define resources in Azure Resource Manager templates

  2. Azure REST API Reference

  3. Azure Resource Manager template functions

  4. Resource Explorer

Поделиться:

Связанные статьи