Vmware PowerCLI
Bu makalemde sizlere Vmware PowerCLI konusunda bilgi vereceğim. Temel olarak yükleme adımarından başlayalım.
PowerCLI İndirme ve Yükleme
Powercli yükleme işlemi vmware sitesi üzerinden yapılabilmektedir. https://www.vmware.com/support/developer/PowerCLI/ adresi ziyaret edilerek indirme işlemi yapılabilir.
Yazının hazırlandığı tarihte kullanılan güncel PowerCLI versiyonu 6.0 Relaase 1’dir. Yükleme işlemi için üye girişi yapılması gerekmektedir.
İndirme işlemi tamamlandıktan sonra kurulum aşmasına geçiyoruz.
Lisans sözleşmesi kabul edilerek ilerlenmesi gerekmektedir.
Resimdeki aşamada tercihe göre PowerCLI haricinde vCloud Air cmdlet’leri de yüklenebilmektedir.
Seçimler yapıldıktan sonra kurulum işlemeleri başlayacaktır.
Kurulum tamamlandıktan sonra VMware vSphere PowerCLI kısayolu ile uygulama çalıştırılabilmektedir.
Uygulama ilk açıldığında resimdeki ekran görülmektedir.
PowerShell Çalışma İlkelerini Düzenleme
Vmware PowerCLI Microsoft PowerShell alt yapısını kullanmaktadır. Güvenlik açısından powercli çalışma kuralları bulunmaktadır. PowerShell üzerinde bu özellikler execution policy olarak adlandırılmaktadır. PowerShell üzerindeki execution policy detayları aşağıdaki gibidir.
Restricted: Varsayılan olarak tanımlı olan policydir. PowerCli üzerinde komut çalıştırmanıza izin verir fakat varolan bir scripti çalıştırmanıza izin vermez.
AllSigned: bu policy ile sadece güvenilen yayıncılar tarafından hazırlanan scriptlerin çalışmasına izin vermektedir.
RemoteSigned : Bu policy local bilgisayar üzerinde hazırlanmış scriptleri çalıştırmaya izin vermektedir. İnternet üzerinden indirilen scriptlerde ise sadece güvenilen yayıncılar tarafından imzalanmış olan scriptleri çalışmasına izin vermektedir.
Unrestricted : Tüm scriptlerin çalışmasına izin vermektedir. Fakat internet üzerinden indirilen güvensiz scriptleri çalıştıdığınızda komut satırından onay vermeniz için bir uyarı çıkarmaktadır.
Bypass : Bu policy tüm uyarıları görmezden gelerek tüm scriptlerin çalışmasına izin vermketedir.
Undefined : Değiştirilmiş olan executionpolicy seçeneklerini siler.
PowerCLI C:\> Get-ExecutionPolicy
Restricted
Komutu ile tanımlı olan güvenlik policy kaydınızı görüntüleyebilirsiniz.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned ile execution policy tanımı değiştirilebilmektedir.
Get-ExecutionPolicy komutu ile tekrar kontrol edildiğinde gerekli değişikliğin başarı ile gerçekleştiği görülmektedir.
Powercli İle ESX Sunuculara Erişim
PowerCLI ile vCenter yada ESX Hostlar üzerindeki sunucuların ve alt yapının yönetimini komut satırı üzerinden gerçekleştirmemizi sağlamaktadır. Yönetim işlemlerinin yapılabilmesi için Vcenter erişim bilgilerinin kullanılması gerekmektedir.
PowerCLI ile vCenter erişimi sağlanmadığında sunucular ile ilgili çağrılan komutlarda aşağıdaki hata mesajı ile karşılaşılacaktır. Hata mesajı detaylarını kontrol edildiğinde her hangi bir sunucu ya erişim dağlanmadı, bu komutların kullanılabilmesi için öncelike sunucuya bağlantı sağlanması gerektiği ile ilgili bir uyarı çıkmaktadır.
PowerCLI ile vCenter sunucusuna erişebilmek için aşağıdaki komut kullanılmalıdır.
Connect-VIServer -Server IpAdresiniz -User KullanıcıAdınız -Password Parola
Connect-VIServer -Server 192.168.2.2 -User Administrator -Password 123456
Eğer birden fazla sunucu yada farklı vCenter sunuculara bağlanmanız gerkeiyorsa aşağıdaki komutu kullanabilirsiniz.
Connect-VIServer -Server Vcenter1, ESX1, ESX2, Vcenter2
PowerCLI Sertifika Hatası
Eğer vCenter sunucunuz üzerinde (CA)Certification Authority tarafından imzalanmış bir sertifika bulunmuyorsa aşağıdaki hata mesajı ile karşılaşabilirsiniz. Vmware tarafında önerilen CA tarafında imzalı sertifika kullanılmasıdır. kb.vmware.com/kb/2111219 linki üzerinde işlem adımları anlatılmaktadır.
Eğer bu hata mesajı ile karşılaşmak istemiyorsanız bir diğer yöntem PowerCLI üzerinde aşağıdaki komutu çalıştırarak uyarını görünlenmesini engellemek.
Sanal Sunucuların Listelerinin Getirilmesi
Get-VM komutu ile vCenter üzerindeki tüm sanal sunucuların listesini getirilebilir. Get-Help Get-Help komutu ile Get-VM komutunda kullanılacak parametreleri görmek mümkündür. Komut ilk çalıştırdığınızda sizden Update-Help güncellemelerini yapmak isteyip istemediğinizi soracaktır. PowerShell help üzerinde sonradan yapılan bir güncelleme varsa bu komut ile yüklemeniz mümkün olacaktır.
Başlangıç olarak Get-VM ile sunucuları listesinin getirilmesi sağlanacaktır. Kontrol edildiğinde Vcenter üzerinde bulunan 3 tane vm bilgisinin adı, çalışma durumu, ne kadar CPU ve RAM atandığı gibi bilgileri getirilebilmektedir.
Get-VM komutu ile guestler için çok detaylı olmayan bilgileri alabildik. Fakat bu guest ile ilgili ihtiyacımız olan diğer bilgiler varsayılan olarak bu komut ile alınamıyor. PowerCLI güzel özelliklerden biri olan PipeLine “|” ile diğer özellikleri komutlarımızla birleştirebiliyoruz.
Örneği biraz daha detaylandırmak için guestlerden CentosServer2 isimi sunucumuzu kullanacağım
Get-VM -Name CentosServer2| Format-List -Property * komutunu çalıştırdığımızda bu vm için görüntülenebilecek diğer objelerin listesi çıktı olarak karşımıza gelecektir.
Bu komutu çalıştırdığınızda karşınıza bir Warning mesajı çıkabilir. Bu uyarıda bazı özelliklerin artık değiştiğini bundan sonraki powerCLI sürümlerinde de kaldırılabileceği uyarısı vermektedir. Bunun yerine kullanabileceğiniz yeni özellikler mesajda belirtilmektedir.
Bu uyarılar önemlidir. Çünkü önceden hazırlamış olduğunuz scriptler yada internet üzerinden indirmiş olduğunuz scriptlerde günün birinde sorun yaşarsanız bu değişimlerden kaynaklanıyor olabilir.
Eğer bu uyarıları görmezden gelmek için aşağıdaki komutu kullanabilirsiniz.
Set-PowerCLIConfiguration -DisplayDeprecationWarnings $false -Scope User
Komutu tekrar çalıştırdığınızda ilgili uyarı gelmeyecektir.
Eğer bu özelliklerden bazılarını listelemek istiyorsanız Selec-Object cmdlets kullanmanız gerekmetkedir.
Get-VM | Select-Object -Property Name,VMHost,Guest
Wildcard Karakterlerin Kullanılması
İsimlerini tamamını hatırlayamadığınız komutlar, vmler, hostlar yada datastore benzeri kayıtlar için wildcard karakterleri kullanabilirsiniz.
ÖRN:
* Wildcard karakteri kullanımı = *dns* olarak yazdığınızda içinde dns geçen tüm sunucuları listeleyecektir.
Get-VM –Name *dns*
? wildcard kullanımı = ? karakteri bilinmeyen her karakter için kullanılabilir test? Yazdığınızda test1, test2,test3 sonuçlarını görebilirsiniz.
Get-VM -Name test?
Get-VM -Name *[0-8]
Objelerin Filtrelenmesi
Get-VM özelliklerini filtrelemek istiyorsanız | pipe methodu ile beraber Where-Object komut setini kullanmanız gerekmetkedir. Bu cmdlets ile beraber özellikler filtrelenebilmektedir. Örneğin 2GB üzerinde Memory atanmış guestleri listelemek istersek.
PowerCLI C:\> Get-Vm | Where-Object {$_.MemoryGB -gt 2}
Komut içerisinde kullanılan “$_.” Alanı pipe öncesinde kullanılan nesneyi temsil etmektedir. Bu $_ nesnesi Get-VM ile getirilen sanal sunucuları temsil etmektedir. $_.MemoryGB geçerli olan sunucuların GB türünden Memory boyutunu –gt ise Greater Than kısatlması olarak 2GB üzerinde olan sanal sunucuları listelemektedir. Burada dikkat edilmesi gereken konu –gt kullandığımızda 2GB buna dahil olmuyor eğer 2GB ve üzeri memorysi bulunan sunucuları listelemek istersen –ge operatörü kullanmamız gerekecektir.
PowerShell 3.0 ile beraber yeni syntax {$_.} kullanımı yerine Get-VM |Where-Object MemoryGB -gt 1 olarak daha basit bir kullanım sağlanabilmektedir.
Karşılaştırma Operatörleri
Bir önceki örnekte verilen –eq parametresi karşılaştırma amaçlı kullanıan operatördür. Örneğin çıkan sonuçar içerisinde de bir filtreleme yapmak istiyorsunuz. Yöneticiniz sizden 12GB üzerinden RAM tanımlanmış virtual sunucuları istediğinde bunu bulmak karşılaştırma operatörleri ile çok kolay olacaktır.
Get-VM |Where-Object MemoryGB -ge 12
Aliases Kullanımı
PowerShell ve PowerCLI üzerinden bazır komutlar sık kullanıdıklarında daha hızlı yazım için kısaltmalar içermektedir.
Get-VM | ? {$_.NumCPU -gt 1}
Get-VM | Where-Object NumCPU -gt 1
Yukarıdaki örnekte Where-Object yerine ? kullanılmaktadır.
PowerCLI üzerinde alias kullanımı bize pratiklik sağlamaktadır. Fakat ilk öğrenme aşamasında komutların uzun tanımları ile yazılması anlaşılabilirlik açısından daha faydalı olacaktır.
Get-Alias komutu ile PowerCLI üzerinde tanımlı Aliasların görebilirsiniz.
Get-Alias | more komutu ile satır satır geçiş yaparak tüm aliasları inceleyebilirsiniz.
ESX Hostların Bilgilerinin Getirilmesi
Get-VM komut ile vmware üzerindeki guestlerin bilgilerine ulaşmıştık. Şimdi Get-VmHost cmdlet ile Hostların bilgilerini getireceğiz.
Get-VMHost komutu ile bağlandığımı vcenter üzerindeki hostları getiriyoruz.
Getirdiğimiz bilgilerde HostName,ConecctionState,PowerState, CPU, RAM vb bilgiler bulunmaktadır. Peki daha detaylı bilgilere ulaşmak istiyorsak. O zaman
Get-VmHost | Format-List –Property * ile sunucunun detaylı bilgilerini görüntülüyoruz.
Örneğin Vcenter üzerindeki virtual datacenter üzerinde 100 + hostunuz bulunuyor bu hostların ESX versionları ve sürüm bilgilerine ihtiyacınız var. Bunu öğrenmek için Get-VMHost | Select-Object Name,Version,Build Komutunu kullanabilirsiniz.
Grid View Özelliğinin Kullanılması
Çoğu zaman console üzerinde alınan çıktıların görüntüleri bize karmaşık gelebilir. Düzenli bir görüntü ve çok daha kısa zamanda filtreleme işlemleri yapabilmek için PowerCLI komutlarını GridView ile görüntüleyebilriz. Bunun için aşağıdaki komutu kullanabilirsiniz.
Get-Vm | Select-Object * |Out-GridView