Развертывание файлов Bicep с помощью Azure CLI
В этой статье объясняется, как использовать Azure CLI с файлами Bicep для развертывания ресурсов в Azure. Если вы не знакомы с развертыванием решений Azure и управлением ими, см. статью "Что такое Bicep?".
Необходимые компоненты
Для развертывания необходимо развернуть Bicep-файл, а файл должен быть локальным. Вам также требуется Azure CLI и подключение к Azure:
- Установите команды Azure CLI на локальный компьютер. Для развертывания файлов Bicep требуется интерфейс командной строки Azure версии 2.20.0 или более поздней.
- Используется
az login
для подключения к Azure. Если у вас несколько подписок Azure, может потребоваться выполнить.az account set
Примеры для Azure CLI написаны для оболочки bash
. Чтобы запустить этот пример в Windows PowerShell или командной строке (cmd), может потребоваться изменить элементы скрипта.
Если у вас нет установленного Интерфейса командной строки Azure, можно использовать Azure Cloud Shell. Дополнительные сведения см. в статье "Развертывание Bicep-файлов с помощью Azure Cloud Shell".
Необходимые разрешения
Для развертывания файла Bicep или шаблона ARM необходим доступ с правом записи для развертываемых ресурсов и доступ ко всем операциям с типом ресурсов Microsoft.Resources/deployments. Например, для развертывания виртуальной машины необходимы разрешения Microsoft.Compute/virtualMachines/write
и Microsoft.Resources/deployments/*
. Операция what-if имеет те же требования к разрешениям.
Список ролей и разрешений см. в статье Встроенные роли Azure.
Область развертывания
Вы можете нацелить развертывание на группу ресурсов, подписку, группу управления или клиента. В зависимости от области развертывания используются разные команды, а пользователь, развертывающий файл Bicep, должен иметь необходимые разрешения для создания ресурсов для каждой области.
Чтобы развернуть в группе ресурсов, используйте
az deployment group create
:az deployment group create --resource-group <resource-group-name> --template-file <path-to-bicep>
Чтобы развернуть подписку, используйте
az deployment sub create
:az deployment sub create --location <location> --template-file <path-to-bicep>
Дополнительные сведения о развертываниях на уровне подписки см. в статье "Использование Bicep" для развертывания ресурсов в подписке.
Чтобы развернуть в группе управления, используйте
az deployment mg create
:az deployment mg create --location <location> --template-file <path-to-bicep>
Дополнительные сведения о развертываниях уровня управления см. в разделе "Использование Bicep" для развертывания ресурсов в группе управления.
Чтобы развернуть в клиенте, используйте
az deployment tenant create
:az deployment tenant create --location <location> --template-file <path-to-bicep>
Дополнительные сведения о развертываниях на уровне клиента см. в статье "Использование Bicep" для развертывания ресурсов в клиенте.
Развертывание локального файла Bicep
Вы можете развернуть Bicep-файл с локального компьютера или внешнего. В этом разделе описывается развертывание локального Bicep-файла.
Если развертывание выполняется в несуществующей группе ресурсов, создайте группу ресурсов. Имя группы ресурсов может содержать только буквы, цифры, точки, знаки подчеркивания, дефисы и скобки. Это может быть до 90 символов и не может заканчиваться в течение периода.
az group create --name ExampleGroup --location "Central US"
Чтобы развернуть локальный файл Bicep, используйте --template-file
параметр в команде развертывания. В следующем примере также показано, как задать значение параметра:
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file <path-to-bicep> \
--parameters storageAccountType=Standard_GRS
Развертывание может занять несколько минут. По завершении отобразится сообщение, включающее следующий результат:
"provisioningState": "Succeeded",
Развертывание удаленного файла Bicep
Azure CLI в настоящее время не поддерживает развертывание удаленных файлов Bicep. С помощью интерфейса командной строки Bicep можно создать файл Bicep в шаблон JSON, а затем загрузить JSON-файл в удаленное расположение. Дополнительные сведения см. в разделе "Развертывание удаленного шаблона".
Параметры
Для передачи значений параметров можно использовать встроенные параметры или файл параметров. Файл параметров может быть файлом параметров Bicep или файлом параметров JSON.
Встроенные параметры
Чтобы передать встроенные параметры, укажите значения в parameters
. Например, строки и массив передаются в файл Bicep из оболочки Bash следующим образом.
az deployment group create \
--resource-group testgroup \
--template-file <path-to-bicep> \
--parameters exampleString='inline string' exampleArray='["value1", "value2"]'
Если вы используете Azure CLI с cmd или PowerShell, передайте массив в формате: exampleArray="['value1','value2']"
Вы также можете получить содержимое файла, чтобы предоставить это содержимое в качестве встроенного параметра. Предисловие имени файла с помощью @:
az deployment group create \
--resource-group testgroup \
--template-file <path-to-bicep> \
--parameters exampleString=@stringContent.txt exampleArray=@arrayContent.json
Получение значения параметра из файла полезно в тех случаях, когда есть необходимость предоставить значения конфигурации. Например, вы можете предоставить значения cloud-init для виртуальной машины Linux.
Файл ArrayContent.json имеет следующий формат:
[
"value1",
"value2"
]
Чтобы передать объект, используйте JSON (например, при настройке тегов). Файл Bicep может включать такой параметр:
"resourceTags": {
"type": "object",
"defaultValue": {
"Cost Center": "IT Department"
}
}
Как показано в следующем скрипте Bash, можно также передать строку JSON для задания параметра. Используйте двойные кавычки вокруг JSON, который требуется передать в объект:
tags='{"Owner":"Contoso","Cost Center":"2345-324"}'
az deployment group create --name addstorage --resource-group myResourceGroup \
--template-file $bicepFile \
--parameters resourceName=abcdef4556 resourceTags="$tags"
Если вы используете Azure CLI с cmd или PowerShell, передайте объект в следующем формате:
$tags="{'Owner':'Contoso','Cost Center':'2345-324'}"
az deployment group create --name addstorage --resource-group myResourceGroup \
--template-file $bicepFile \
--parameters resourceName=abcdef4556 resourceTags=$tags
Для хранения значений параметров можно использовать переменную. Задайте переменную для всех значений параметров в скрипте Bash и добавьте ее в команду развертывания:
params="prefix=start suffix=end"
az deployment group create \
--resource-group testgroup \
--template-file <path-to-bicep> \
--parameters $params
Однако если вы используете Azure CLI с cmd или PowerShell, задайте для переменной строку JSON. Не используйте двойные кавычки: $params = '{ \"prefix\": {\"value\":\"start\"}, \"suffix\": {\"value\":\"end\"} }'
.
Оценка параметров следует последовательному порядку, что означает, что если значение назначено несколько раз, то используется только последнее назначенное значение. Чтобы правильно назначить параметры, рекомендуется сначала предоставить файл параметров, а затем использовать синтаксис KEY=VALUE для выборочного переопределения определенных параметров. Если вы предоставляете .bicepparam
файл параметров, этот аргумент можно использовать только один раз.
Файлы параметров Bicep
Вместо передачи параметров в виде встроенных значений в скрипте может быть проще использовать файл параметров Bicep или файл параметров JSON, содержащий значения параметров. Файл параметров должен быть локальным, так как Azure CLI не поддерживает внешние файлы параметров. Дополнительные сведения о файлах параметров см. в статье "Создание файлов параметров для развертывания Bicep".
Файл параметров Bicep можно использовать для развертывания Bicep-файла с помощью Azure CLI версии 2.53.0 или более поздней и Bicep CLI версии 0.22.X или более поздней. using
При использовании инструкции в файле параметров Bicep не требуется предоставлять --template-file
параметр при указании файла параметров Bicep для коммутатора--parameters
. --template-file
Если включить переключатель, запросит сообщение "Только шаблон Bicep разрешен с файлом Bicepparam", ошибка.
В следующем примере показан файл параметров с именем storage.bicepparam. Файл находится в том же каталоге, где выполняется команда:
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--parameters storage.bicepparam
Файлы параметров JSON
В следующем примере показан файл параметров с именем storage.parameters.json. Файл находится в том же каталоге, где выполняется команда:
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file storage.bicep \
--parameters '@storage.parameters.json'
Встроенные параметры и файл параметров расположения можно использовать в той же операции развертывания. Дополнительные сведения см. в разделе "Приоритет параметров".
Просмотр изменений
Перед развертыванием файла Bicep можно просмотреть изменения, которые он внесет в окружение. Используйте операцию "что если", чтобы убедиться в том, что необходимые изменения будут внесены. С помощью операции "что если" можно также проверить файл Bicep на наличие ошибок.
Развертывание спецификации шаблона
В настоящее время Azure CLI не предоставляет файлы Bicep для создания спецификаций шаблонов. Однако вы можете создать Bicep-файл с ресурсом Microsoft.Resources/templateSpecs для развертывания спецификации шаблона. В примере спецификации создания шаблона показано, как создать спецификацию шаблона в файле Bicep. Вы также можете создать файл Bicep в JSON с помощью интерфейса командной строки Bicep, а затем шаблона JSON для создания спецификации шаблона.
Deployment name (Имя развертывания)
При развертывании файла Bicep ему можно присвоить имя. Это имя можно использовать, чтобы получить нужное развертывание из журнала развертываний. Если имя развертывания не указано, его имя становится именем файла Bicep. Например, если развернуть Bicep-файл с именем main.bicep и не указать имя развертывания, это развертывание называется main
.
Каждый раз при выполнении развертывания в журнал развертывания группы ресурсов добавляется запись с именем развертывания. Если запустить другое развертывание и присвоить ему такое же имя, то предыдущая запись будет заменена текущим развертыванием. Если требуется создать уникальные записи в журнале развертывания, присвойте каждому развертыванию уникальное имя.
Чтобы создать уникальное имя, можно назначить случайное число:
deploymentName='ExampleDeployment'$RANDOM
Или добавьте значение даты:
deploymentName='ExampleDeployment'$(date +"%d-%b-%Y")
При выполнении параллельных развертываний в одной группе ресурсов с тем же именем развертывания завершается только последнее развертывание. Все развертывания с тем же именем, которые не были завершены, заменяются последним развертыванием. Например, если вы запускаете развертывание newStorage
с именем, которое развертывает учетную запись хранения с именем и запускает другое развертываниеnewStorage
, которое развертывает учетную запись хранения с именем storage1
в то же время, вы развертываете только одну учетную запись storage2
хранения. Созданная учетная запись хранения получает имя storage2
.
Однако если вы запускаете развертывание с именем newStorage
, которое развертывает учетную запись хранения с именем storage1
и немедленно запускает другое развертывание newStorage
, которое развертывает учетную запись storage2
хранения с именем после завершения первого развертывания, то у вас есть две учетные записи хранения. Одна получит имя storage1
, а другая — storage2
. Но в журнал развертывания будет внесена только одна запись.
Если для каждого развертывания указано уникальное имя, их можно запускать параллельно без возникновения конфликтов. Если вы запускаете развертывание с newStorage1
именем, которое развертывает учетную запись хранения с именем storage1
и запускает другое развертывание, которое развертывает учетную запись storage2
хранения с именем newStorage2
одновременно, то в журнале развертывания есть две учетные записи хранения и две записи.
Чтобы избежать конфликтов между параллельными развертываниями и обеспечить уникальность записей в журнале развертывания, присваивайте каждому развертыванию уникальное имя.
Следующие шаги
Чтобы понять, как определить параметры в вашем файле, см. раздел Понимание структуры и синтаксиса файлов Bicep.