Bicep functions for Bicep parameters files
Bicep provides a function called readEnvironmentVariable()
that allows you to retrieve values from environment variables. It also offers the flexibility to set a default value if the environment variable doesn't exist. This function can only be used in .bicepparam
files.
getSecret
getSecret(subscriptionId, resourceGroupName, keyVaultName, secretName, secretVersion)
This function returns a secret from an Azure Key Vault. Use this function to pass a secret to a Bicep file's secure string parameter.
Note
You can also use the keyVaultName.getSecret(secretName) function from within a .bicep
file.
using './main.bicep'
param secureUserName = getSecret('exampleSubscription', 'exampleResourceGroup', 'exampleKeyVault', 'exampleSecretUserName')
param securePassword = getSecret('exampleSubscription', 'exampleResourceGroup', 'exampleKeyVault', 'exampleSecretPassword')
You get an error if you use this function with string interpolation.
A namespace qualifier (az
) can be used, but it's optional since the function is available from the default Azure namespace.
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
subscriptionId | Yes | string | The ID of the subscription that has the key vault resource |
resourceGroupName | Yes | string | The name of the resource group that has the key vault resource |
keyVaultName | Yes | string | The name of the key vault |
secretName | Yes | string | The name of the secret stored in the key vault |
secretVersion | No | string | The version of the secret stored in the key vault |
Return value
The value for the secret.
Example
The following .bicepparam
file has a securePassword
parameter that has the latest value of the <secretName> secret:
using './main.bicep'
param securePassword = getSecret('exampleSubscription', 'exampleResourceGroup', 'exampleKeyVault', 'exampleSecretPassword')
The following .bicepparam
file has a securePassword
parameter that has the value of the <secretName> secret, but it's pinned to a specific <secretValue>:
using './main.bicep'
param securePassword = getSecret('exampleSubscription', 'exampleResourceGroup', 'exampleKeyVault', 'exampleSecretPassword', 'exampleSecretVersion')
readEnvironmentVariable
readEnvironmentVariable(variableName, [defaultValue])
This function returns the value of the environment variable or sets a default value if the environment variable doesn't exist. Variable loading occurs during compilation and not at runtime.
Namespace: sys.
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
variableName | Yes | string | The name of the variable. |
defaultValue | No | string | A default string value to be used if the environment variable doesn't exist. |
Return value
The return value is string value of the environment variable or a default value.
Remarks
The following command sets the environment variable only for the PowerShell process in which it's executed. You get BCP338 from Visual Studio Code:
$env:testEnvironmentVariable = "Hello World!"
To set the environment variable at the user level, run the following command:
[System.Environment]::SetEnvironmentVariable('testEnvironmentVariable','Hello World!', 'User')
To set the environment variable at the machine level, run the following command:
[System.Environment]::SetEnvironmentVariable('testEnvironmentVariable','Hello World!', 'Machine')
For more information, see Environment.SetEnvironmentVariable Method.
Examples
The following examples show how to retrieve the values of environment variables:
use './main.bicep'
param adminPassword = readEnvironmentVariable('admin_password')
param boolfromEnvironmentVariables = bool(readEnvironmentVariable('boolVariableName','false'))
Next steps
For more information about Bicep parameters files, see Create parameters files for Bicep deployment.