Cloud can be tricky sometimes. Find out what scenarios we've ran into that are worth being mentioned and explained.
Azure Bicep allows you to retrieve environment variables during template compilation, enabling dynamic configurations without hardcoding values. This is especially useful when deploying through Azure Pipelines, where pipeline variables automatically become environment variables.
Bicep
readEnvironmentVariable(environmentVariableName: string, default: string)
parameters:
- name: Environment
type: string
default: dev
values:
- prod
- acc
- tst
- dev
pool:
vmImage: 'windows-latest'
variables:
- name: Environment
value: ${{ parameters.Environment }}
steps:
- powershell: |
$random = -join ((65..90) + (97..122) | Get-Random -Count 10 | ForEach-Object {[char]$_})
Write-Output "##vso[task.setvariable variable=RandomizedString]$random"
displayName: 'Generate a Random String'
- task: AzureCLI@2
inputs:
azureSubscription: 'spn-readEnvironmentVariable'
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: |
az deployment group create --template-file ./main.bicep --parameters ./config.bicepparam --resource-group rg-demo
What Happens Here?
using 'main.bicep'
var varEnvironment = readEnvironmentVariable('Environment', 'dev')
param parRandomizedString = readEnvironmentVariable('RandomizedString')
param parResourceName = 'my-resource-${varEnvironment}'
Explanation:
param parRandomizedString string
param parResourceName string
output outRandomizedString string = parRandomizedString
output outResourceName string = parResourceName
Expected Deployment Output:
outRandomizedString: "xYzAbCdEfG"
outResourceName: "my-resource-dev"
This confirms that:
var varEnvironment = readEnvironmentVariable('Environment', 'dev')
var varEnvironment = readEnvironmentVariable('ENVIRONMENT', 'dev')
param parRandomizedString = readEnvironmentVariable('RANDOMIZEDSTRING')