Если вы следили за моим последним постом, сначала посмотрите на проект Bicep, шаблоны DSL Manager Manager Manager Manager Azure DSL вы уже знаете проект Bicep. BICEP — это определенный домен язык для шаблонов руки. Цель состоит в том, чтобы сделать код ARM легче читать и понимать. Файлы BICEP Compile Completion Format ARM JSON готов к развертыванию для Azure с вашими любимыми инструментами, PowerShell или Azure CLI. Выпуск V 0.2 доступен с 12 ноября, и эта версия имеет несколько улучшений.
- Поддержка модуля
- Валидация всех типов ресурсов Azure
- Целевой объем (арендатор, группа управления, подписка и по умолчанию Resource Group)
- Лучший опыт VSCode
Для Visual Studio Code есть важное изменение, расширение доступно на рынке, а не в качестве файла VSIX. Если вы установили расширение для VSCode для версии 0.1.x, вам нужно будет удалить расширение, установленное через VSIX. Перейдите в папку «Визуальный студийный код», пока код VS не работает и удалит папку «Установка». Имя должно быть «Azure.vscode-Bicep-0,1xxxx» В Windows папка расширения кода VS находится в % UserProfile% .vscode \ Расширения На Mac OS и Linux $ Home/.vscode/Расширения
Вы можете перезапустить VS-код. Поскольку BICEP VSCode теперь доступен на рынке, нет необходимости обновлять расширение, удалив более старше. Перейдите к расширению и просто ищите бицепс и установите его.
Теперь, если вы создадите файл, с расширением .bicep вы увидите службу языка BICEP внизу и справа от Windows Windows Windows.
Вам также необходимо установить новую версию бицепса. Для Windows просто загрузите новый выпуск из Github и выполните файл, чтобы обновить вашу версию.
Для MacOS вам понадобятся дополнительные шаги. Первые версии BICEP не было пирева формулы, а процесс установки был вручен. Но теперь, с этой новой версией, вы можете использовать Brew для установки, но прежде чем вам нужно будет удалить версию V 0.1.
rm '/usr/local/bin/bicep' brew tap azure/bicep https://github.com/azure/bicep brew install azure/bicep/bicep
Теперь мы можем использовать его и открывать новые функции этой версии.
Языковая служба в Visual Studio Code предлагает лучший опыт. При создании ресурса вы можете выполнить полный список ресурсов Azure Resource по их версии API.
Вы также найдете лучшую синтаксическую проверку, которая поможет вам найти ошибки в вашем коде.
Модуль BICEP — это файл BICEP, который предоставляет параметры и развертывает ресурсы из другого файла BICEP. Модули похожи на функции; Вы предоставляете несколько параметров, и модуль создает ресурсы и возвращает выход. Модули позволяют вам модулировать развертывание, запутаящуюся часть кода и создавая готовые к использованию файлов BICEP. Например, вы хотите, чтобы ваша команда создала свои шаблоны, но вы хотите использовать виртуальную сеть с группой безопасности сети, связанной с подсетью. С модулями вы можете встроить конфигурацию комплексов в модуль, поэтому ваша команда сосредоточена на главном развитии.
Создание модуля простой, модуль является одним файлом BICEP с дополнительными параметрами и выходом.
// Param Section param vnetName string param vnetPrefix string param vnetLocation string = resourceGroup().location // VNET resource vnet 'Microsoft.Network/virtualNetworks@2020-06-01' = { name: vnetName location: vnetLocation properties: { addressSpace: { addressPrefixes: [ vnetPrefix ] } subnets: [ { name: 'defaultSubnemt' properties: { addressPrefix: vnetPrefix networkSecurityGroup: { id: subnetNSG.id } } } ] } } resource subnetNSG 'Microsoft.Network/networkSecurityGroups@2020-06-01' = { name: '${vnetName}-nsg' location: vnetLocation properties: { securityRules: [ { name: 'allow-web' properties: { priority: 1000 sourceAddressPrefix: '*' protocol: 'Tcp' destinationPortRange: '80' access: 'Allow' direction: 'Inbound' sourcePortRange: '*' destinationAddressPrefix: '*' } } ] } } output vnetID string = vnet.id
Выход здесь необходим для ссылки на идентификатор виртуального сетевого сетевого сетевого устройства, создаваемого модулем для последующего использования.
Использовать модуль
module networkID './network.bicep' = { name: 'networkID' params: { vnetName: '${defaultVmName}-vnet' vnetPrefix: '10.0.0.0/24' } }
Полный файл main.bicep
var defaultLocation = resourceGroup().location var diskSku = 'Premium_LRS' var defaultVmName = '${vmPrefix}-${environmentName}' var defaultVmNicName = '${defaultVmName}-nic' param vmOS string { default: '2019-Datacenter' allowed: [ '2016-Datacenter' '2016-Datacenter-Server-Core' '2016-Datacenter-Server-Core-smalldisk' '2019-Datacenter' '2019-Datacenter-Server-Core' '2019-Datacenter-Server-Core-smalldisk' ] } param localAdminPassword string { secure: true metadata: { description: 'password for the windows VM' } } param vmPrefix string { minLength: 1 maxLength: 9 } param environmentName string { allowed: [ 'prod' 'dev' ] } module networkID './network.bicep' = { name: 'networkID' params: { vnetName: '${defaultVmName}-vnet' vnetPrefix: '10.0.0.0/24' } } resource vmNic 'Microsoft.Network/networkInterfaces@2017-06-01' = { name: defaultVmNicName location: defaultLocation properties: { ipConfigurations: [ { name: 'ipconfig1' properties: { subnet: { id: '${networkID}/subnets/defaultSubnemt' } privateIPAllocationMethod: 'Dynamic' } } ] } } resource vmDataDisk 'Microsoft.Compute/disks@2019-07-01' = { name: '${defaultVmName}-vhd' location: defaultLocation sku: { name: diskSku } properties: { diskSizeGB: 32 creationData: { createOption: 'Empty' } } } resource vm 'Microsoft.Compute/virtualMachines@2019-07-01' = { name: defaultVmName location: defaultLocation properties: { osProfile: { computerName: defaultVmName adminUsername: 'localadm' adminPassword: localAdminPassword windowsConfiguration: { provisionVMAgent: true } } hardwareProfile: { vmSize: 'Standard_F2s' } storageProfile: { imageReference: { publisher: 'MicrosoftWindowsServer' offer: 'WindowsServer' sku: vmOS version: 'latest' } osDisk: { createOption: 'FromImage' } dataDisks: [ { name: '${defaultVmName}-vhd' createOption: 'Attach' caching: 'ReadOnly' lun: 0 managedDisk: { id: vmDataDisk.id } } ] } networkProfile: { networkInterfaces: [ { properties: { primary: true } id: vmNic.id } ] } } }
Модуль переводится в JSON в ресурс развертывания, но часть бицепса легче читать и понимать. Примечание. Вы также можете вызвать модуль внутри другого модуля.
Другая функция состоит в том, чтобы иметь возможность целевой объем ресурсов развертывания в одном из четырех областей. Чтобы создать файл BICEP, нацеленный на другой объем, чем группа ресурсов, вам нужно будет использовать ключевое слово TargetScope.
targetScope= 'subscription' param rgName string resource rg 'Microsoft.Resources/resourceGroups@2020-06-01' = { location: 'francecental' name: rgName }
Этот файл BICEP создает группу ресурсов в объеме подписки. Также возможно использовать его в модуле, поскольку модули переводятся в ресурсы развертывания в JSON. Ресурсы развертывания могут развернуть в любой объем. В этом случае вызов модуля должен включать в себя ключевое слово охвата требуемого по желанию
module createRg './subscription.bicep' = { name: 'createRg' params: { rgName: 'myRG' } scope: scope.subscription() }
С этой версией BICEP все более и более полная. Но это все еще в альфа-версии, и это еще не для производства. Есть еще вещи отсутствуют, что должно присутствовать в следующей версии.
Оригинал: «https://dev.to/omiossec/project-bicep-v0-2-for-azure-deployments-58hd»