Развертывание файлов Bicep с помощью Azure PowerShell
В этой статье объясняется, как использовать Azure PowerShell и файлы Bicep для развертывания ресурсов в Azure. Если вы не знакомы с развертыванием решений Azure и управлением ими, см. статью "Что такое Bicep?".
Необходимые компоненты
Для развертывания необходимо развернуть Bicep-файл, а файл должен быть локальным. Вам также требуется Azure PowerShell и подключение к Azure:
- Установите командлеты Azure PowerShell на локальном компьютере. Для развертывания файлов Bicep требуется Azure PowerShell версии 5.6.0 или более поздней. Дополнительные сведения см. в статье Начало работы с Azure PowerShell.
- Установите интерфейс командной строки Bicep. Необходимо вручную установить интерфейс командной строки Bicep, так как Azure PowerShell не устанавливает его автоматически.
- Используется
Connect-AzAccount
для подключения к Azure. Если у вас несколько подписок Azure, может потребоваться выполнить.Set-AzContext
См. дополнительные сведения в статье Use multiple Azure subscriptions (Использование нескольких подписок Azure).
Если у вас не установлен PowerShell, можно использовать Azure Cloud Shell. Дополнительные сведения см. в статье "Развертывание Bicep-файлов с помощью Azure Cloud Shell".
Необходимые разрешения
Для развертывания файла Bicep или шаблона ARM необходим доступ с правом записи для развертываемых ресурсов и доступ ко всем операциям с типом ресурсов Microsoft.Resources/deployments. Например, для развертывания виртуальной машины необходимы разрешения Microsoft.Compute/virtualMachines/write
и Microsoft.Resources/deployments/*
. Операция what-if имеет те же требования к разрешениям.
Список ролей и разрешений см. в статье Встроенные роли Azure.
Область развертывания
Вы можете нацелить развертывание на группу ресурсов, подписку, группу управления или клиента. В зависимости от области развертывания используются разные команды, а пользователь, развертывающий файл Bicep, должен иметь необходимые разрешения для создания ресурсов для каждой области.
Чтобы развернуть в группе ресурсов, используйте
New-AzResourceGroupDeployment
:New-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -TemplateFile <path-to-bicep>
Чтобы развернуть подписку, используйте
New-AzSubscriptionDeployment
псевдоним командлетаNew-AzDeployment
:New-AzSubscriptionDeployment -Location <location> -TemplateFile <path-to-bicep>
Дополнительные сведения о развертываниях на уровне подписки см. в статье "Использование Bicep" для развертывания ресурсов в подписке.
Чтобы развернуть в группе управления, используйте
New-AzManagementGroupDeployment
.New-AzManagementGroupDeployment -ManagementGroupId <management-group-id> -Location <location> -TemplateFile <path-to-bicep>
Дополнительные сведения о развертываниях уровня управления см. в разделе "Использование Bicep" для развертывания ресурсов в группе управления.
Чтобы развернуть в клиенте, используйте
New-AzTenantDeployment
.New-AzTenantDeployment -Location <location> -TemplateFile <path-to-bicep>
Дополнительные сведения о развертываниях на уровне клиента см. в статье "Использование Bicep" для развертывания ресурсов в клиенте.
Развертывание локального файла Bicep
В этом разделе описывается развертывание локального Bicep-файла. Вы можете развернуть Bicep-файл с локального компьютера или внешнего.
Если развертывание выполняется в несуществующей группе ресурсов, создайте группу ресурсов. Имя группы ресурсов может содержать только буквы, цифры, точки, знаки подчеркивания, дефисы и скобки. Это может быть до 90 символов и не может заканчиваться в течение периода.
New-AzResourceGroup -Name ExampleGroup -Location "Central US"
Чтобы развернуть локальный Bicep-файл, используйте -TemplateFile
параметр в команде развертывания:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleGroup `
-TemplateFile <path-to-bicep>
Развертывание может занять несколько минут.
Развертывание удаленного файла Bicep
Azure PowerShell в настоящее время не поддерживает развертывание удаленных файлов Bicep. С помощью интерфейса командной строки Bicep можно создать файл Bicep в шаблон JSON, а затем загрузить JSON-файл в удаленное расположение. Дополнительные сведения см. в разделе "Развертывание удаленного шаблона".
Параметры
Для передачи значений параметров можно использовать встроенные параметры или файл параметров. Файл параметров может быть файлом параметров Bicep или файлом параметров JSON.
Встроенные параметры
Чтобы передать встроенные параметры, укажите название параметра с помощью команды New-AzResourceGroupDeployment
. Например, строки и массив передаются в файл Bicep следующим образом:
$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-exampleString "inline string" `
-exampleArray $arrayParam
Этот параметр можно использовать TemplateParameterObject
для передачи хэш-файла, содержащего параметры шаблона:
$params = @{
exampleString = "inline string"
exampleArray = "value1", "value2"
}
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-TemplateParameterObject $params
Вы также можете получить содержимое файла и указать это содержимое как встроенный параметр:
$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-exampleString $(Get-Content -Path c:\MyTemplates\stringcontent.txt -Raw) `
-exampleArray $arrayParam
Получение значения параметра из файла полезно в тех случаях, когда есть необходимость предоставить значения конфигурации. Например, вы можете предоставить значения cloud-init для виртуальной машины Linux.
Если необходимо передать массив объектов, создайте хэш-таблицы в Azure PowerShell и добавьте их в массив. Передайте этот массив в качестве параметра во время развертывания:
$hash1 = @{ Name = "firstSubnet"; AddressPrefix = "10.0.0.0/24"}
$hash2 = @{ Name = "secondSubnet"; AddressPrefix = "10.0.1.0/24"}
$subnetArray = $hash1, $hash2
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-exampleArray $subnetArray
Файлы параметров Bicep
Вместо передачи параметров в виде встроенных значений в скрипте может быть проще использовать файл параметров Bicep или файл параметров JSON, содержащий значения параметров. Файл параметров Bicep должен быть локальным файлом, а файл шаблона JSON может находиться где-то в сети. Дополнительные сведения о файлах параметров см. в статье "Создание файлов параметров для развертывания Bicep".
Файл параметров Bicep можно использовать для развертывания Bicep-файла с помощью Azure PowerShell версии 10.4.0 или более поздней и Bicep CLI версии 0.22.X или более поздней. using
При использовании инструкции в файле параметров Bicep не требуется предоставлять -TemplateFile
параметр при указании файла параметров Bicep для коммутатора-TemplateParameterFile
.
В следующем примере показан файл параметров с именем storage.bicepparam. Файл находится в том же каталоге, где выполняется команда:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateParameterFile storage.bicepparam
Файлы параметров JSON
Файл параметров JSON может быть локальным или внешним с помощью URI со специальными URI.
Чтобы передать файл локальных параметров, используйте TemplateParameterFile
параметр с файлом параметров JSON:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateFile c:\BicepFiles\storage.bicep `
-TemplateParameterFile c:\BicepFiles\storage.parameters.json
Чтобы передать файл внешних параметров, используйте TemplateParameterUri
этот параметр:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateFile c:\BicepFiles\storage.bicep `
-TemplateParameterUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.parameters.json
Так как параметр TemplateParameterUri
поддерживает только файлы параметров JSON, он не поддерживает .bicepparam
файлы.
Встроенные параметры и файл параметров расположения можно использовать в той же операции развертывания. Дополнительные сведения см. в разделе "Приоритет параметров".
Просмотр изменений
Перед развертыванием файла Bicep можно просмотреть изменения, которые он внесет в окружение. Используйте операцию "что если", чтобы убедиться в том, что необходимые изменения будут внесены. С помощью операции "что если" можно также проверить файл Bicep на наличие ошибок.
Развертывание спецификации шаблона
Azure PowerShell в настоящее время не предоставляет файлы Bicep для создания спецификаций шаблонов. Однако вы можете создать Bicep-файл с ресурсом Microsoft.Resources/templateSpecs для развертывания спецификации шаблона. В примере спецификации создания шаблона показано, как создать спецификацию шаблона в файле Bicep. Вы также можете создать файл Bicep в JSON с помощью интерфейса командной строки Bicep, а затем шаблона JSON для создания спецификации шаблона.
Deployment name (Имя развертывания)
При развертывании файла Bicep ему можно присвоить имя. Это имя можно использовать, чтобы получить нужное развертывание из журнала развертываний. Если имя развертывания не указано, его имя становится именем файла Bicep. Например, если развернуть Bicep-файл с именем main.bicep и не указать имя развертывания, это развертывание называется main
.
Каждый раз при выполнении развертывания в журнал развертывания группы ресурсов добавляется запись с именем развертывания. Если запустить другое развертывание и присвоить ему такое же имя, то предыдущая запись будет заменена текущим развертыванием. Если требуется создать уникальные записи в журнале развертывания, присвойте каждому развертыванию уникальное имя.
Чтобы создать уникальное имя, можно назначить случайное число:
$suffix = Get-Random -Maximum 1000
$deploymentName = "ExampleDeployment" + $suffix
Или добавьте значение даты:
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="ExampleDeployment"+"$today"
При выполнении параллельных развертываний в одной группе ресурсов с тем же именем развертывания завершается только последнее развертывание. Все развертывания с тем же именем, которые не были завершены, заменяются последним развертыванием. Например, если вы запускаете развертывание newStorage
с именем, которое развертывает учетную запись хранения с именем и запускает другое развертываниеnewStorage
, которое развертывает учетную запись хранения с именем storage1
в то же время, вы развертываете только одну учетную запись storage2
хранения. Созданная учетная запись хранения получает имя storage2
.
Однако если вы запускаете развертывание с именем newStorage
, которое развертывает учетную запись хранения с именем storage1
и немедленно запускает другое развертывание newStorage
, которое развертывает учетную запись storage2
хранения с именем после завершения первого развертывания, то у вас есть две учетные записи хранения. Одна получит имя storage1
, а другая — storage2
. Но в журнал развертывания будет внесена только одна запись.
Если для каждого развертывания указано уникальное имя, их можно запускать параллельно без возникновения конфликтов. Если вы запускаете развертывание с newStorage1
именем, которое развертывает учетную запись хранения с именем storage1
и запускает другое развертывание, которое развертывает учетную запись storage2
хранения с именем newStorage2
одновременно, то в журнале развертывания есть две учетные записи хранения и две записи.
Чтобы избежать конфликтов между параллельными развертываниями и обеспечить уникальность записей в журнале развертывания, присваивайте каждому развертыванию уникальное имя.
Следующие шаги
Сведения о том, как определить параметры в файле, см. в разделе "Общие сведения о структуре и синтаксисе файлов Bicep".