The ability to shutdown workloads in the cloud based off of workload type, application, environment, etc which can be crazy powerful… and will save you and/or your company a few bucks.
In this video, I will walk you through the vRealize Orchestrator workflows I created to accomplish this as well as how I automatically create tags when the VMs are spun up.
Find the code below for how to power the VMs on and off. Enjoy!
for(var i = 0; i < vmArray.length; i++){
azureVM = resourceGroupAttr.getVirtualMachineByName(vmArray[i]);
// Extract the current tags (This can be pulled from the request form where needed)
var myVMTags = azureVM.tags
if(myVMTags.hasOwnProperty('Environment')){
System.log("Azure VM " + azureVM.name + " Environement is: " + myVMTags['Environment'])
if(myVMTags['Environment'] = "Dev"){
var azureVMPowerState = azureVM.powerState
if(azureVMPowerState = "running"){
//Add tag to VM stating vRO powered down the box, used for PowerOn.
myVMTags.put("PowerControl", "vRO");
azureVM.tags = myVMTags;
//System.log("Updating Azure VM Tags for " + azureVM.name + " in Azure Cloud: STARTING");
var createVmResponse = connection.computeClient.virtualMachinesOperations.createOrUpdate(resourceGroupAttr.name, azureVM);
if (createVmResponse.error) {
System.log("Updating Tags failed on: " + azureVM.name +" - Code=" + createVmResponse.error.code + ", message=" + createVmResponse.error.message);
}
azureVM.powerOff() // this will only power down the OS, and you will incur compute charges
azureVM.deallocate() //This will stop the compute charges
System.sleep(1000);
System.log(azureVM.name + " has been safely powered down and deallocated.");
}
}
}
}
Leave a Reply