Automatikus Azure VM indítás "Automation Accounts"-al Tags alapján
Azure-ban szinte minden fogyasztás alapon számlázódik, tehát érdemes csak akkor bekapcsoli egy gépet, ha arra tényleg szükség van. Előfordulhat az, hogy egyes gépeket azért be kell kapcsolni hétköznapokon reggel 8-kor, mire beérnek a kollgák már menjen minden. Végtelenségig lehet bonyolítani, de részemről fontos az idő/munka/hasznosság ráta, tehát csillagrombolót azért nem hozok létre pár VM bekapcsolásához :)
Cél a lehető legegyszerűbb, legkevesebb beépülőmodullal megoldani a leggyorsabban, így a beépített auto start megoldás helyett, inkább egy Tag alapú powershell futtatás mellett döntöttem, mivel több gépről van szó, egyszerűbbnek látom ezt az utat.
Árak
Alapesetben van 500 ingyen percünk. Részeletek itt: https://azure.microsoft.com/en-us/pricing/details/automation/
Tag-ek
Kettő egyszerű Tag-et hozok létre azoknál a gépeknél, amiket szeretnék hétköznap reggel 8-kor elindítani. Elég lenne persze egy is, de ha véletlen lenne olyan gép, aminek hétvégén is be kell kapcsolni, akkor ne legyen annyira sok munka átírni.
VM szinten válasszuk ki a Tags-et
Állítsunk be kettő-t:
Nev | Érték |
---|---|
Autostart_days | Workdays |
Autostart_time | 8 |
Minden olyan VM-nél be kell állítani, amit szeretnénk, hogy elinduljon reggel automatikusan.
Automation Accounts (AA)
Kliensről futtatás helyett, érdemes Automation Accounts-ot használni. Rengeteg lehetőség van benne, ennél is több powershell modul-t lehet telepíteni, de ebben az esetben az alap parancskészlettel szerettem volna megoldani(Ezért nem AZ parancsokat használtam :) )
Telepítés egyszerűen:
Fontos, hogy hozzunk létre a Run As Account-ot
1
2
3
4
5
6
7
8
9
10
11
12
## Get the Azure Automation Acount Information
$azConn = Get-AutomationConnection -Name AzureRunAsConnection
## Add the automation account context to the session
Add-AzureRMAccount -ServicePrincipal -Tenant $azConn.TenantID -ApplicationId $azConn.ApplicationId -CertificateThumbprint $azConn.CertificateThumbprint
Select-AzureRMSubscription -SubscriptionName "ELŐFIZETÉSNEVE"
$azVMs = Get-AzureRMVM | Where-Object {$_.Tags.Autostart_time -eq '8' -and $_.Tags.Autostart_days -eq 'Workdays'}
$azVMs
## Start VMs
$azVMs | Start-AzureRMVM
Ezután már csak az időzítőt kell hozzárendelni a runbookhoz
Következő futás időpontját pedig itt láthatjuk:
Jogosultság
Abban az esetben, ha ugyan abban az előfizetésbe hozzuk létre az AA-t, úgy nem szükséges plusz jogosultságot osztani, mivel automatikus “Contributor” jogosultságot kap, de egy Landig zone kialakítsban, mikor a Management alatt kell elhelyezkednie, úgy manuális kell jogosultságot adnunk neki.
Auto-shutdown
Természetesen inverzét is létrehozhatjuk hasonló módon, ekkor figyeljunk hogy deállokáljuk is a gépet, ne csak leállítsuk, de leállításra már a belső megoldást preferálom. AA-ban ~20 VM nál már könnyen elfogyhat az 500perc, illetve ez már Policy-val állítom be, de ezt majd máskor.