-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Bicep deployments are typically done using one parameter file that maps directly to the Bicep file. Each parameter file needs to have exact parameter match for the deployment to succeed. This leads to a situation where parameter files are hard to share for other deployments. It is also beneficial to make Bicep deployments modular. Variables can be used instead of parameters. It has both advantages and some drawbacks such as secure parameters. The advantage is that you can create a variable file with sharable variables for many related deployments. Using a YAML based variable definition makes the variable file easy to maintain, as it is more human readable than the JSON format. We will be using MS provided Bicep resource modules in the example (https://github.com/Azure/ResourceModules). These contains extensive and well defined Bicep templates with related documenation.
Bicep supports loading of variables loading of JSON files with variable definitions. It is possible to further point into the json properties but this is omitted for simplicity.
loadJsonContent('variables-dev.json')
yq is a standalone tool that can be used to convert environment specific variable files for the deployment. Conversion is done at pipeline level before the deployment. The example below can use template literal expression to concatenate the environment string to the yaml variable file.
yq -P variables-dev.yml -o json > variables.json
- Bicep resource modules, https://github.com/Azure/ResourceModules
- YQ YAML<-> JSON converter, https://github.com/mikefarah/yq