Il mio Blog

Questo articolo è il continuo (scontato 🙂 ) del precedente articolo, ovvero Azure Automation – Spengiamo le nostre VM.

Potrebbe verificarsi infatti il caso che dobbiamo accendere autonomamente una VM o più VM, questo per attività schedulate o semplicemente per accendere prima una VM di sviluppo per far sì che il dev non perda tempo nella procedura di startup della VM.

Ho riproposto il link all’articolo precedente perché possiamo riprendere le fasi lì descritte fino alla creazione di un nuovo RunBook, che stavolta chiameremo Avvia-VM.

Lo script che propongo è questo:

workflow Avvia-VM
{
    Param (
          [parameter(Mandatory=$true)]
          [String]
          $VMName,
        
          [parameter(Mandatory=$true)]
          [String]
          $ServiceName
    )
    $subscriptionName = Get-AutomationVariable -Name "SubscriptionName" 
    $subscriptionID = Get-AutomationVariable -Name "SubscriptionID" 
    $certificateName = Get-AutomationVariable -Name "CertificateName" 
    $certificate = Get-AutomationCertificate -Name $certificateName  
    
    Set-AzureSubscription -SubscriptionName $subscriptionName -SubscriptionId $subscriptionID -Certificate $certificate 
    Select-AzureSubscription $subscriptionName  
    
    $thisdow = ( get-date ).DayOfWeek.value__
    if(($thisdow -gt 0) -and ($thisdow -lt 6) ) #only from monday to friday
    {
      $vm = Get-AzureVM -Name $VMName -ServiceName $ServiceName
      if($vm)
      {
         # Possible values are: Running, Suspended, RunningTransitioning, SuspendedTransitioning, Starting, Suspending, Deploying, Deleting
         Write-Output "VM " + $VMName + " InstanceStatus " + $vm.InstanceStatus
          if ( ($vm.InstanceStatus -eq 'StoppedVM') -or 
               ($vm.InstanceStatus -eq 'StoppedDeallocated') ) 
          {
            Write-Output "Startup VM " + $VMName
            Start-AzureVM -Name $VMName -ServiceName $ServiceName
          }
       }
       else
       {
           Write-Output "VM non trovata"
       }
    }
}

Come potete notare, le differenze con l’articolo precedente sono:

  • La presenza di parametri (Righe dalla 3 alla 11): Voglio accendere una VM per volta, quindi dovrò passare come informazione il nome della Virtual Machine e il Nome del Servizio.
  • Imposto un piccolo if dove controllo se il giorno della settimana è dal lunedì al venerdì (Righe 20 e 21)

Ora non mi resta che schedulare questo RunBook per ogni VM che voglio accendere, specificando quindi i parametri: Una volta pubblicato il RunBook, è necessario cliccare su “Pianifica”

AutomationStartup1

e inserire i dati: Il nome della pianificazione, l’orario (ad esempio alle 08:00) di ogni giorno.

AutomationStartup2

Visto che il nostro RunBook ha dei parametri (VmName e ServiceName), sarà possibile inserire i valori desiderati:

AutomationStartup3

Da ora in poi il nostro RunBook sarà schedulato!

Se dalla finestra del RunBook cliccate su “Processi”, potrete vedere uno storico delle esecuzioni. Di ogni esecuzione potrete vedere l’esito (Stato) ed eventualmente l’output del processo.

AutomationStartup4

Buon avvio delle VM da Azure Automation 🙂

Comments ( 0 )