vRealize Automatin Custom VM Name
Her kurumun sunucuları için kullandığı bir isim standardı vardır, bu standart sayesinde sistem yöneticileri sunucuların lokasyonunu, kullanım amacını ve önemini bir seferde görebilirler. vRealize Automation sunuculara bizim belirlediğimiz prefix’leri atasa da son kısmına eşsiz olması için bir sayı atamaktadır. Bu birçok kurumun isimlendirme yapısına uymamaktadır. Bu sebepten dolayı bu yazımda vRealize Automation üzerinden VM talebi esnasında VM adını nasıl belirleyebileceğimizden bahsedeceğim.
Birden fazla veri merkezimiz olduğunu ve her veri merkezi için ayrı bir prefix olduğunu varsayıyorum, sistem yöneticisi bir blueprint’i seçtikten sonra sadece prefix’den sonra yazması gerekli olan kısmı dolduracak ve prefix’le birleştirerek yeni bir VM adı yaratıp veri tabanını güncelleyecek.
Yeni bir prefix yaratmak için üst panelden Infrastructure tabını seçip sırasıyla Blueprints ve Machine Prefixes seçeneklerini seçelim. Yeni gelen ekrandan “New Machine Prefix” bağlantısına basarak yeni bir tane prefix yaratalım.
Ana veri merkezim için mdc-(main data center) prefix’ini yarattım ve number of digits kısmı sonunda kaç haneli bir sayının olacağını, next number ise sayıların kaçtan başlayacağını belirlemektedir. Prefix’in sonuna tire (-) işaretini ekleme sebebimse powershell ile string işlemleri yaparken bana bir referans noktası olması içindir.
İkinci adımda VM talep ederken isminin ikinci kısmının girilebilmesi için talep formunda kullanıcılara bir textbox göstermem gerekiyor. Bunun için Property Dictionary’e girip Textbox kontrol tipine sahip ve Requeired olarak “Yes” seçili bir property yaratalım.
Aynı şekilde Property Layout yaratmayı unutmayalım.
Bu işlemleri yaptıktan son Blueprint’e gidip yarattığımız prefix’i ve layout’u ekleyelim ve formumuzu kontrol edelim ve machine suffix kısmının geldiğini görelim, ekleme adımlarını daha detaylı görmek için vCAC Property Dictionary İle Dynamic Menus yazımı okuyabilirsiniz.
Şimdi yazımın ikinci kısmı olan workflow tasarımına geçebiliriz. VM talep edildiğinde prefix kısmında ki bilgilerden otomatik olarak bir VM adı oluşturulacaktır, bizim string işlemlerini yapacak olan powershell scriptimize machine suffix kutusunda ki bilgileri aktarmamız ve script’in çıktısını yeni VM adı olarak veri tabanında güncellememiz gerekmektedir.
vRealize Designer’ı açıp BuildWorkflow’ı yükleyelim ve Custom Code bloğuna girelim ve aşağıda ki sekmeden variables’ı açıp değişkenleri tanımlayalım.
İlk önce mevcut VM adını almak için yan panelde bulunan toolbox kısmından GetMachineName kutusunu alalım ve aşağıda ki gibi dolduralım.
Aynı şekilde talep formunda bulunan machine suffix özelliğini alabilmek için GetMachineProperty kutusunu alıp aşağıda ki gibi dolduralım. Tabii burada ki bilgiler sizin yarattığınız değişkenlerle uyumlu olmalı.
Değişkenleri aldığımıza göre bunları işleyecek powershell scriptini çağırmak kaldı. scripti yazının sonunda paylaşacağım :). Bunun içinde Invoke Powershell kutusunu kullanıyoruz. Powershell’i vCAC IaaS sunucusu üzerinde tutmamız gerekiyor ve yolunu yazarken “” içerisinde yazmamız lazım.
IsScript’in seçili olduğundan emin olun ve PowershellVariables kısmını aşağıda ki gibi doldurunuz. Powershelloutvar değişkeni yeni ismi yarattıktan sonra tekrar workflow içinde kullanabilmemiz için gerekli olan değişken adıdır. Ben örneklerde ki ismi kullandım siz istediğiniz isimleri verebilirsiniz.
Son kısımdaysa mevcut VM adını ve yeni oluşturduğumuz adı ile değiştirmemiz gerekiyor. Toolboxdan iki adet A-B Assign alalım ve ilkinin ilk kutusuna machine ve ikinci kutuya “mgmtContext.VirtualMachines.Where(Function (vm) vm.VirtualMachineID = virtualmachineId).FirstOrDefault()” yazalım.Bunun amacı machine isimli bir obje yaratmak ve ikinci A-B kutusu ile yaratığımız machine objesinin VM adını değiştirmek. İkinci A-B Assign kutusunun özellikleriyse ilk kutu için machine.virtualmachinename ikinci kutu içinse Powershelloutvar değişkenini tutalım.
Son olarak updateobject ve savechanges kullanarak öncelikle ismini değiştirdiğimiz objeyi güncelleyip daha sonrada veri tabanına kayıt edelim. Workflow’un tamamı aşağıda ki gibidir.
Powershell script aşağıdaki gibi olacak.
$machineName=$originalName $machineName=$machineName -replace "-", $machineSuffix $Global:PowerShellOutVar = $machineName
$originalName VM’in otomatik olarak yaratılmış adı
$machineSuffix formdan aldığımız kısım
$Powershelloutvar workflow’a geri döndüğümüz değer.
Artık VM’lerinizi yaratırken istediğiniz gibi isimlendirebilirsiniz.
Okuduğunuz için teşekkürler.
One comment, add your’s.
Ismail Yilmaz
Super yazi. Her projede mutlaka gerekli bir islem.