Have you been writing ARM templates and didn't quite fancy the way ARM templates are written in JSON. Well Bicep is here that would help you author ARM templates with much cleaner syntax. Bicep give you abstraction the way ARM templates are now written. Its supported by Microsoft 100% free, very modular, state is stored in Azure no manual handling.
You can get latest windows installer here or see all install options here: bicep/installing.md at main · Azure/bicep (github.com)
You can also download Bicep Visual Studio Code extension.
Hello world sample Bicep file to spin up storage in Azure..
param location string = 'eastus' @minLength(3) @maxLength(24) param storageAccountName string = 'azmubistorageacc1' // must be globally unique var storageSku = 'Standard_LRS' // declare variable and assign value resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = { name: storageAccountName location: location kind: 'Storage' sku: { name: storageSku // reference variable } } output storageId string = stg.id // output resourceId of storage account
Edit it in VS Code using Bicep extensions.
Deploy template using Bicep CLI (make sure to create resource group in Azure in advance e.g. bicep).
az deployment group create -f ./test.bicep -g bicep
Bicep Language specifications can be found here.
Bicep Azure DevOps Task is available here.
steps:
- task: BicepBuild@0
inputs:
process: 'single'
sourceFile: '.\bicep_files\sample1.bicep'
stdout: false # Note if stdout is true 'outputDirectory' will not be interpreted
outputFile: '.\bicep_files\sample1.out.json' # Only when 'stdout' is false or not defined and 'outputDirectory' is empty or not defined
Bicep Build Actions (Github Action) is available to run the Bicep CLI to build ARM template more.
steps: # Runs the bicep CLI action - individual files - name: Run Bicep build uses: aliencube/bicep-build-actions@v0.3 with: files: sample1.bicep sample2.bicep biceps/sample3.bicep biceps/sample4.bicep # Checks the result - name: Check the result shell: bash run: | shopt -s globstar ls -altR **/sample*.*
If you have existing ARM templates you can decompile them.
bicep decompile "path/to/MyARMTempateFile.json"
You can also export your Azure resource group to .bicep file.
step 1 - az group export --name "MY-Azure-Resource-Group" > MainARMTemplate.json
step 2 - bicep decompile MainARMTemplate.json
Learn more about Bicep here ..