Включить методах безопасного развертывания с помощью диспетчера развертывания Azure (Предварительная версия)Enable safe deployment practices with Azure Deployment Manager (Public preview)

Чтобы развернуть службу в нескольких регионах и обеспечить ее правильную работу в них, можно использовать диспетчер развертывания Azure, чтобы координировать поэтапное развертывание службы.To deploy your service across many regions and make sure it's running as expected in each region, you can use Azure Deployment Manager to coordinate a staged rollout of the service. Как и для любого развертывания Azure, ресурсы для службы определяются в шаблонах Resource Manager.Just as you would for any Azure deployment, you define the resources for your service in Resource Manager templates. После создания шаблонов используйте диспетчер развертывания, чтобы описать топологию службы и ее развертывание.After creating the templates, you use Deployment Manager to describe the topology for your service and how it should be rolled out.

Диспетчер развертывания — это компонент Resource Manager.Deployment Manager is a feature of Resource Manager. Он расширяет возможности во время развертывания.It expands your capabilities during deployment. Используйте диспетчер развертывания, если вам нужно развернуть сложную службу в нескольких регионах.Use Deployment Manager when you have a complex service that needs to be deployed to several regions. Помещая выпуск службы на промежуточное хранение и обработку, можно обнаружить потенциальные проблемы, прежде чем он будет развернут во всех регионах.By staging the rollout of your service, you can find potential problems before it has been deployed to all regions. Если вам не нужны дополнительные меры предосторожности поэтапного развертывания, используйте стандартные варианты развертывания с помощью Resource Manager.If you don't need the extra precautions of a staged rollout, use the standard deployment options for Resource Manager. Диспетчер развертывания легко интегрируется со всеми имеющимися сторонними инструментами, которые поддерживают развертывания Resource Manager, такими как предложения для непрерывной интеграции и непрерывной доставки (CI/CD).Deployment Manager seamlessly integrates with all existing third-party tools that support Resource Manager deployments, such as continuous integration and continuous delivery (CI/CD) offerings.

Azure Deployment Manager находится в предварительной версии.Azure Deployment Manager is in preview. Помогите нам улучшить функцию, предоставляя отзывы.Help us improve the feature by providing feedback.

Чтобы использовать диспетчер развертывания, необходимо создать четыре файла:To use Deployment Manager, you need to create four files:

  • шаблон топологии;Topology template
  • шаблон развертывания;Rollout template
  • файл параметров для топологии;Parameter file for topology
  • файл параметров для развертывания.Parameter file for rollout

Сначала развертывается шаблон топологии, а затем — шаблон развертывания.You deploy the topology template before deploying the rollout template.

Дополнительные ресурсы:Additional resources:

Удостоверение и доступIdentity and access

Диспетчер развертывания использует управляемое удостоверение, назначаемое пользователем, для выполнения операций развертывания.With Deployment Manager, a user-assigned managed identity performs the deployment actions. Это удостоверение создается перед началом развертывания.You create this identity before starting your deployment. Ему должен быть предоставлен доступ к подписке, в которую развертывается служба, а также достаточные разрешения для выполнения развертывания.It must have access to the subscription you're deploying the service to, and sufficient permission to complete the deployment. Сведения о действиях, разрешаемых с помощью ролей, см. в разделе Встроенные роли для ресурсов Azure.For information about the actions granted through roles, see Built-in roles for Azure resources.

Удостоверение должны находиться в одном расположении с развертыванием.The identity must reside in the same location as the rollout.

Шаблон топологииTopology template

Шаблон топологии описывает ресурсы Azure для создания службы и расположение их развертывания.The topology template describes the Azure resources that make up your service and where to deploy them. На следующем рисунке показана топология для примера службы.The following image shows the topology for an example service:

Иерархия: от топологии службы к службам и модулям службы

В шаблоне топологии указаны следующие ресурсы.The topology template includes the following resources:

  • Источник артефактов указывает место хранения шаблонов Resource Manager и параметров.Artifact source - where your Resource Manager templates and parameters are stored
  • Топология службы указывает источник артефактов.Service topology - points to artifact source
    • Службы указывают расположение и идентификатор подписки Azure.Services - specifies location and Azure subscription ID
      • Модули службы определяют группу ресурсов, режим развертывания и путь к файлам шаблонов и параметров.Service units - specifies resource group, deployment mode, and path to template and parameter file

Чтобы понять, что происходит на каждом уровне, поможет выяснить, какие значения вы указываете.To understand what happens at each level, it's helpful to see which values you provide.

Значения для каждого уровня

Источник артефактов для шаблоновArtifact source for templates

В шаблоне топологии вы создаете источник артефактов, в котором расположены файлы шаблонов и параметров.In your topology template, you create an artifact source that holds the templates and parameters files. Источник артефактов позволяет извлечь эти файлы для развертывания.The artifact source is a way to pull the files for deployment. Вы увидите другой источник артефактов для двоичных файлов далее в этой статье.You'll see another artifact source for binaries later in this article.

