Azure – New Project Bicep

What is Bicep? Bicep is a Domain Specific Language (DSL) for deploying Azure resources declaratively. So, get out of ARM Templates and use a more declarative way to describe what you want to deploy to Azure. You can read more about the project on the GitHub page.

My first step was to deploy the tooling for Becip and the extension for Visual Studio Code. You find the installing instruction also in the GitHub project site. As soon as you have installed everything your VS Code will have support for *.becip files:

And as shown in the screenshot you get support for some snippets to get familiar with the syntax of Bicep. Taking the sample from the GitHub project page – here is a sample to declare a storage account:

resource sa 'Microsoft.Storage/storageAccounts@2019-06-01' = {
    name: 'satest12345no' // must be globally unique
    location: 'westeuope'
    kind: 'Storage'
    sku: {
        name: 'Standard_LRS'
    }
}

This looks very structured for me and as soon as you will build this *.bicep file – you will get an ARM template like this:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "functions": [],
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      "name": "satest12345no",
      "location": "eastwesteuopeus",
      "kind": "Storage",
      "sku": {
        "name": "Standard_LRS"
      }
    }
  ],
  "outputs": {}
}

What we get at the end, is a deployable ARM template which can be used to deploy the resources in Azure via the Azure Resource Manager. You can follow these steps on the GitHub page. I encourage to do it and learn more about the first release of this project.

In my point of view, it is a great start! I hope the project will go on fast and we will get a new option to build our infrastructure in Azure based on Bicep. At the moment it is much too early to build something based on Bicep in production, but if you look at the ideas (e.g. use of expressions) it looks like we will get a powerful tool!

What will be an interesting point to see, is how or even if Bicep will handle the current state of your environment in Azure. The “AzOps” approach out of the enterprise-scale landing zone would be interesting for this.

And for those of you, who would not like to install the “alpha” version on their machine – use the provided playground, to see Biceps in action.

So, stay tuned to the GitHub page – I will!