Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Внимание
Azure Blueprints (предварительная версия) будет выведена из эксплуатации 31 января 2027 года, при этом поэтапный вывод из эксплуатации начнется 31 июля 2026 года. Перенесите существующие определения и назначения схем в стеки развертывания (рекомендуется) и спецификации шаблонов. Артефакты схемы преобразуются в JSON-шаблоны ARM или Bicep-файлы, которые используются для определения стеков развертывания. Сведения о полном поэтапном графике, последствиях и часто задаваемых вопросах см. в разделе О прекращении поддержки Azure Blueprints или https://aka.ms/AzureBlueprintsRetirement. Сведения о том, как создать артефакт в качестве ресурса ARM, см. в статье:
Из этого руководства вы узнаете, как с помощью службы Azure Blueprints выполнять некоторые общие задачи, связанных с созданием, публикацией и назначением схемы в вашей организации. Этот навык помогает создавать стандартные шаблоны для разработки многоразовых и быстро развертываемых конфигураций на основе шаблонов, политик и правил безопасности Azure Resource Manager (ARM).
Предварительные требования
- Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
- Если вы ранее не использовали Azure Blueprints, зарегистрируйте поставщик ресурсов, выполнив команду
az provider register --namespace Microsoft.Blueprintв Azure CLI.
Azure Cloud Shell
В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере. Для работы со службами Azure можно использовать Bash или PowerShell с Cloud Shell. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.
Начало работы с Azure Cloud Shell
| Вариант | Пример и ссылка |
|---|---|
| Нажмите кнопку Попробовать в правом верхнем углу блока кода или команд. При нажатии кнопки Попробовать код или команда не копируется в Cloud Shell автоматически. |
|
| Чтобы открыть Cloud Shell в браузере, перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell. |
|
| Нажмите кнопку Cloud Shell в строке меню в правом верхнем углу окна портала Azure. |
|
Чтобы использовать Azure Cloud Shell, выполните следующие действия:
Запустите Cloud Shell.
Нажмите кнопку Копировать в блоке кода (или блоке команд), чтобы скопировать код или команду.
Вставьте код или команду в окно сеанса Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS.
Нажмите клавишу ВВОД, чтобы запустить код или команду.
Добавление расширения схемы
Чтобы разрешить Azure CLI управлять определениями и назначениями схем, необходимо добавить расширение. Это расширение работает везде, где можно использовать Azure CLI. К ним относятся bash в Windows 10, Cloud Shell (как автономная версия, так и версия в портале), образ Azure CLI Docker или локально установленное расширение.
Убедитесь, что установлена последняя версия Azure CLI (не ниже 2.0.76). Если она еще не установлена, выполните эти инструкции.
В выбранной вами среде Azure CLI импортируйте расширение с помощью следующей команды:
# Add the Blueprint extension to the Azure CLI environment az extension add --name blueprintПроверьте установку расширения и номер версии (не ниже 0.1.0):
# Check the extension list (note that you might have other extensions installed) az extension list # Run help for extension options az blueprint -h
Создание схемы
Первым этапом при определении стандартной модели соответствия требованиям является формирование схемы на основе доступных ресурсов. Мы создадим схему с именем MyBlueprint для настройки назначения ролей и политик для подписки. Затем мы добавим группу ресурсов, шаблон ARM и назначение ролей группе ресурсов.
Примечание.
При использовании Azure CLI сначала создается объект схемы. Для каждого добавляемого артефакта с параметрами нужно заранее определить параметры в исходной схеме.
Создайте исходный объект схемы. Параметр
parametersпринимает JSON-файл, содержащий все параметры уровня схемы. Эти параметры задаются во время назначения и используются артефактами, которые вы добавите на следующих шагах.JSON-файл — blueprintparms.json
{ "storageAccountType": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_ZRS", "Premium_LRS" ], "metadata": { "displayName": "storage account type.", "description": null } }, "tagName": { "type": "string", "metadata": { "displayName": "The name of the tag to provide the policy assignment.", "description": null } }, "tagValue": { "type": "string", "metadata": { "displayName": "The value of the tag to provide the policy assignment.", "description": null } }, "contributors": { "type": "array", "metadata": { "description": "List of AAD object IDs that is assigned Contributor role at the subscription", "strongType": "PrincipalId" } }, "owners": { "type": "array", "metadata": { "description": "List of AAD object IDs that is assigned Owner role at the resource group", "strongType": "PrincipalId" } } }Команда Azure CLI
# Login first with az login if not using Cloud Shell # Create the blueprint object az blueprint create \ --name 'MyBlueprint' \ --description 'This blueprint sets tag policy and role assignment on the subscription, creates a ResourceGroup, and deploys a resource template and role assignment to that ResourceGroup.' \ --parameters blueprintparms.jsonПримечание.
При импорте определений схем используйте имя файла blueprint.json. Это имя файла используется при вызове az blueprint import.
По умолчанию объект схемы создается в подписке, заданной по умолчанию. Чтобы указать группу управления, используйте параметр
managementgroup. Чтобы указать подписку, используйте параметрsubscription.
Добавьте в определение группу ресурсов для артефактов хранилища.
az blueprint resource-group add \ --blueprint-name 'MyBlueprint' \ --artifact-name 'storageRG' \ --description 'Contains the resource template deployment and a role assignment.'Добавьте назначение роли на уровне подписки. В приведенном ниже примере идентификаторы субъектов, которым назначена указанная роль, настраиваются через параметр, задаваемый во время назначения схемы. В этом примере используется встроенная роль
Contributorс идентификатором GUIDb24988ac-6180-42a0-ab88-20f7382dd24c.az blueprint artifact role create \ --blueprint-name 'MyBlueprint' \ --artifact-name 'roleContributor' \ --role-definition-id '/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c' \ --principal-ids "[parameters('contributors')]"Добавьте назначение политики на уровне подписки. В этом примере используется встроенная политика
Apply tag and its default value to resource groupsс идентификатором GUID49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.JSON-файл — artifacts\policyTags.json
{ "tagName": { "value": "[parameters('tagName')]" }, "tagValue": { "value": "[parameters('tagValue')]" } }Команда Azure CLI
az blueprint artifact policy create \ --blueprint-name 'MyBlueprint' \ --artifact-name 'policyTags' \ --policy-definition-id '/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71' \ --display-name 'Apply tag and its default value to resource groups' \ --description 'Apply tag and its default value to resource groups' \ --parameters artifacts\policyTags.jsonПримечание.
При использовании
az blueprintна компьютерах Mac замените\на/в значениях параметров, которые включают путь. В этом случае значениеparametersпримет видartifacts/policyTags.json.
Добавьте в подписку еще одно назначение политики для тега хранилища (повторно используя параметр
storageAccountType_ parameter). Этот дополнительный артефакт назначения политики демонстрирует, что параметр, определённый в плане, может использоваться более чем одним артефактом. В этом примере вы используетеstorageAccountType, чтобы задать тег для группы ресурсов. Это значение предоставляет сведения об учетной записи хранения, которая будет создана на следующем шаге. В этом примере используется встроенная политикаApply tag and its default value to resource groupsс идентификатором GUID49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.JSON-файл — artifacts\policyStorageTags.json
{ "tagName": { "value": "StorageType" }, "tagValue": { "value": "[parameters('storageAccountType')]" } }Команда Azure CLI
az blueprint artifact policy create \ --blueprint-name 'MyBlueprint' \ --artifact-name 'policyStorageTags' \ --policy-definition-id '/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71' \ --display-name 'Apply storage tag to resource group' \ --description 'Apply storage tag and the parameter also used by the template to resource groups' \ --parameters artifacts\policyStorageTags.jsonПримечание.
При использовании
az blueprintна компьютерах Mac замените\на/в значениях параметров, которые включают путь. В этом случае значениеparametersпримет видartifacts/policyStorageTags.json.
Добавьте шаблон в группу ресурсов. Параметр
templateшаблона ARM включает обычные компоненты JSON шаблона. Шаблон также повторно использует параметры схемыstorageAccountType,tagNameиtagValue, передавая каждый из них в шаблон. Параметры схемы доступны шаблону за счет использования параметраparameters. В коде JSON-шаблона эта пара "ключ — значение" используется для внедрения значения. Имена параметров схемы и шаблона могут быть одинаковыми.JSON-файл шаблона ARM — artifacts\templateStorage.json
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageAccountTypeFromBP": { "type": "string", "metadata": { "description": "Storage Account type" } }, "tagNameFromBP": { "type": "string", "defaultValue": "NotSet", "metadata": { "description": "Tag name from blueprint" } }, "tagValueFromBP": { "type": "string", "defaultValue": "NotSet", "metadata": { "description": "Tag value from blueprint" } } }, "variables": { "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]" }, "resources": [{ "type": "Microsoft.Storage/storageAccounts", "name": "[variables('storageAccountName')]", "apiVersion": "2016-01-01", "tags": { "[parameters('tagNameFromBP')]": "[parameters('tagValueFromBP')]" }, "location": "[resourceGroup().location]", "sku": { "name": "[parameters('storageAccountTypeFromBP')]" }, "kind": "Storage", "properties": {} }], "outputs": { "storageAccountSku": { "type": "string", "value": "[variables('storageAccountName')]" } } }JSON-файл параметров шаблона ARM — artifacts\templateStorageParams.json
{ "storageAccountTypeFromBP": { "value": "[parameters('storageAccountType')]" }, "tagNameFromBP": { "value": "[parameters('tagName')]" }, "tagValueFromBP": { "value": "[parameters('tagValue')]" } }Команда Azure CLI
az blueprint artifact template create \ --blueprint-name 'MyBlueprint' \ --artifact-name 'templateStorage' \ --template artifacts\templateStorage.json \ --parameters artifacts\templateStorageParams.json \ --resource-group-art 'storageRG'Примечание.
При использовании
az blueprintна компьютерах Mac замените\на/в значениях параметров, которые включают путь. В этом случае значениеtemplateпримет видartifacts/templateStorage.json, аparameters—artifacts/templateStorageParams.json.
Добавьте назначение ролей в группу ресурсов. Как и в предыдущем фрагменте назначения ролей, в примере ниже применяется идентификатор для роли
Owner, но из схемы для него передается другой параметр. В этом примере используется встроенная рольOwnerс идентификатором GUID8e3af657-a8ff-443c-a75c-2fe8c4bcb635.az blueprint artifact role create \ --blueprint-name 'MyBlueprint' \ --artifact-name 'roleOwner' \ --role-definition-id '/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635' \ --principal-ids "[parameters('owners')]" \ --resource-group-art 'storageRG'
Публикация схемы
Теперь, когда артефакты добавлены в схему, пора ее опубликовать. Публикация делает схему доступной для назначения подписке.
az blueprint publish --blueprint-name 'MyBlueprint' --version '{BlueprintVersion}'
Значение {BlueprintVersion} представляет собой строку, состоящую из букв, цифр и дефисов (без пробелов или других специальных символов), Оно может содержать до 20 знаков. Оно должно быть уникальным и информативным, например v20200605-135541.
Назначить шаблон
После публикации схемы с помощью Azure CLI ее можно назначить для подписки. Назначьте созданный вами проект одной из подписок в вашей иерархии групп управления. Если схема сохранена в подписке, ее можно назначить только для этой подписки. Параметр blueprint-name задает схему, назначаемую. Чтобы указать параметры name, location, identity, lock и blueprint, используйте соответствующие параметры Azure CLI для команды az blueprint assignment create или укажите их в JSON-файле параметров.
Запустите развертывание схемы, назначив ее подписке. Поскольку в параметрах
contributorsиownersдолжны быть переданы массивы идентификаторовobjectIdsсубъектов, которым должно быть предоставлено назначение ролей, используйте API Graph Azure Active Directory для сбора идентификаторовobjectIds, которые вы затем будете использовать в параметреparametersдля собственных пользователей, групп или субъектов-служб.JSON-файл — blueprintAssignment.json
{ "storageAccountType": { "value": "Standard_GRS" }, "tagName": { "value": "CostCenter" }, "tagValue": { "value": "ContosoIT" }, "contributors": { "value": [ "7be2f100-3af5-4c15-bcb7-27ee43784a1f", "38833b56-194d-420b-90ce-cff578296714" ] }, "owners": { "value": [ "44254d2b-a0c7-405f-959c-f829ee31c2e7", "316deb5f-7187-4512-9dd4-21e7798b0ef9" ] } }Команда Azure CLI
az blueprint assignment create \ --name 'assignMyBlueprint' \ --location 'westus' \ --resource-group-value artifact_name=storageRG name=StorageAccount location=eastus \ --parameters blueprintAssignment.jsonУправляемая идентичность, назначаемая пользователем
Для назначения шаблона также можно использовать управляемую идентификацию, назначаемую пользователем. В этом случае для параметра
identity-typeзадается значениеUserAssigned, а параметрuser-assigned-identitiesзадает идентификатор. Замените{userIdentity}именем управляемой идентичности, назначенной пользователем.az blueprint assignment create \ --name 'assignMyBlueprint' \ --location 'westus' \ --identity-type UserAssigned \ --user-assigned-identities {userIdentity} \ --resource-group-value artifact_name=storageRG name=StorageAccount location=eastus \ --parameters blueprintAssignment.jsonНазначаемое пользователем управляемое удостоверение может находиться в любой подписке и группе ресурсов, на доступ к которым у пользователя, назначающего схему, есть разрешения.
Внимание
Azure Blueprints не администрирует управляемое удостоверение, назначаемое пользователем. Пользователи несут ответственность за назначение достаточных ролей и разрешений, иначе назначение плана завершится ошибкой.
Очистка ресурсов
Вы можете удалить шаблон из подписки. Удаление часто выполняется, когда ресурсы артефакта больше не требуются. При удалении шаблона артефакты, назначенные в рамках этого шаблона, остаются. Чтобы удалить назначение схемы, используйте команду az blueprint assignment delete:
az blueprint assignment delete --name 'assignMyBlueprint'
Следующие шаги
В рамках этого краткого руководства вы создали, назначили и удалили схему с помощью Azure CLI. Чтобы узнать больше о схемах Azure, перейдите к статье о жизненном цикле схемы.