In my previous posts I wrote about creating infrastructure for Azure WebJob using PowerShell or Terraform. Most recent approach for creating Azure resources is Azure Bicep. Bicep is a Domain Specific Language (DSL) for deploying Azure resources declaratively. Bicep code is transpiled to standard ARM Template. Bicep file for creating infrastructure for Azure WebJob is:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | var baseName = resourceGroup ().name var baseNameLower = toLower (baseName) resource appServicePlan 'Microsoft.Web/serverfarms@2018-02-01' = { name: baseName location: resourceGroup ().location sku: { name: 'B1' capacity: 1 } } resource appService 'Microsoft.Web/sites@2018-11-01' = { name: baseNameLower location: resourceGroup ().location properties: { serverFarmId: appServicePlan.id clientAffinityEnabled: false } } resource config 'Microsoft.Web/sites/config@2018-11-01' = { parent: appService name: 'web' properties: { use32BitWorkerProcess: false alwaysOn: true } } resource appSettings 'Microsoft.Web/sites/config@2018-11-01' = { parent: appService name: 'appsettings' properties: { APPINSIGHTS_INSTRUMENTATIONKEY: appInsights.properties.InstrumentationKey } } resource connectionStrings 'Microsoft.Web/sites/config@2018-11-01' = { parent: appService name: 'connectionstrings' properties: { AzureWebJobsDashboard: { value: 'DefaultEndpointsProtocol=https;AccountName=${baseNameLower};AccountKey=${listKeys(storageAccounts.id, ' 2019-06-01 ').keys[0].value};EndpointSuffix=${environment().suffixes.storage}' type: 'Custom' } AzureWebJobsStorage: { value: 'DefaultEndpointsProtocol=https;AccountName=${baseNameLower};AccountKey=${listKeys(storageAccounts.id, ' 2019-06-01 ').keys[0].value};EndpointSuffix=${environment().suffixes.storage}' type: 'Custom' } } } resource storageAccounts 'Microsoft.Storage/storageAccounts@2019-06-01' = { name: baseNameLower location: resourceGroup ().location kind: 'StorageV2' sku: { name: 'Standard_LRS' tier: 'Standard' } } resource appInsights 'Microsoft.Insights/components@2015-05-01' = { name: baseName location: resourceGroup ().location kind: 'web' properties: { Application_Type: 'web' } } |
Resource group is then deployed using standart Azure CLI commands like using ARM template:
1 2 | az group create --name WebJobTest --location westeurope az deployment group create --resource-group WebJobTest --template -file azuredeploy.bicep --verbose |