Руководство по Использование условия в шаблонах ARM
Узнайте о том, как развернуть ресурсы Azure на основе условий в шаблоне Azure Resource Manager.
В руководстве по настройке порядка развертывания ресурсов описано, как создать виртуальную машину, виртуальную сеть и некоторые другие зависимые ресурсы, включая учетную запись хранения. Чтобы не создавать учетную запись хранения каждый раз, вы можете позволить пользователям выбрать, создавать ли новую учетную запись хранения или использовать существующую. Для достижения этой цели нужно определить дополнительный параметр. Если значение параметра равно new, будет создана новая учетная запись хранения. В противном случае используется учетная запись хранения с указанным именем.
В рамках этого руководства рассматриваются следующие задачи:
- Открытие шаблона быстрого запуска
- Изменение шаблона
- Развертывание шаблона
- Очистка ресурсов
В этом учебнике рассматривается только основной сценарий с использованием условий. Дополнительные сведения см. в разделе:
- Структура файла шаблона: условие.
- Условное развертывание ресурса в шаблоне ARM.
- Функция шаблона: If.
- Функции сравнения для шаблонов ARM
Сведения о модулях Microsoft Learn с описанием условий см. в статье Управление сложными облачными развертываниями с помощью расширенных функций шаблонов ARM.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Предварительные требования
Для работы с этой статьей необходимо иметь следующее.
Visual Studio Code с расширением средств Resource Manager. См. Краткое руководство. Создание шаблонов ARM с помощью Visual Studio Code.
Для повышения уровня безопасности используйте пароль, созданный для учетной записи администратора виртуальной машины. Azure Cloud Shell можно использовать для выполнения следующей команды в PowerShell или Bash:
openssl rand -base64 32
Чтобы узнать больше, выполните команду
man openssl rand
и откройте страницу вручную.Для защиты криптографических ключей и других секретов используйте Azure Key Vault. Дополнительные сведения см. в статье Учебник. Интеграция с Azure Key Vault при развертывании шаблона ARM. Мы также рекомендуем обновлять пароль каждые три месяца.
Открытие шаблона быстрого запуска
Шаблоны быстрого запуска Azure — это репозиторий для шаблонов ARM. Вместо создания шаблона с нуля можно найти пример шаблона и настроить его. Шаблон, используемый в этом руководстве, называется Deploy a simple Windows VM (Развертывание простой виртуальной машины Windows).
В Visual Studio Code выберите Файл>Открыть файл.
Скопируйте приведенный ниже URL-адрес и вставьте его в поле Имя файла.
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
Чтобы открыть файл, выберите Открыть.
Шаблоном определено шесть ресурсов:
- Microsoft.Storage/storageAccounts.
- Microsoft.Network/publicIPAddresses.
- Microsoft.Network/networkSecurityGroups.
- Microsoft.Network/virtualNetworks.
- Microsoft.Network/networkInterfaces.
- Microsoft.Compute/virtualMachines.
Перед настройкой шаблона рекомендуется ознакомиться с его справочником.
Выберите Файл>Сохранить как, чтобы сохранить файл на локальный компьютер с именем azuredeploy.json.
Изменение шаблона
Внесите два изменения в имеющийся шаблон:
- Добавьте параметр имени для учетной записи хранения. Пользователи могут указать имя новой или существующей учетной записи хранения.
- Добавьте новый параметр с именем
newOrExisting
. Развертывание использует этот параметр для определения того, нужно ли создавать новую учетную запись хранения или использовать имеющуюся.
Вот что нужно сделать, чтобы внести изменения:
Откройте файл azuredeploy.json в Visual Studio Code.
Замените во всем шаблоне
variables('storageAccountName')
наparameters('storageAccountName')
.Удалите следующее определение переменной:
Добавьте следующие два параметра в начало раздела параметров:
"storageAccountName": { "type": "string" }, "newOrExisting": { "type": "string", "allowedValues": [ "new", "existing" ] },
Нажмите клавиши ALT+SHIFT+F, чтобы отформатировать шаблон в Visual Studio Code.
Определение обновленных параметров выглядит так:
Добавьте следующую строку в начало определения учетной записи хранения.
"condition": "[equals(parameters('newOrExisting'),'new')]",
Условие проверяет значение параметра
newOrExisting
. Если значение параметра равно new, то в результате развертывания создается учетная запись хранения.Обновленное определение учетной записи хранения выглядит так:
Обновите свойство
storageUri
определения ресурса виртуальной машины следующим значением:"storageUri": "[format('https://{0}.blob.core.windows.net', parameters('storageAccountName'))]"
Это изменение необходимо при использовании существующей учетной записи хранения с другой группой ресурсов.
Сохраните изменения.
Развертывание шаблона
Войдите в Cloud Shell.
В левом верхнем углу выберите используемую среду — PowerShell или Bash (для CLI). После переключения желательно перезагрузить оболочку.
Выберите Отправка и скачивание файлов, а затем Отправить. См. предыдущий снимок экрана. Выберите файл, сохраненный ранее. После отправки вы можете с помощью команд
ls
иcat
проверить, успешно отправлен ли файл.а затем выполните следующий сценарий PowerShell для его развертывания.
Важно!
Имя учетной записи хранения должно быть уникальным в среде Azure. Имя должно содержать только строчные буквы или цифры. Оно должно содержать не больше 24 знаков. Имя учетной записи хранения — это имя проекта, к которому добавлено слово store. Убедитесь, что имя проекта и созданное имя учетной записи хранения соответствуют требованиям к имени учетной записи хранения.
$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource group name and resource names" $newOrExisting = Read-Host -Prompt "Create new or use existing (Enter new or existing)" $location = Read-Host -Prompt "Enter the Azure location (i.e. centralus)" $vmAdmin = Read-Host -Prompt "Enter the admin username" $vmPassword = Read-Host -Prompt "Enter the admin password" -AsSecureString $dnsLabelPrefix = Read-Host -Prompt "Enter the DNS Label prefix" $resourceGroupName = "${projectName}rg" $storageAccountName = "${projectName}store" New-AzResourceGroup -Name $resourceGroupName -Location $location New-AzResourceGroupDeployment ` -ResourceGroupName $resourceGroupName ` -adminUsername $vmAdmin ` -adminPassword $vmPassword ` -dnsLabelPrefix $dnsLabelPrefix ` -storageAccountName $storageAccountName ` -newOrExisting $newOrExisting ` -TemplateFile "$HOME/azuredeploy.json" Write-Host "Press [ENTER] to continue ..."
Примечание
Развертывание завершается сбоем, если
newOrExisting
— new, а учетная запись хранения с указанным именем уже существует.
Попробуйте выполнить другое развертывания, задав для newOrExisting
значение existing и указав имеющуюся учетную запись хранения. Чтобы создать учетную запись хранения, обратитесь к этой статье.
Очистка ресурсов
Если ресурсы Azure больше не нужны, их можно удалить. Для этого необходимо удалить группу ресурсов. Для удаления группы ресурсов выберите Попробовать, чтобы открыть Cloud Shell. Чтобы вставить сценарий PowerShell, щелкните панель оболочки правой кнопкой мыши и выберите Вставить.
$projectName = Read-Host -Prompt "Enter the same project name you used in the last procedure"
$resourceGroupName = "${projectName}rg"
Remove-AzResourceGroup -Name $resourceGroupName
Write-Host "Press [ENTER] to continue ..."
Дальнейшие действия
В этом руководстве описано, как разработать шаблон, позволяющий пользователю выбирать между созданием учетной записи хранения и использованием существующей. Чтобы узнать, как получать секреты из Azure Key Vault и использовать их в шаблоне развертывания в качестве паролей, обратитесь к статье: