Cloud Computing

Visual Studio .NET ile Kod Seviyesinde Azure IaaS Kaynaklarının Yönetimi

Azure Resource Manager (ARM) mimarisinde şablon kullanımını, şablon dosyasının hazırlanması ve şablon dosyaları kullanılarak kaynakların provizyonlanmasını başka bir makalemizde detaylı olarak incelemiştik. ARM mimarisinin getirdiği şablon-tabanlı yönetim özelliği sayesinde genel ve özel bulut altyapı bileşenlerinin (Computer, Networking, Storage vb.) kod seviyesinde yönetme (Infrastructure as a Code) desteği de gelmiş oldu. Bu yeni özellik sayesinde karmaşık servis modellerinin kurulumu ve yaygınlaştırması daha kolaylıkla uygulamak mümkün. Bu makalemizde de Visual Studio geliştirme platformu kullanılarak bir sanal sunucu provizyonlama senaryosunda kullanılacak kaynak grubu (resource group) şablonu hazırlıyor olacağız.

clip_image001

Yazılım geliştirme altyapısı olmayan BT Profesyonelleri için Vstudio geliştirme ortamı cazip gözükmeyebilir. Fakat altyapıyı kod olarak yönetme konusunda Vstudio platformu özellikle hız, kolay geliştirme, otomatik tamamlama, intellisense gibi önemli avantajlar sunmaktadır. Bu makalemizle özellikle ilk defa deneyim yaşayacaklar için de bir giriş yapmış olacağız. Önümüzdeki makalelerde Azure ya da Azure Stack altyapısını kod seviyesinde yönetmeye yönelik ileri seviye uygulamalarla Vstudio’nun zenginliklerini incelemeye devam edeceğiz.

Öncelikle bilgisayarınızda Vstudio 2015 sürümünü kurmuş olmanız ve son güncellemelerini de tamamlamış olmanız gerekiyor. Ben Vstudio 2015 Enterprise sürümü üzerinde uygulamaları gerçekleştiriyor olacağım. Aynı zamanda Azure SDK ’nın son versiyonunun da bilgisayarınızda kurulu olduğunda emin olun.

Öncelikle Vstudio .NET uygulamasını başlatıyoruz ve New Project ile yeni proje oluşturma ekranını açıyoruz. Dil olarak Visual C# ya da Visual Basic dillerinden istediğini tercih edebilirsiniz.

clip_image003

Cloud kategorisi altında Azure Resource Group proje tipini seçiyoruz. Proje adı olarak “MSTRG Template” tanımlıyorum. Aşağıdaki şekildene benzer şekilde tanımları girdikten sonra OK ile onaylıyoruz.

clip_image005

Select Azure Template sayfasında Windows Virtual Machine seçeneğini seçiyorum. Bu ekranda oluşturmak istediğiniz şablonun tipine göre farklı seçenekleri bulacaksınız. Hem Windows hem de Linux tabanlı sanal sunucular, ölçeklenebilir mimaride sanal sunucu grupları oluşturmaya yönelik Windows/Linux Scale set şablon hazırlama seçeneklerini de kullanabilirsiniz. Biz bu uygulamamızda Windows Server işletim sistemi için şablon oluşturacağımızdan Windows Virtual Machine seçeneği seçili iken OK ile onaylıyoruz.

clip_image007

Projemizin oluşturulma süreci tamamlandıktan sonra Solution Explorer içerisinde projeye ait dosyalar listelenecektir. Bu kısımda dört adet dosya Vstudio tarafından hazır olarak getirilecektir. Bunlar:

·        WindowsVirtualMachine.json : Yapılandırma dosyasıdır. ARM ile üzerinde işlem yapılacak ilgili kaynakları içeren ana şablon dosyasıdır.

 

clip_image009

·        WindowsVirtualMachine.parameters.json : Azuredeploy.JSON dosyası içerisindeki kullanıcı tanımlı parametrelere değer sağlayan dosyadır.

 

clip_image011

 

·        Deploy-AzureResourceGroup.ps1 : Vstudio tarafından şablon dosyasını bize oluşturmak için kullanılır.

 

clip_image013

 

·        AzCopy.exe : Geliştirilen şablon projesinde özel geliştirilmiş dosyaların ve kodların Powershell tarafından Azure’da bir depolama kabına (storage container) kopyalamak için kullanılır.

