Artık Automation yazımızın son bölümüne geldik. Oluşturduğumuz iki adet Runbook ( StartVM ve StopVM) içerisine Powershell Workflow kod bloklarımızı yazalım. Bu kısımda ilk olarak “PeakUp-StartVM” adındaki Runbook aktivitesini geliştirmek olacak. Runbook aktivitesinin adında anlaşılacağı gibi, belirlediğimiz Virtual Machine Start etmek için kullanacağımız “Start-AzureVM” cmdletini bir döngü içerisinde kullanıp ve bu cmdlet içerisine parametreler göndererek Workflow içersinde kullanacağınız. Bu parametreler, “Start-AzureVM” cmdlet’ine ait mandatory(zorunlu)olarak adlandırıyoruz. “PeakUp-StartVM” runbook aktivitesinin içerisine girip “Author” sekmesinden Draft bölümüne aşağıdaki bulunan kod bloğunu yapıştıralım ve “Publish” edelim.
Publish ettikten sonra, Kod tarafını biraz açıklama gereği hissediyorum. Bir çok kişinin aklına takılabilecek olan yerler var. İlk önce, “IF” statement içerisinde yazdığımız kısım Runbook aktivitesi hergün çalışacağından dolayı hafta sonuna denk geldiği anda Statement doğru olduğu zaman ilgili kod blok devreye girerek Workflow sonlandıracaktır. “If” kısmı yazmamızın sebebi, Runbook aktivitesini Schedule ederken hafta sonu gibi bir belirtme şansımız olmadığı için bunu Workflow içerisin de belirttim.
Kod bloğu içerisin de diğer satırların açıklamları şu şekilde
- Line 9 – 11 : Tanımlamış olduğumuz Asset içerisinden çağırıp değişkenlere atayarak Powershell Workflow’un ilerleyen satırlarında çağırmak için yapılan aksiyondur.
- Line 13 : Add-AzureAccount cmdlet sayesinde Azure kaynaklarına erişmek için subscription eklenmesi sağlanmıştır.
- Line 15 : Eklenen hesabın içerisinde birden fazla Subscription olacağından dolayı işlem yapılmak istenen SubscriptionId gönderilerek seçilmiştir.
- Line 17 : Hashtable oluşturarak, işlem yapılması istediğimiz VM’lerin Name ve CloudService isimlerini bir tablo haline getirerek döngü içerisinde kullanılması hedeflenmiştir.
- Line 26-28 : Oluşturulan HashTable içerisindeki her Item için foreach döngüsü kullanarak Start-AzureVM cmdlet içerisine parametre gönderilerek Runbook aktivitesinin yapılması istenen iş gerçekleştirilmiştir.
Sıra geldi “PeakUp-StartVM” isimli Runbook aktivitemizi Schedule etmeye işlemine, geliştirilen Runbook aktivitesi herhangi bir şirketin mesait saati başladığı zamanlarda ilgili Virtual Machine otomatik bir şekilde başlatması hedeflenmektedir. Bu schedule işlemini yaparken optimum saatin belirtlenmesi önemlidir. Ben şimdilik hergün “08:00” olarak schedule olarak çalışacak şekilde ayarlayacağım.
“PeakUp-StartVM” adlı runbook aktivitesini Schedule bir duruma getirdik. Schedule sekmesine gidelim ve kontrolleri sağlayalım.
Schedule bir şekilde çalışacağını gördükten sonra, “PeakUp-StopVM” adlı Runbook aktivitesinin geliştirme aşamasına geçebiliriz. Yapacağımız aslında çok basit, “PeakUp-StartVM” adlı runbook içerisinde yazdığımız kod bloğunun sadece, Start-AzureVM cmdlet’i yerine “Stop-AzureVM” kullanıp Schedule ederken ilgili değişkeni göstermek. Hemen Runbook editor kısmına gelip Powershell Workflow yazıyorum.
“PeakUp-StopVM” isimli Runbook aktivitemizi Publish ediyorum ve Schedule işlemiyle devam edelim. Geliştirilen Runbook aktivitesi herhangi bir şirketin mesait saati bitiği zaman ilgili Virtual Machine otomatik bir şekilde kapatılması istiyoruz. Hatırlarsanız, Schedule değişkenimizi bir önceki yazımızda Powershell ile yaratmıştık ve orada ilgili değerleri hergün “19:00” olarak belirttik. Şimdi Schedule işlemini Powershell aracılığı ile gerçekleştirelim.
Runbook aktivitesini Powershell ile Schedule etmek için, “Register-AzureAutomationScheduleRunbook” cmdlet bizlere yardımcı oluyor. Bu cmdlet içerisine “AutomationAccount”,”RunbookName” ve “Schedule” objesini göndererk register işlemini gerçekleştirdik. Artık yapmamız gereken, Runbook aktivitesini belirtlediğimiz aralıklarda Virtual Machine için gereken aksiyonları yapacaktır. Basit bir Runbook ile maliyet tarafında çok büyük avantajlar sağladık. Yazımıza son olarak bir cümle eklemek istiyorum, Azure Automation da yapabilecekleriniz sizin hayal gücünüze bağlı olduğunu unutmayalım.