In last few articles, we have been discussing about Azure Bicep. We have seen how to write bicep files and how to deploy the bicep modules. In this article, we are going to have a look at how to preview the modifications before actually deploying a bicep module.
Prerequisites
You can use either PowerShell command or Azure CLI Command. In order to use intended commands, please ensure that you have the required tools installed.
- To use what-if in PowerShell, you must have version 4.2 or later of the Az module.
- To use what-if in Azure CLI, you must have Azure CLI 2.14.0 or later. If needed, install the latest version of Azure CLI. Please ensure that you have
Create a Bicep File
The code snippet given below shows a bicep file that we are going to use for this demo. This file takes few parameters and then it tries to create a storage account.
PowerShell Commands
We can use the what-if commands to preview the modifications which would be done by a bicep module. Below are the PowerShell commands which can be used for this purpose
New-AzResourceGroupDeployment -Whatif
for resource group deploymentsNew-AzSubscriptionDeployment -Whatif
andNew-AzDeployment -Whatif
for subscription level deployments
These two commands will not deploy any resource. They will just allow users to preview what would be done if the bicep module specified in the command is deployed.
Alternatively, we can use -Confirm switch. If this switch is used, the command would return a preview, which can be manually inspected. Once confirmed, the file would be promoted to deployment.
New-AzResourceGroupDeployment -Confirm
for resource group deploymentsNew-AzSubscriptionDeployment -Confirm
andNew-AzDeployment -Confirm
for subscription level deployments
To get an object that you can programmatically inspect for changes, use Get-AzResourceGroupDeploymentWhatIfResult or Get-AzSubscriptionDeploymentWhatIfResult.
Azure CLI Commands
If you want to use Azure CLI, the below mentioned commands can be used to preview the bicep module.
- az deployment group what-if for resource group deployments
- az deployment sub what-if for subscription level deployments
- az deployment mg what-if for management group deployments
- az deployment tenant what-if for tenant deployments
Instead of what-if we can use --confirm-with-what-if
switch (or its short form -c
) to preview the changes and get prompted to continue with the deployment.
What-If Operation Change Types
The bicep file preview operation may return any of the 6 values mentioned below for each resource
- Create, this conveys that the resource would be created
- Modify, this conveys that the resource would be modified
- Delete, this means that existing resource would be deleted
- NoChange, this means that there is no change (the resource would be redeployed, but no change in its properties)
- Ignore, meaning the resource exists and not defined in bicep file. Hence it will not be deployed or modified.
- Deploy, it means that resource exists, and is defined in the Bicep file. The resource will be redeployed.
Demo
Now, we can try the command. The snapshot given below shows usage of what-if command using Azure CLI. Here, the preview is saying that there would be NoChange. This means that resource exists already and it is also defined in the bicep file. Hence it would be redeployed, but its properties would not change. Then there are three resources mentioned with tag Ignore, meaning that they exist and are not mentioned in the bicep file. Hence they will not be modified and they will also be not be redeployed.
I hope you find this information helpful. Let me know your thoughts.