В следующем примере показан общий формат источника артефактов.The following example shows the general format of the artifact source.

{
    "type": "Microsoft.DeploymentManager/artifactSources",
    "name": "<artifact-source-name>",
    "location": "<artifact-source-location>",
    "apiVersion": "2018-09-01-preview",
    "properties": {
        "sourceType": "AzureStorage",
        "artifactRoot": "<root-folder-for-templates>",
        "authentication": {
            "type": "SAS",
            "properties": {
                "sasUri": "<SAS-URI-for-storage-container>"
            }
        }
    }
}

Дополнительные сведения см. в справочнике по шаблону artifactSources.For more information, see artifactSources template reference.

Топология службы:Service topology

В следующем примере показан общий формат источника топологии службы.The following example shows the general format of the service topology resource. Следует указать идентификатор ресурса источника артефактов, который содержит файлы шаблонов и файл параметров.You provide the resource ID of the artifact source that holds the templates and parameter files. Топология службы включает в себя все ресурсы службы.The service topology includes all service resources. Чтобы обеспечить доступность источника артефактов, топология службы зависит от него.To make sure the artifact source is available, the service topology depends on it.

{
    "type": "Microsoft.DeploymentManager/serviceTopologies",
    "name": "<topology-name>",
    "location": "<topology-location>",
    "apiVersion": "2018-09-01-preview",
    "properties": {
        "artifactSourceId": "<resource-ID-artifact-source>"
    },
    "dependsOn": [
        "<artifact-source>"
    ],
    "resources": [
        {
            "type": "services",
            ...
        }
    ]
}

Дополнительные сведения см. в справочнике по шаблону serviceTopologies.For more information, see serviceTopologies template reference.

СлужбыServices

В следующем примере показан общий формат ресурса служб.The following example shows the general format of the services resource. В каждой службе следует указать расположение и идентификатор подписки Azure, используемой для развертывания службы.In each service, you provide the location and Azure subscription ID to use for deploying your service. Чтобы выполнить развертывание в нескольких регионах, нужно определить службу для каждого региона.To deploy to several regions, you define a service for each region. Служба зависит от топологии службы.The service depends on the service topology.

{
    "type": "services",
    "name": "<service-name>",
    "location": "<service-location>",
    "apiVersion": "2018-09-01-preview",
    "dependsOn": [
        "<service-topology>"
    ],
    "properties": {
        "targetSubscriptionId": "<subscription-ID>",
        "targetLocation": "<location-of-deployed-service>"
    },
    "resources": [
        {
            "type": "serviceUnits",
            ...
        }
    ]
}

Дополнительные сведения см. в справочнике по шаблону services.For more information, see services template reference.

Единицы измерения службыService Units

В следующем примере показан общий формат ресурса модулей службы.The following example shows the general format of the service units resource. В каждом модуле службы следует указать группу ресурсов, режим развертывания и путь к файлу шаблона и файлу параметров.In each service unit, you specify the resource group, the deployment mode to use for deployment, and the path to the template and parameter file. Если указать относительный путь к файлам шаблона и параметров, полный путь составляется на основе корневого каталога в источнике артефактов.If you specify a relative path for the template and parameters, the full path is constructed from the root folder in the artifacts source. Можно указать абсолютный путь к файлам шаблона и параметров, но вы не сможете легко управлять версиями выпусков.You can specify an absolute path for the template and parameters, but you lose the ability to easily version your releases. Модуль службы зависит от службы.The service unit depends on the service.

{
    "type": "serviceUnits",
    "name": "<service-unit-name>",
    "location": "<service-unit-location>",
    "apiVersion": "2018-09-01-preview",
    "dependsOn": [
        "<service>"
    ],
    "tags": {
        "serviceType": "Service West US Web App"
    },
    "properties": {
        "targetResourceGroup": "<resource-group-name>",
        "deploymentMode": "Incremental",
        "artifacts": {
            "templateArtifactSourceRelativePath": "<relative-path-to-template>",
            "parametersArtifactSourceRelativePath": "<relative-path-to-parameter-file>"
        }
    }
}

Каждый шаблон должен включать в себя связанные ресурсы, которые вы хотите развернуть за один шаг.Each template should include the related resources that you want to deploy in one step. Например, модуль службы может определять шаблон, который развертывает все ресурсы для внешнего интерфейса службы.For example, a service unit could have a template that deploys all of the resources for your service's front end.

Дополнительные сведения см. в справочнике по шаблону serviceUnits.For more information, see serviceUnits template reference.

Шаблон развертыванияRollout template

