Azure Bicep
Azure Bicep — это новый язык домена (Domain-Specific Language, DSL) для декларативного развертывания ресурсов Azure. Bicep — это не язык программирования общего назначения, а прозрачная абстракция для шаблонов Azure Resource Manager
(ARM). Это гарантирует, что свойства, легитимные в шаблонах ARM, действительны и в Bicep.
Преимущества Bicep
Bicep обладает следующими преимуществами:
- Поддержка всех полезных типов ресурсов и версий API
- Простой синтаксис
- Авторский опыт
- Повторяющиеся результаты
- Оркестровка
- Модульность
- Интеграция с сервисами Azure
- Предварительный просмотр изменений
- Отсутствие документов состояния или царства для управления
- Отсутствие цены и открытый исходный код
Почему Bicep?
Шаблоны ARM — это документы JSON, которые обеспечивают декларативный способ определения нашей инфраструктуры и конфигурации Azure. Язык шаблонов ARM предлагает встроенные функции и другие языковые конструкции, такие как циклы, которые помогают нам создавать более динамичные определения инфраструктуры.
Однако синтаксис JSON для шаблонов ARM делает файлы довольно многословными и ограничивает расширяемость из-за того, что нам приходится воспроизводить то, что поддерживается в рамках представления статистики JSON.
По мере роста сложности инфраструктуры наш ARM-шаблон становится практически нечитаемым и сложным в обслуживании. Существуют приемы развертывания ARM-шаблона. В частности, HashiCorp Terraform или Pulumi SDK. Эти инструменты не используют шаблоны ARM, но предоставляют альтернативные способы описания нашей инфраструктуры в виде кода.
сложность инфраструктуры
затрудняет поддержание шаблона. Существуют и другие способы развертывания шаблона. В частности, Pulumi SDK или HashiCorp Terraform. Эти инструменты не используют шаблоны, а вместо этого предоставляют альтернативные способы определения нашей инфраструктуры в виде кода.
Существует разница между файлом Bicep и эквивалентным шаблоном. Есть два примера, которые развертывают учетную запись хранилища.
Следующие примеры демонстрируют различие между файлом Bicep и эквивалентным шаблоном JSON. Оба примера устанавливают учетную запись хранилища.
param storageAccountName string
param accessTier string = 'Hot'
param location string = 'WestUS2'
resource sa 'Microsoft.Storage/storageAccounts@2019-06-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: accessTier
}
}
26 трасс в приведенном выше примере — это то, что нужно для создания многократно используемого файла Bicep, который может генерировать шаблон ARM для обеспечения учетной записи хранилища Azure. При компиляции получается следующий шаблон ARM.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string"
},
"accessTier": {
"type": "string",
"defaultValue": "Hot"
},
"location": {
"type": "string",
"defaultValue": "WestUS2"
}
},
"functions": [],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
],
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.3.126.58533",
"templateHash": "6796585337478950038"
}
}
}
Сгенерированный шаблон почти в два раза больше, чем файл Bicep. Этот шаблон ARM может быть развернут путем предоставления значений критических параметров в виде другого JSON или в командной строке при использовании Azure CLI или Azure PowerShell.
Этот пример говорит о гибкости, которую мы имеем с этим языком для создания ARM-шаблонов. Теперь Bicep представляет собой не просто конструкцию традиционного языка программирования, но и способ компоновки наших определений инфраструктуры Azure в виде небольших многократно используемых модулей.
Благодарю за то, что дочитали мою статью до конца. Надеюсь, сегодня вы поняли что-то уникальное. Если вам понравилась эта статья, пожалуйста, поделитесь с друзьями, а если у вас есть предложения или мысли, которыми вы хотите поделиться со мной, пожалуйста, напишите в поле для комментариев.
Этот блог представлен в рамках ‘Devtron Blogathon 2022’ — https://devtron.ai/.
Загляните в GitHub-репо Devtron — https://github.com/devtron-labs/devtron/ и поставьте ⭐ в знак вашей любви и поддержки.
Следите за Devtron на LinkedIn — https://www.linkedin.com/company/devtron-labs/ и Twitter — https://twitter.com/DevtronL/, чтобы быть в курсе новостей этого проекта с открытым исходным кодом.