Need for Auto Shutdown Feature
- VM prices are being charged when they are in the running status and are even not being used after business hours and during the weekends.
- The cost of Azure VMs can be reduced by turning off the VMs automatically after business hours.
- Azure VMs will be turned on the next working day whenever the team wants to work on the VMs.
Technical Implementation to Enable Auto Shutdown Feature for VM
Add a PowerShell task in the stages of the release pipeline which will work as below,
- Sets the subscription to use in the current session.
- Set Time for Auto Shut Down and Time Zone,
shutdown_time = "1730"
shutdown_timezone = "W. Europe Standard Time" - Check the number of VMs in the resource group.
- If No of VM = 0 then do nothing.
- If No of VM > 0 then perform below for each VMs,
- Check Tag DoNotAutoShutdown of Azure VM is Yes then do nothing.
- If Tag DoNotAutoShutdown is not present then set the below properties to enable the Auto Shutdown Feature.
- Set ComputeVmShutdownTask for a given shutdown_time, shutdown_timezone.
- Set notification settings for email alert before time in minutes(30) and emailRecipient.
- Creates resource 'microsoft.devtestlab/schedules' to enable auto shutdown.
Github link for PowerShell script
https://github.com/sagu94271/seaa/blob/main/Devops/Powershell/autoshutdownazurevm.ps1
Conclusion
We can save a huge amount by enabling the auto shutdown feature when working with multiple azure VMs.
Feel free to share your feedback :)

Join the conversation! Your thoughts help the community grow.