И снова здравствуйте. Извините, я отсутствовал последние две недели или около того, но работа была занята, я думал, что у меня COVID-19 (тест отрицательный!), И дети снова в школе (частично). 2020 год продолжается ...
Как и было обещано, давайте подробнее рассмотрим Bicep, чтобы мы могли начать правильно оценивать его полезность по сравнению с текущими шаблонами ARM JSON.
Для начала, вот краткое описание текущей новой структуры, предоставленной нам командой Bicep.
Декларация состоит из четырех компонентов:
- ресурс - это ключевое слово, которое объявляет, что мы создаем определенный ресурс в Azure, будь то учетная запись хранения или база данных SQL MI. Опять же, похоже на Terraform
- символическое имя - это просто идентификатор каждого ресурса, который вы развертываете, и его не следует путать с самим ресурсом. Например, мы можем использовать следующую конструкцию для демонстрации:
В этом примере я создал простую виртуальную сеть, и вы можете видеть, что я создал ресурс с именем vnet1 типа Microsoft.Network/virtualNetworks с версией API «2020–05–01». На vnet1 теперь можно ссылаться позже при необходимости, используя его свойства, такие как Id.
3. тип - тип также показан в этом примере. Тип - это фактически три компонента в одном: поставщик ресурсов (Microsoft.Network), тип ресурса (virtualNetworks) и, конечно же, версия API (2020–05–01).
4. свойства - это те же самые свойства для каждого ресурса, которые вы видите в текущих шаблонах ARM.
Когда этот файл Bicep компилируется с помощью команды
bicep build am.bicep
мы видим, как он создает правильный файл JSON:
Как видите, он создает правильно отформатированный шаблон ARM для развертывания виртуальной сети.
Параметры объявляются с помощью следующей конструкции:
параметр I тип средства для чистки
Некоторые примеры могут включать следующее:
Что хорошо в параметрах в Bicep, так это то, что любая текущая функция является допустимой конструкцией, как видно из параметра местоположения. Эта возможность несколько упростит переход к Bicep для тех, кто уже знаком с шаблонами ARM, поскольку функции обеспечивают большую гибкость для более сложных развертываний.
На параметры можно ссылаться в файле Bicep по их идентификатору вместо использования конструкции [parameters (‘parameterName’)], как в шаблонах ARM. Это преимущество в будущем. Хотя это может показаться незначительным отличием, это помогает сократить количество строк в вашем коде, и это может быть важно в средах, где развернуто большое количество ресурсов.
Затем мы переходим к переменным. Переменные объявляются с помощью следующей конструкции:
var Идентификатор =
мы даем переменной имя (например, vnetName) и присваиваем ей значение после знака =. Мы можем ссылаться на параметры с помощью конструкции $ {}. Мы также можем использовать любую допустимую функцию-шаблон ARM для создания более сложных выражений. Например, если мы объявляем следующий параметр и ссылаемся на него в переменной, он имитирует функцию format ().
Выходы также легко создавать в Bicep, поскольку мы можем напрямую ссылаться на свойства идентификатора. Из документации Bicep мы можем пока сослаться на эти четыре свойства: id, name, apiVersion, type.
Если мы, например, развернем общедоступный IP-адрес, мы увидим, насколько легко сгенерировать некоторые выходные данные. В этом случае я ссылаюсь на идентификатор переменной.
Результирующий вывод JSON выглядит так:
Наконец, при компиляции Bicep автоматически добавит свойство dependsOn. Это замечательно, так как означает, что нам больше не нужно добавлять их в наши шаблоны ARM вручную или выяснять их методом проб и ошибок. Давайте посмотрим на пример использования DNS-зон.
Здесь я добавил основную информацию для создания зоны DNS и записи A:
При компиляции Bicep вычисляет для нас свойство dependsOn:
Итак, в целом, мы видим несколько хороших синтаксических функций в Bicep. Я думаю, что в будущих релизах есть чего ожидать.
До следующего раза, пожалуйста, оставайтесь в безопасности и желаю удачной недели!