Шаблон развертывания описывает действия, выполняемые при развертывании службы.The rollout template describes the steps to take when deploying your service. Следует указать используемую топологию службы и определить порядок развертывания модулей службы.You specify the service topology to use and define the order for deploying service units. В шаблоне указывается источник артефактов для хранения двоичных файлов, необходимых для развертывания.It includes an artifact source for storing binaries for the deployment. В шаблоне развертывания следует определить следующую иерархию.In your rollout template, you define the following hierarchy:

  • Источник артефактов.Artifact source
  • ШагStep
  • Развертывание:Rollout
    • группы шагов;Step groups
      • операции развертывания.Deployment operations

На рисунке ниже показана иерархия шаблона развертывания.The following image shows the hierarchy of the rollout template:

Иерархия: от развертывания к отдельным шагам

Каждое развертывание может включать в себя несколько групп шагов.Each rollout can have many step groups. Каждая группа шагов содержит одну операцию развертывания, которая указывает на модуль службы в топологии службы.Each step group has one deployment operation that points to a service unit in the service topology.

Источник артефактов для двоичных файловArtifact source for binaries

В шаблоне развертывания следует создать источник артефактов для двоичных файлов, которые необходимо развернуть в службе.In the rollout template, you create an artifact source for the binaries you need to deploy to the service. Он аналогичен источнику артефактов для шаблонов, за исключением того, что содержит сценарии, веб-страницы, скомпилированный код или другие файлы, необходимые для вашей службы.This artifact source is similar to the artifact source for templates, except that it contains the scripts, web pages, compiled code, or other files needed by your service.

ДействияSteps

Вы можете определить шаг, выполняемый до или после операции развертывания.You can define a step to perform either before or after your deployment operation. В настоящее время только wait шаг и шаг «healthCheck» доступны.Currently, only the wait step and the 'healthCheck' step are available.

Шаге wait приостанавливает развертывания, после чего его можно продолжить.The wait step pauses the deployment before continuing. Это позволяет проверить, что правильно ли работает служба, прежде чем развертывать следующий модуль службы.It allows you to verify that your service is running as expected before deploying the next service unit. В следующем примере показан общий формат шага wait.The following example shows the general format of a wait step.

{
    "apiVersion": "2018-09-01-preview",
    "type": "Microsoft.DeploymentManager/steps",
    "name": "waitStep",
        "location": "<step-location>",
    "properties": {
        "stepType": "wait",
        "attributes": {
          "duration": "PT1M"
        }
    }
},

Свойство duration использует стандарт ISO 8601.The duration property uses ISO 8601 standard. Предыдущий пример указывает длительность ожидания в 1 минуту.The preceding example specifies a one-minute wait.

Дополнительные сведения о на этапе проверки работоспособности, см. в разделе вводят работоспособности интеграции развертывания для диспетчера развертывания Azure и руководства: Use health check in Azure Deployment Manager (Учебник по использованию проверки работоспособности в диспетчере развертывания Azure).For more information about the health check step, see Introduce health integration rollout to Azure Deployment Manager and Tutorial: Use health check in Azure Deployment Manager.

Дополнительные сведения см. в справочнике по шаблону steps.For more information, see steps template reference.

ВыпускиRollouts

Чтобы обеспечить доступность источника артефактов, развертывание зависит от него.To make sure the artifact source is available, the rollout depends on it. Развертывание определяет группы шагов для каждого модуля службы, который развертывается.The rollout defines steps groups for each service unit that is deployed. Можно определить действия, выполняемые до или после развертывания.You can define actions to take before or after deployment. Например, можно приостановить развертывание после развертывания модуля службы.For example, you can specify that the deployment wait after the service unit has been deployed. Можно определить порядок групп шагов.You can define the order of the step groups.

Объект identity указывает управляемое удостоверение, назначаемое пользователем, которое используется для выполнения действий по развертыванию.The identity object specifies the user-assigned managed identity that performs the deployment actions.

В следующем примере показан общий формат развертывания.The following example shows the general format of the rollout.

{
    "type": "Microsoft.DeploymentManager/rollouts",
    "name": "<rollout-name>",
    "location": "<rollout-location>",
    "apiVersion": "2018-09-01-preview",
    "Identity": {
        "type": "userAssigned",
        "identityIds": [
            "<managed-identity-ID>"
        ]
    },
    "dependsOn": [
        "<artifact-source>"
    ],
    "properties": {
        "buildVersion": "1.0.0.0",
        "artifactSourceId": "<artifact-source-ID>",
        "targetServiceTopologyId": "<service-topology-ID>",
        "stepGroups": [
            {
                "name": "stepGroup1",
                "dependsOnStepGroups": ["<step-group-name>"],
                "preDeploymentSteps": ["<step-ID>"],
                "deploymentTargetId":
                    "<service-unit-ID>",
                "postDeploymentSteps": ["<step-ID>"]
            },
            ...
        ]
    }
}

