Post

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.
img-description
VM szinten válasszuk ki a Tags-et
img-description
Állítsunk be kettő-t:

NevÉrték
Autostart_daysWorkdays
Autostart_time8

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:
img-description
img-description Fontos, hogy hozzunk létre a Run As Account-ot

img-description
img-description
img-description Mentés, majd Publish

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
img-description
img-description
img-description
img-description
Következő futás időpontját pedig itt láthatjuk:
img-description

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.

This post is licensed under CC BY 4.0 by the author.