Рубрики
Uncategorized

Проект BICEP V0.2 для развертываний Azure

Если вы следовали за моим последним сообщением, сначала посмотрите на проект Bicep, шаблоны DS … Помечено с лазурным лазурным, дежоптом, бицеплом, IAC.

Если вы следили за моим последним постом, сначала посмотрите на проект 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»