clip_image015

Oluşturduğumuz şablon dosyasını test etmek için Solution Explorer’da proje adı üzerinde sağ tuşa basınca gelen Deploy à New Deployment seçeneğine tıklıyoruz.

clip_image017

Karşımıza gelen Deploy to Resource Group ekranında Add an Account ile Azure abonelik hesabınızla oturum açıyoruz. Oturum açtıktan sonra alt kısımda Resource Group listesinde tanımlı kaynak grupları listelenecektir. Bu listeden kaynakları provizyonlama yapmak istediğiniz hedef kaynak grubu seçiyoruz. 

clip_image019

Oluşturmak istediğimiz sanal sunucu ile ilgili parametrelere gerekli değerleri girmek için yukarıdaki resimde de görülen Edit Parameters butonuna tıklıyoruz.

clip_image021

 

Parametre değerlerini girdikten sonra Save ile kaydediyoruz. Tekrar Deploy to Resource Group ekranına geri dönüyoruz. Bu ekranda artık gerekli tüm bilgileri hazır hale getirdiğimiz için, Deploy butonuna basarak kaynakların Azure bulutuna provizyonlanmasını başlatıyoruz.

clip_image023

Vstudio.NET Output ekranında provizyonlama sürecinin ilerlemesini takip edebilirsiniz. JSON şablon ve JSON parametre dosyalarında tanımlı tüm kaynakların Azure bulutana provizyonlama süreci başlamış oldu.

clip_image025

 

Azure Portal içerisinde de sanal sunucuya ait sanal sunucu, ağ, depolama vb. kaynakların oluştuğunu göreceksiniz.

clip_image027

Sanal sunucu provizyonlama tamamlandıktan sonra sanal sunucuya oturum açma bilgilerini kullanarak erişimi gerçekleştirebilirsiniz.

clip_image029

Provizyonlama yapılan kaynaklar Vstudio .NET içerisinde JSON Outline bölümünde aşağıdaki şekilde olduğu gibi görüntülenir.

clip_image031

Şablon dosyasına ikinci bir sanal sunucu daha eklemek isterseniz aşağıdaki şekilde görüldüğü gibi resources üzerinde sağ tuşa basınca gelen Add New Resource kısayoluna tıklıyoruz. Gelen Add Resource ekranında Windows Virtual Machine seçeneğini seçip, aşağıdaki şekilde görüldüğü gibi Name, Storage Account ve Virtual network/subnet seçeneklerini tanımlıyoruz.

clip_image033

Add ile kaynak ekleme sürecini tamamlıyoruz.

Benzer şekilde Vstudio .NET içerisinden JSON şablonlarını oluşturarak çok karmaşık ve ileri seviye hem Windows tabanlı hem de Linux tabanlı altyapıları bu şablonlarla provizyonlayabilirsiniz. Şablon dosyası içerisine yeni eklenen sanal sunucu ile ilgili parametreler, değişkenler ve kaynaklar aşağıda görüldüğü gibi eklenmiş olacaktır.

clip_image035

Güncellenen şablon dosyasındaki kaynakları Azure bulutuna da senkronize etmek için Solution Explorer içerisinde proje adı üzerinde sağ tuşa basınca gelen Deploy seçeneğini kullanabilirsiniz. Karşımıza gelen Deploy to Resource Group ekranında oluşturmak istediğimiz sanal sunucu ile ilgili parametrelere gerekli değerleri girmek için Edit Parameters butonuna tıklıyoruz. Edit Parameters penceresinde aşağıdaki göründüğü şekilde eklenen sanal sunucuya ait değerleri tanımlıyoruz. Parametre değerlerini girdikten sonra Save ile kaydediyoruz. Tekrar Deploy to Resource Group ekranında geri dönüyoruz. Bu ekranda artık gerekli tüm bilgileri hazır hale getirdiğimiz için, Deploy butonuna basarak yeni eklenen kaynakların Azure bulutuna provizyonlanmasını başlatıyoruz.

clip_image037

Vstudio.NET Output penceresinden süreci takip edebilirsiniz.

clip_image039

Provizyonlama başarıyla tamamlandıktan sonra Azure Portal’dan yeni eklenen sanal sunucuya da bağlantı sağlayabilirsiniz.