Дополнительные сведения см. в справочнике по шаблону rollouts.For more information, see rollouts template reference.

Файл параметровParameter file

Следует создать два файла параметров.You create two parameter files. Один файл параметров используется при развертывании топологии службы, а другой — при развертывании ее ресурсов.One parameter file is used when deploying the service topology, and the other is used for the rollout deployment. Некоторые значения в обоих файлах параметров должны быть одинаковыми.There are some values that you need to make sure are the same in both parameter files.

Переменная containerRootcontainerRoot variable

При развертывании с управлением версиями путь к артефактам изменяется с выпуском каждой новой версии.With versioned deployments, the path to your artifacts changes with each new version. Сначала, при развертывании, это может быть путь https://<base-uri-blob-container>/binaries/1.0.0.0.The first time you run a deployment the path might be https://<base-uri-blob-container>/binaries/1.0.0.0. Во второй раз это может быть путь https://<base-uri-blob-container>/binaries/1.0.0.1.The second time it might be https://<base-uri-blob-container>/binaries/1.0.0.1. Диспетчер развертывания упрощает получение правильного корневого пути для текущего развертывания с помощью переменной $containerRoot.Deployment Manager simplifies getting the correct root path for the current deployment by using the $containerRoot variable. Это значение изменяется для каждой версии, оно неизвестно до выполнения развертывания.This value changes with each version and isn't known before deployment.

Используйте переменную $containerRoot в файле параметров для шаблона, чтобы развертывать ресурсы Azure.Use the $containerRoot variable in the parameter file for template to deploy the Azure resources. Во время развертывания эта переменная заменяется фактическими значениями из развертывания.At deployment time, this variable is replaced with the actual values from the rollout.

Например, во время развертывания создается источник артефактов для двоичных артефактов.For example, during rollout you create an artifact source for the binary artifacts.

{
    "type": "Microsoft.DeploymentManager/artifactSources",
    "name": "[variables('rolloutArtifactSource').name]",
    "location": "[parameters('azureResourceLocation')]",
    "apiVersion": "2018-09-01-preview",
    "properties": {
        "sourceType": "AzureStorage",
        "artifactRoot": "[parameters('binaryArtifactRoot')]",
        "authentication" :
        {
            "type": "SAS",
            "properties": {
                "sasUri": "[parameters('artifactSourceSASLocation')]"
            }
        }
    }
},

Обратите внимание на свойства artifactRoot и sasUri.Notice the artifactRoot and sasUri properties. Для корня артефактов можно задать значение, например binaries/1.0.0.0.The artifact root might be set to a value like binaries/1.0.0.0. Универсальный код ресурса (URI) SAS — это универсальный код ресурса (URI) контейнера хранилища с маркером SAS для доступа.The SAS URI is the URI to your storage container with a SAS token for access. Диспетчер развертывания автоматически составляет значение переменной $containerRoot.Deployment Manager automatically constructs the value of the $containerRoot variable. Он объединяет эти значения в формате <container>/<artifactRoot>.It combines those values in the format <container>/<artifactRoot>.

Файл шаблона и файл параметров должны содержать правильный путь для получения двоичных файлов с управлением версиями.Your template and parameter file need to know the correct path for getting the versioned binaries. Например, для развертывания файлов веб-приложения создайте приведенный ниже файл параметров с переменной $containerRoot.For example, to deploy files for a web app, create the following parameter file with the $containerRoot variable. Необходимо использовать две обратные косые черты (\\) в пути, так как первым указывается escape-символ.You must use two backslashes (\\) for the path because the first is an escape character.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "deployPackageUri": {
            "value": "$containerRoot\\helloWorldWebAppWUS.zip"
        }
    }
}

Затем используйте этот параметр в шаблоне.Then, use that parameter in your template:

{
    "name": "MSDeploy",
    "type": "extensions",
    "location": "[parameters('location')]",
    "apiVersion": "2015-08-01",
    "dependsOn": [
        "[concat('Microsoft.Web/sites/', parameters('WebAppName'))]"
    ],
    "tags": {
        "displayName": "WebAppMSDeploy"
    },
    "properties": {
        "packageUri": "[parameters('deployPackageURI')]"
    }
}

Для управления развертываниями с управлением версиями создаются новые папки, пути к которым передаются в качестве корня во время развертывания.You manage versioned deployments by creating new folders and passing in that root during rollout. Этот путь передается в шаблон, который развертывает ресурсы.The path flows through to the template that deploys the resources.

Дальнейшие действияNext steps

В этой статье вы узнали о диспетчере развертывания.In this article, you learned about Deployment Manager. Перейдите к следующей статье, чтобы узнать, как выполнить развертывание с помощью диспетчера развертывания.Proceed to the next article to learn how to deploy with Deployment Manager.