Azure Automation: parar/arrancar máquinas virtuales ARM en paralelo

Hace unos días compartí un script para Azure Automation que gestiona la parada y el arranque de máquinas virtuales. Mis últimas preocupaciones venían por este mismo proceso pero en paralelo, con el fin de no tener que esperar a que una máquina se parara o se iniciara para poder lanzar la orden a la siguiente. Ya te enseñé cómo hacerlo con aquellas máquinas creadas en el modelo clásico (ASM) y hoy me gustaría compartir contigo cómo hacer el mismo proceso con aquellas en el modelo ARM.

El script para este escenario sería el siguiente:

workflow Shutdown-Start-ARM-VMs-Parallel
{
Param(
[Parameter(Mandatory=$true)]
        [String]
$ResourceGroupName,
[Parameter(Mandatory=$true)]
        [Boolean]
$Shutdown
)

#The name of the Automation Credential Asset this runbook will use to authenticate to Azure.
    $CredentialAssetName = "DefaultAzureCredential";

#Get the credential with the above name from the Automation Asset store
    $Cred = Get-AutomationPSCredential -Name $CredentialAssetName;
    if(!$Cred) {
        Throw "Could not find an Automation Credential Asset named '${CredentialAssetName}'. Make sure you have created one in this Automation Account."
    }

    #Connect to your Azure Account
Add-AzureRmAccount -Credential $Cred;

$vms = Get-AzureRmVM -ResourceGroupName $ResourceGroupName;

Foreach -Parallel ($vm in $vms){

if($Shutdown){
Write-Output "Stopping $($vm.Name)";
Stop-AzureRmVm -Name $vm.Name -ResourceGroupName $ResourceGroupName -Force;
}
else{
Write-Output "Starting $($vm.Name)";
Start-AzureRmVm -Name $vm.Name -ResourceGroupName $ResourceGroupName;
}
}
}

Como ves, en este caso se lanza un foreach con la opción -Parallel donde se lanza la acción por cada una de las máquinas dentro del resource group, lanzando todas las peticiones a la vez.

Azure Automation - Test Pane - Shutdown-Start-ARM-VMs-Parallel
Azure Automation – Test Pane – Shutdown-Start-ARM-VMs-Parallel

También puedes importar este script desde la galería.

Azure Automation - Browse Gallery - Shutdown-Start-VMs-By-Resource-Group-Parallel
Azure Automation – Browse Gallery – Shutdown-Start-VMs-By-Resource-Group-Parallel

¡Saludos!