Logic App ile Azure sanal makinelerini başlatma

Kullanıcının bir web sayfası üzerinden yapılan istekle Logic App akışını tetiklediği ve bu akışın da Azure üzerindeki sanal makineleri başlattığı örnek bir senaryo düşünelim.

Logic App

Azure Portal üzerinden arama kutusuna Logic App yazarak servis oluşturma sayfasında gerekli bilgiler girilir.

  • Resource Group: Önceden tanımlı bir kaynak grubu varsa o seçilir. Yeni kaynak grubu oluşturmak için Create new tıklanarak yeni bir grup oluşturulabilir.
  • Logic App name: Logic app servisine bir ad verilir.
  • Plan type: Logic App servisi iki kullanım modeliyle oluşturulabilir (Standart ve Consumption). Consumption modelinde, servis çalıştıkça maliyet oluşturduğu için Standart modele göre çok daha ucuzdur. Bu örnek için Consumption’u seçiyoruz.

Diğer seçenekleri olduğu gibi bırakıp Review + create ve sonrasında Create’i seçerek servis oluşturulur.

Logic App servisine tıklayıp servis sayfasına girelim. Servis ilk kez oluşturulduğu için gelen ana sayfada Templates başlığı altındaki Blank Logic App bağlantısına tıklayalım.

Arama kutusuna “http” yazarak alt tarafta listelenen When a HTTP request is received tetikleyicisine tıklayalım.

Burada HTTP POST URL kısmında başlangıçta herhangi bir şey yazmayacaktır. Logic App’I dışarıdan çağırabilmek için bu URL kullanılacak ama önce Logic App’I bu haliyle kaydetmemiz gerekiyor. Save’e tıklayarak kaydettikten sonra URL adresi oluşturulacaktır.

İkinci olarak, Logic App’e gönderilecek isteğinin içeriğini de burada belirtmek gerekiyor. Örneğimizde sadece tetikleme yapacağımız ve gönderilen isteğin statü kodunu zaten görebileceğimiz için ek bir parametreye ihtiyacımız yok ama bu fonksiyonun kullanımına örnek olması açısından test adında bir parametre oluşturacağımızı Request Body JSON Schema kısmında JSON biçiminde belirtiyoruz.

{
    "test": {
        "type": "string"
    }
}

Son durumda designer içinde aşağıdaki gibi bir durum olmalıdır:

HTTP bloğunun altına, başlatılacak sanal makineleri kontrol edecek aktiviteleri eklememiz gerekiyor. HTTP kutucuğunun altındaki Add an action seçeneğini seçiyoruz.

Açılan ekranda arama bölümüne start vm yazıp Azure VM altındaki Start virtual machine‘yi seçiyoruz.

Kaç tane sanal makine başlatılacaksa paralel olarak (HTTP kutusu altında Add a parallel branch seçerek) eklenebilir. Bu örnekte iki adet sanal makine başlatılacak şekilde paralel iki aktivite bulunmaktadır. Start VM aktivitelerinden sonra alt kısma, bu isteğin sonucunu döndürmek için bir Response aktivitesi ekliyoruz. Response ayrıntılarında, Parameters sekmesinde Status code değerini 200 (başarılı) olarak giriyoruz.

Son durumda Logic App akışı şu şekilde görünmelidir:

Web sayfası

Logic App kısmını tamamladıktan sonra bir web sayfası üzerinden bu akışın nasıl tetikleneceğine bakalım.

Öncelikle basit bir web sayfası yapmamız gerekiyor. Senaryomuz da şöyle olsun: Bu sayfadaki bir butona basıldığında belli bir süre bekleyip sanal makineleri başlattıktan sonra yine sayfa üzerinde makinelerin hazır olduğuna dair bir uyarı metni görünsün. Tabii bu örnek basit olduğu için çok fazla detaya girmeyip en basit haliyle yapmamız daha iyi olacaktır.

Web sayfasındaki adımlar aşağıdaki gibi olacak:

Sayfamızın kodları aşağıdaki gibi olacak:

Kodu kısaca açıklamaya çalışacak olursak:

  • btnStart butonuna basıldığında startAzureVM ve myFunction fonksiyonları tetikleniyor.
  • startAzureVMs() fonksiyonunda, Logic App içindeki HTTP POST URL adresine bir istek yollanıyor ve Logic App’in tetiklenmesi sağlanıyor.
  • myFunction() fonksiyonunda ise, yukarıdaki StartTimer fonnksiyonu çağırılıyor. Bunun sebebi, sanal makinelerin başlatılmasının belli bir süre alması ve bu süre boyunca sayfanın, makineler hazır olana kadar beklemesi. Süreler saniye olarak belirtiliyor. Bu örnekte yaklaşık başlatma süresinin 3 dk civarı olduğu düşünülerek değerler o şekilde girildi.
  • Bu fonksiyonlar çağırılırken de sayfada gösterilecek mesajlar yine ilgili yerlerde belirtiliyor.

Bu işlemin kontrolü de Logic App’teki Run History ekranından yapılabilir. Akış doğru çalıştıysa önce web sayfasında başarılı bittiğine dair mesaj görüntülenecek, Logic App’teki job succeeded statüsünde bitmiş olacak ve sanal makineler başlatılmış olacaktır.

Nerede kullanılır?

Bu senaryo, doğrudan sanal makine ya da Azure ortamına erişimi olmayan kullanıcıların makineleri başlatmaları ve sonrasında yine bir arayüz (web, vs) ile bu makinelerle etkileşime geçildiği durumlar için uygulanabilir.