Using Azure Automation to Start and Stop Virtual Machines on a Schedule

Azure VM-ek kapcsolgatása az Azure automation szolgáltatás segítségével.

Az Azure egyik nagy előnye, hogy valóban csak azért fizetünk, amit használunk. Természetesen, hogy mikor mit használunk azt mi döntjük el és gondoskodnunk kell arról is, hogy a nem használt gépeket/szolgáltatásokat (automatikusan) lakapcsoljuk. Eddig is volt rá lehetőség, hogy automatizáljuk a virtuális gépek indulását, vagy lekapcsolását, pl.:

  • az azure előfizetésben tartottunk egy management gépet (pl.: XS méretben, melynek költésge nagyon elenyésző) és ezen a gépen futtatunk különböző scripteket, melyek kapcsolgatták ki és be a virtuális gépeinket (task scheduler)
  • a másik lehetőség, hogy a “földön” lévő egyik szerverünk látta az Azure előfizetésünket (fel kell iratkozni rá) és ez a földi szerver látta el az automatizálási feladatokat.
  • most jön képbe a harmadik megoldás: AZURE AUTOMATION egy preview szolgáltatás, mely segítségével az automatizálási scripjeinket feltölthetjük a felhőbe és ütemezve futtahatjuk őket.

Sok esetben teljesen szükségtelen, hogy egy szolgáltatás 0-24-ben fusson a felhőben, hiszen a munkaidőn kivül nem is fogjuk használni. A www.remoteapp.hu project kapcsán pont ezen gondolkodtam el. Futtassam a scriptjeimet egy külön gépről? Olvastam az Azure hírlevelekben , hogy van Azure Automation szolgáltatás, de eddig nem próbáltam ki. Nem túl bonyolult megoldás, de van ami nekem eslőre nem esett le. Leírom a tapasztalataimat.

Mivel preview, engedélyezni kell a fiókunkban!

https://account.windowsazure.com/PreviewFeatures 

image

 

Készítsük egy automation accountot:

image

A fiók fel kell iratkozzon az akuális Azure előfizura, célszerű ezt egy certifiacate segítségével megtenni.

Azure Automation—> Assets—>Add settings—>Add Credential

image

Certificate alapú azonosítás kiválasztása:

image

Majd jöhet a tanúsítvány feltöltése pfx fájlban és a szükséges jelszó megadása.

Az azonosításhoz szükséges, hogy az Azure előfizetésünkbe feltöltsük a tanúsítvány cert állományát az azonosításhoz. (Potálon cert file, automation fiókban pfx file)

Azure portál—>Settings—>Management Certificates—>Upload

image

Ezzel megvalósítottuk a hitelesítést az automation fiók és az előfizetésünk között. (Lehet jelszóval is, vagyis PS credetial-al is)

Jöhet a connection a megfelelő előfizetésbe:

Add Connection

Automation—>Automation Account—>Add settings—>Add connections

image

image

Jöhet a certificate neve és a subscription id, ezekkel (is) fogjuk azonosítani magunkat.

image

Szükségünk lesz még egy PS modulra, mellyel meghívhatjuk a connection-t. Ezt a modult letölthetjük az

(Connect-Azure Runbook) Azure Automation Script Center-ből, ezen a linken is: Connect-Azure

 

image

Töltsük fel a fenti script-et az Automation accountba:

Azure Automation—>Import module->Connect-Azure.ps1

image

A végeredmény a következő kell legyen:

image

1db certificate

1db Azure-Connection module

1 db Azure module (ez már rendelkzésre állt)

Jöhetnek a jobok, vagy runbookok:

 

New—>App Services—>Automation—>Runbook—>Quick Create

image

Kezdődhet a runbook vagyis a job megírása. Innentől jöhetnek a szokásos PS sciptek, megeszi az Azure.

pl: gépek indítása

workflow start-all-remappdemo
{$subName = ‘azure connection’
    $svcname = cloud service neve
    Connect-Azure -AzureConnectionName $subName
    Select-AzureSubscription -SubscriptionName $subName
    # Start VMs
    Start-AzureVM -ServiceName $svcname -Name vm1
    Start-AzureVM -ServiceName $svcname -Name vm2
    Start-AzureVM -ServiceName $svcname –Name vm3

}

 

 

Amire figyelni kell!

$sub name – azt az azure connecton stringet kell megadni, melyet a fiók connection nevének használtunk, példámban az ‘azure demo connection’

 

Jöhet a VM-ek indítása is, pl.:

 

workflow start-all-remoteapp
{$subName = ‘azure connection’
    $svcname = cloud service neve
    Connect-Azure -AzureConnectionName $subName
    Select-AzureSubscription -SubscriptionName $subName

# Start VMs
    $vmList = (vm1,vm2,vm3)
    For ( $vmCount = 0; $vmCount -lt $vmList.Count; $vmCount++) {
        Write-Output (“Getting virtual machine status for {0}…” -f $vmList[$vmCount])
        $vm = Get-AzureVM -ServiceName $svcname -Name $vmList[$vmCount]
        if ( $vm.InstanceStatus -eq ‘StoppedDeallocated’ ) {
            Write-Output (“Starting {0}…” -f $vm.Name)
            Start-AzureVM -ServiceName $vm.ServiceName -Name $vm.Name
        }
    }
}

 

Hetek óta tökéletesen működik a dolog. A használaton kívüli RDSH szerverek éjszaka nem mennek, így a www.remoteapp.hu szolgáltatás ügyfelei is elégedettebbek, a jobb árazás miatt.🙂

 

Király István

KingSol Kft.

ügyvezető

MVP, MCT, MCITP:SA,EA

www.kingsol.hu

www.remoteapp.hu

About Király István

Microsoft Azure MVP, Microsoft Certified Trainer Rendszergazda, előadó és a KingSol Kft. ügyvezető tulajdonosa.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s