Рубрики
Uncategorized

Шаблоны демистификации рук: связанные и вложенные шаблоны

По мере того, как развертывание ARM становится более сложным, использование связанных и вложенных шаблонов позволяет вам сломать эти DE … помеченные Azure, Cloud, DevOps, учебным пособием.

Шаблоны демистификации рук (12 серии деталей)

По мере того, как развертывание рук становится более сложным, использование связанных и вложенных шаблонов позволяет развернуть эти развертывания на более мелкие многоразовые компоненты.

  • Связанные шаблоны: создайте многоразовое, композиционное и модульное развертывание, состоящие из многих отдельных шаблонов ARM.
  • Вложенные шаблоны: позволяет проводить сценарии расширенного развертывания, такие как развертывание в нескольких областях ARM или нескольких группах ресурсов из одного файла шаблона.

Смотрите следующее для Документация как на связанных, так и вложенных шаблонах Анкет

Azure DevOps — DevOps Lab — видео

Пример связанного шаблона

Чтобы использовать связанные шаблоны, шаблоны должны сначала быть организованы на общедоступной конечной точке, такой как Github или Blob Hore Hore. Рассмотрите возможность использования учетной записи Azure Storage, обеспеченной токеном SAS, чтобы обеспечить защиту ваших шаблонов от общественного доступа. Смотрите Этот документ Больше подробностей.

Чтобы добавить связанный шаблон в шаблон вашего рук, добавьте Microsoft. Ресурсы/развертывания ресурс и Templatelink Свойство настроено с Место шаблона. При необходимости вы также можете Передайте значения параметров в связанный шаблон и Получить вывод из Связанный шаблон во время развертывания.

В приведенном ниже примере основной шаблон развертывает два связанных шаблона. Обратите внимание, что два параметра определены, две переменные удерживают местоположение обоих связанных шаблонов, а два ресурса развертывания определены и настроены, один для каждого из связанных шаблонов.

Ресурс развертывания кулака, хранение Потребляет родительские параметры и развертывает шаблон хранения. Второй ресурс развертывания потребляет родительские параметры, зависит от хранение развертывание, а затем развертывает шаблон личности. Наконец, выход создан для конечной точки учетной записи хранения.

Все три шаблона можно найти в этом хранилище.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "name": {
            "type": "string",
            "defaultValue": "linkeddemo001"
        },
        "location": {
            "type": "string",
            "defaultValue": "eastus"
        }
    },
    "variables": {
        "linked-template": "https://raw.githubusercontent.com/neilpeterson/arm-deployment-demo/master/linked-tempate/artifacts/storage.json",
        "linked-template-two": "https://raw.githubusercontent.com/neilpeterson/arm-deployment-demo/master/linked-tempate/artifacts/identity.json"
    },
    "resources": [
        {
            "name": "storage",
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2019-10-01",
            "properties": {
                "mode": "Incremental",
                "templateLink": {
                    "uri": "[variables('linked-template')]",
                    "contentVersion": "1.0.0.0"
                },
                "parameters": {
                    "name": {"value": "[parameters('name')]"},
                    "location": {"value": "[parameters('location')]"}
                }
            }
        },
        {
            "name": "identity",
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2019-10-01",
            "dependsOn": [
                "[resourceId('Microsoft.Resources/deployments','storage')]"
            ],
            "properties": {
                "mode": "Incremental",
                "templateLink": {
                    "uri": "[variables('linked-template-two')]",
                    "contentVersion": "1.0.0.0"
                },
                "parameters": {
                    "name": {"value": "[parameters('name')]"},
                    "location": {"value": "[parameters('location')]"}
                }
            }
        }
    ],
    "outputs": {
        "storageURI": {
            "type": "string",
            "value": "[reference('storage').outputs.storageEndpoint.value]"
        }
    }
}

Пример вложенного шаблона

В отличие от связанных шаблонов, где каждый шаблон хранится в своих собственных файлах шаблонов, вложенные шаблоны позволяют хранить много отдельных шаблонов в одном файле. Есть несколько причин, по которым вы можете сделать это, например, при развертывании ресурсов для нескольких групп ресурсов или областей развертывания.

Чтобы добавить связанный шаблон в шаблон вашего рук, добавьте Microsoft. Ресурсы/развертывания ресурс и Шаблон свойство, которое содержит вложенный шаблон. Обратите внимание на вложенный шаблон Оценка экспрессии прицелы который определяет, при котором экспрессия шаблона уровня оценивается.

В следующем примере шаблон «родитель» нацелен на Применение развертывания подписки и развертывает группу ресурсов в подписку. Затем вложенный шаблон встроен в родительский шаблон. Вложенный шаблон подходит на уровне группы ресурсов и развертывает учетную запись хранения в группе ресурсов, созданную в родительском шаблоне. Кроме того, обратите внимание, что зависимость создается между вложенным ресурсом развертывания и ресурсом ресурсов. Эта зависимость гарантирует, что ресурсная группа была развернута перед внедрением учетной записи хранилища.

{
    "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "rgName": {
            "type": "string",
            "defaultValue": "nestedouter001"
        },
        "location": {
            "type": "string",
            "defaultValue":"eastus"
        },
        "storageName": {
            "type": "string",
            "defaultValue": "nestedouter001"
        }
    },
    "resources": [
        {
            "name": "[parameters('rgName')]",
            "type": "Microsoft.Resources/resourceGroups",
            "apiVersion": "2019-10-01",
            "location": "[parameters('location')]",
            "tags": {
                "displayname": "resource-group"
            }
        },
        {
            "name": "storage",
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2019-10-01",
            "resourceGroup": "[parameters('rgName')]",
            "dependsOn": [
                "[resourceId('Microsoft.Resources/resourceGroups', parameters('rgName'))]"
            ],
            "properties": {
                "expressionEvaluationOptions": {
                    "scope": "outer"
                },
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "resources": [
                        {
                            "name": "[parameters('storageName')]",
                            "type": "Microsoft.Storage/storageAccounts",
                            "apiVersion": "2019-06-01",
                            "location": "[parameters('location')]",
                            "kind": "StorageV2",
                            "sku": {
                                "name": "Premium_LRS",
                                "tier": "Premium"
                            }
                        }
                    ]
                }
            }
        }
    ]
}

Рекомендации

Шаблоны демистификации рук (12 серии деталей)

Оригинал: «https://dev.to/azure/demystifying-arm-templates-linked-and-nested-templates-51k7»