vCO ile Snapshotları Listelemek
Daha önceki bir yazımda vCAC veya yeni adıyla vRealize Automation içerisinde nasıl Advance Service yaratıp kullanabileceğimizden bahsetmiştik. Bu yazımdaysa vCO’da veri merkezimizde ki tüm snapshotları listeleyen ve kullanıcıya eposta atan bir workflow üzerinde çalışacağız ve bunu daha sonra vCAC üzerinden servis olarak kullanıcılarımıza sunabiliriz.
İlk önce vCAC appliance’ının FQDN adresini yazıp web sayfasını açalım. En alt kısmında gördüğümüz vCenter Orchestrator Client’ı indirip çalıştıralım.
vCO’a giriş yaptıktan sonra üst panelden workflows sekmesini seçip Library altında istediğimiz bir klasör üzerinde sağ tıklayıp gelen menüde “New workflow” seçeneğini seçelim.
Daha sonra yeni yarattığımız workflow üzerine gelip üst panelde bulunan “Edit” tuşuna basalım ve workflow üzerinde değişiklik yapabileceğimiz moda geçelim.
İlk önce workflow’a dışarıdan yollayabileceğimiz değişkenleri belirlememiz gerekiyor. Snapshot listesini talep eden kullanıcının eposta adresini girebileceği bir alan ve epostayı hangi smtp sunucusu ve hesap üzerinde yollayacağını da vCAC üzerinden almak istiyorum. Normalde eposta sunucu bilgilerini statik olarak workflow’lara tanımlayabiliriz ama eğer birden fazla firmaya aynı workflow ile hizmet vermek istiyorsak bu bilgileri service blueprint içerisine yazmamız daha iyi olacaktır. Böylelikle her firma için ayrı blueprint ama tek bir workflow olacaktır.
Değişkenleri aramak için üst panelde sarı ok olan “Add parameter” tuşuna basalım.
Alt sekmede oluşan değişkenin adını ve tipini değiştirelim. Değişken tipleri baya geniş bir listedir ve bu yazının kapsamı dışındadır ama biraz yazılım bilgisiyle ve değişkenlerin adlarından yola çıkarak ne işe yaradıklarını rahat bir şekilde anlayabilirsiniz.Bu workflow içerisinde kullanacağımız değişkenler aşağıda ki gibidir.
Output parametresine bu workflow’da ihtiyacımız olmayacak. Bu yüzden direk schema sekmesine geçebiliriz. Schema daha önce benzer bir ürünle çalıştıysanız size çok kolay gelecektir.İlk önce bir adet “Scriptable Task” ekleyelim, bu obje bizim custom script yazıp çalıştırmamıza izin vermektedir. vCO’nun scripting dili her ne kadar javascript olsa bile plugin’ler yardımıyla powershell’de çalıştırabildiğimizi eklemek istiyorum.
Scriptable Task’ın “Out” kısmına “contentsnapshot” isimli türü Array/string olan bir değişken ekleyelim, Create kısmınınsa “Attribute” olarak seçildiğinden emin olalım.
Scriptin içerisine gelirsek aşağıda ki gibi olacak.
var contentsnapshot = new Array (); var vms = VcPlugin.getAllVirtualMachines(); for(i in vms){ var vm = vms[i]; if(vm.runtime.connectionState.value=="connected" && !vm.config.template){ var vmLayout = vm.layoutEx; if(vmLayout!=null){ var layoutFiles = vmLayout.file; var layoutSnapshots = vmLayout.snapshot; for(l in layoutSnapshots){ var layoutSnapshot = layoutSnapshots[l]; var dataKey = layoutSnapshot.dataKey; for(m in layoutFiles){ if(layoutFiles[m].key==dataKey){ var snapshot = VcPlugin.convertToVimManagedObject(vm,layoutSnapshot.key); System.log("Name : " +layoutFiles[m].name + " - Size : " + layoutFiles[m].size); contentsnapshot[m] = "Name : " + layoutFiles[m].name + " - Size : " + layoutFiles[m].size + "" ; contentsnapshot[m] = contentsnapshot[m].replace('#string##;',''); } } } } } }
Snapshotların isimlerini contentsnapshot içerisinde ki dizide topluyoruz. Snapshotları listeleyecek scripti bitirdiğimize göre epostayı yollayacak objenin tasarımına geçebiliriz. Bunun için Library->Mail altında bulunan hazır “Send Notification” objesini kullanabilirsiniz. “Send notification’ın” IN parametreleri aşağıda ki gibi olmalıdır. Eğer bahsettiğim hazır objeyi almışsanız sadece son değişkenin Source parametresini değiştirmeniz yeterlidir.
Visual Binding sekmesinde bağıntılar aşağıda ki gibi gözükmelidir. Ben aşağıda gördüğünüz bazı değişkenleri test için yarattım onları yaratmanıza gerek yoktur. Eğer bir değişkene sabit değer atamak istiyorsanız üzerine gelip “Edit” dediğinizde gelen panelden “Value” alanını doldurmanız yeterlidir.
Workflow’umuz oluştuğuna göre artık vCAC yönetim portalından Advances service’imizi oluşturabiliriz.
Advance Service’in oluşturulması ve devreye alınmasından daha önce bahsetmiştim. Bir servis yaratırken yollamanız gereken tüm değişkenler için otomatik olarak talep formunda uygun bir alan yaratacaktır. Burada dikkat etmeniz gereken tek şey son kullanıcıya görünmesini istemediğiniz alanların özelliklerini editleyip önceden değer atamanız ve kullanıcıdan gizlemenizdir. ilk önce “Default Value” kısmından “Constant’ı” seçip sabit değer vermeniz.
Daha sonra “Constraints” sekmesinden “Visibility” ayarını “No” yapıp kullanıcıya talep ekranında gösterilmemesini sağlıyoruz. Böylelikle birden fazla firma için tek workflow’la farklı eposta sunucusuna bağlı servisler yaratabiliriz.
Artık servisimiz kullanıma hazırdır.
Okuduğunuz için teşekkür ederim.