Virtualization

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.


clip_image002

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.

clip_image004

İndirme işlemi tamamlandıktan sonra kurulum aşmasına geçiyoruz.


clip_image006

Lisans sözleşmesi kabul edilerek ilerlenmesi gerekmektedir.

clip_image008

Resimdeki aşamada tercihe göre PowerCLI haricinde vCloud Air cmdlet’leri de yüklenebilmektedir.


clip_image010

clip_image012

Seçimler yapıldıktan sonra kurulum işlemeleri başlayacaktır.


clip_image014
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.


clip_image016

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.

clip_image018

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.

clip_image020


clip_image022

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.

clip_image024

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.

clip_image026

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.

clip_image028

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.

clip_image030

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

clip_image032

Komutu tekrar çalıştırdığınızda ilgili uyarı gelmeyecektir.

clip_image034

Eğer bu özelliklerden bazılarını listelemek istiyorsanız Selec-Object cmdlets kullanmanız gerekmetkedir.

Get-VM | Select-Object -Property Name,VMHost,Guest

clip_image036

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}

clip_image038

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

clip_image040

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.

clip_image042

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.

clip_image044

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.

clip_image046

Ö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.

clip_image048

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

clip_image050

 

İlgili Makaleler

Bir yanıt yazın

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

Başa dön tuşu