Hibernate/pause a resource group or subscription
After talking to one of your Senior Support Engineers, they suggested I made a feature request for this.
I'd like to be able to pause, hibernate or otherwise stop a resource group or subscription so that it incurs minimal costs when not in use. I'm suggesting resource group or subscription as one may be easier to implement than the other. Ideally this would be done through ARM but I’d settle for doing it via PowerShell if needed.
I appreciate that VMs can be deallocated but we found that a customer's solution was still using approximately £200 a month due to the application gateway, virtual network gateway and storage of VHDs for a system that is not doing anything. As the solution is not currently contractually in use by the customer at the moment (it is used for about a month twice a year), we have to take on the cost.
I suspect that there are other services that would still be charged: For example it's only fair that storage still be billed and static Public IP addresses probably need to be as well to stay reserved but I'd like a way to put everything else into a state where it stops being accessible and therefore stops incurring charges. I would also assume that things like VMs would need to be shut down and deallocated first else problems may arise.
In the meantime I have deleted the offending services and am in the process of copying the VHDs to local storage in order to delete the VMs as well to clear the storage costs. I intend to look into PowerShell scripts to recreate these systems before the next time they are needed but obviously this method is not ideal.
Michael Adams commented
We are trying to figure out a similar solution. We want to try out the concept of "Sandbox" subscriptions in order for some of our channels to have a little more 'autonomy' to prototype and POC things - but from within an isolated environment "per group" so they can each be assigned a budget and not "eat into" any other groups. I was hoping that I could get those "Sandbox Subscriptions" to act like the subscriptions we get in Microsoft Workshops and trainings where stuff would be paused/shutdown if we went over the budget allocation. Only after further research did I realize (after we had already gone down an approval process and started framing up standards, etc.) that the "Budgets" component does not offer a feature like that out-of-the-box. I am trying to develop some "generic" automation runbooks based off of various blogs and whatnot to do *some* of this type of thing - but it's kind of silly I would have to go to that length if there's already a feature like this on another "class" of subscription. Some type of "enforcement" toggle/switch should be available under the "Budget Configuration" which would allow you to forcefully deallocate, shut down, pause, or otherwise suspend all active resources if your budget limit is hit. I get why it wouldn't be enabled by default, but this is preventing us from moving forward with initiatives that in the end would actually STILL provide Microsoft more revenue ultimately (because many of those POCs/prototypes could very well make it into our Dev->Test->Production environments), but we still need to control our R&D spending during that prototyping phase. Additionally - as a public entity our budgeting processes involve preallocating $ for the next year, which makes the current model very challenging to manage without eating up wasteful cycles micromanaging it.
This actually SHOULD be ALREADY achievable!
When my budget is exceed it 'suspends' the account! That's what I want.. stop it.. I'll re-enable when I want to spend the money. I just don't want to have to spend time/money recreating it every time nor leave it running all the time, etc.
Mike Mingo commented
A must have for PoCs, development, testing,... In our case for a Pay as You Go Service. We just need the service up for certain periods of time, as we not only pay for Azure resources, we also pay for the SW vendor licenses!
This will be very help full, for me,, I need to delete the resource group created for a POC and the engineers is no more available to see if this still requires.
If this feature is available, I can simply pause or suspend the all resource in the RG and delete after a week.
+1 for the previous comment on dev/test environments that you only want to run for specific periods of time due to priorities - unable to work on that 'project' continuously.
Aaron Reed commented
Every company on the planet wants this feature... Trust me, I speak for all of us. 1, 2, 3, please add it?
This would be extremely useful. Though I doubt Microsoft would add this feature as it would lose them money. They are in the business of making money and not losing it. For a consumer though this would be a great feature to have.
I agree with the need for this request. The ability to pause or disable access or use of everything in a resource group would be advantageous in determining if the resources are being actually used for something prior to deletion. e.g. I am currently auditing and trying to remove chunks of Azure that developers over the years have created and left running and not being used. Would be great if i can just pause it for a week or two and if nobody complains it can be purged.
Milan Kopáč commented
Yes but some resources can´t be deallocated but I´m voting for hibernate application gateway and VPN because this is really money earning for nothing if it´s not in use.
Steve Meckstroth commented
I've voted for this as well. We create proof of concept projects, and then take them offline to negotiate with business users and decide whether or not to productionalize. If they decide to productionalize we would like to enable the whole resource group at one time.
Mahmoud Habiballah commented
Still, some resources cannot be disabled. Just think about "disabling" a static IP address. What would happen after enabling it again? Disabling it means it will still be reserved
very useful for managing test and dev environments, spinning them up only when needed
Thomas Mutton commented
I have voted for this because I can see a use case where a resource group only needs to be running at certain times of the day such as 9-5. This is true for the company I work for where we only need to be running our dev and staging environments during this time. The most important resource types for us to be able to pause are DocumentDB and VM's (which you can currently pause).