Buraya kadarki adımda 2 sanal sunuculu örnek bir şablon oluşturduk ve Vstudio.NET içerisinden kaynakların provizyonlanma süreçlerini de test ettik. Artık şablonumuzu içeren projemizi derleyebiliriz. Bunun için yine Solution Explorer içerisinde proje adı üzerinde sağ tuşa basınca gelen Build seçeneği ile derleme sürecini başlatıyoruz.

clip_image041

Derleme süreci tamamlandıktan sonra proje klasörleri içerisinde aşağıdaki resimde de görüldüğü gibi Scripts klasörü altında şablonu işletime almak için kullandığımız PowerShell script dosyasını, Templates klasörü içerisinde de iki adet JSON şablon dosyalarını göreceksiniz.

clip_image043

Şablonu kullanarak provizyonlama yapmak için iki farklı yöntemi kullanabilirsiniz. Bunlardan ilki PowerShell Script dosyasını çalıştırmaktır.

clip_image045

PowerShell dosyası çalıştıktan sonra sizden parametrik değerleri ister. Bunları girdikten sonra sanal sunucuların provizyonlama süreci başlayacaktır. Provizyonlama süreci tamamlandıktan sonra Azure portalı içerisinden sanal sunuculara bağlantı sağlayabilirsiniz.

Şablonu kullanarak provizyonlama yapmak için kullanacağınız ikinci yöntem de Azure Portal içerisinden Template Deployment nesnesi altına şablon kodunu yapıştırmaktır. Bunun için öncelikle Azure Portalına abonelik hesabınız ile oturum açıyoruz. Template Deployment nesnesini arama sonrası aşağıdaki resimde görülen Edit Template üzerine tıkladıktan sonra açılan metin düzenleme ekranına bilgisayarımızda proje klasörleri altındaki Templates içerisinde oluşan WindowsVirtualMachine.json içeriğini Copy-Paste yöntemi ile yapıştırıyoruz.

clip_image047

clip_image049

Save ile şablonu kaydediyoruz. Bu adımdan sonra Custom Deployment ekranında aşağıdaki resimde de görülen Edit Parameters bağlantısına tıklayınca gelen ekranda parametrelere ait değerleri giriyoruz ve OK ile onaylıyoruz.

clip_image051

Son olarak da Resource Group (Kaynak Grubu), Resource Group Location (Kaynak Grubu Konumu) tanımlarını yaptıktan ve Legal Terms (Yasal Sözleşme) kısmını onayladıktan sonra Create (Oluştur) butonuna basarak provizyonlama sürecini başlatıyoruz. Bu aşamadan sonra Azure Portal içerisinde pano (dashboard) bölümünden provizyonlama sürecini takip edebilirsiniz. Provizyonlama süreci tamamlandıktan sonra da oluşan sunuculara Connect ile bağlanarak yönetmeye başlayabilirsiniz.

Buraya kadarki testlerimizde oluşturduğumuz kaynak grubu (resource group) altında oluşturduğumuz tüm nesneleri silmek için PowerShell CLI içerisinden öncelikle Add-AzureRmAccount ile oturum açıp, aşağıdaki komutu da çalıştırıyoruz.

Get-AzureResourceGroup | where {$_.ResourceGroupName -like “*Template*”} | Remove-AzureResourceGroup

 

clip_image053

Komut tamamlandıktan sonra Azure portaldan kontrol ettiğimizde tüm kaynakların silindiğini görmüş olacaksınız.

SONUÇ

Bu makalemizde altyapıyı kod seviyesinde yönetmeye (Infrastructure as a Code)  yönelik olarak VStudio.NET ile ARM mimarisinde şablon dosyasının hazırlanması ve şablon dosyaları kullanılarak IaaS kaynaklarının provizyonlanmasını ele aldık. Önümüzdeki makalelerde Vstudio.NET ile ileri seviye, çok katmanlı, ölçeklenebilir ve karmaşık Azure IaaS & PaaS şablonlarının hazırlanmasını ele alıyor olacağız. Yeni bir makalemizde buluşmak üzere, sağlıcakla kalın.

Mesut ALADAĞ.
www.mesutaladag.com | @mesutaladag

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu