VMware ESXi ortamlarında CLI ve PowerCLI’in gücünü de kullanmak problemleri çözmede ya da konfigürasyonları hızlıca yapmada büyük kolaylık sağlar. Sizler için çok işinize yarayacak komutları derlemeye çalıştım.

Ön Gereklilik olarak aşağıdakilerden birisiyle ESXi sunucuya erişim olmalı:

–         SSH Servisi: vCenter ya da ESXi Üzerinden “Enable” edilebilir,

–         ESXi Shell: vCenter, ESXi ya da sunucunun yönetim portu üzerinden “Enable” edilebilir,

–         Sunucunuzun yönetim portundan (Dell:iDRAC, HP:ILO, Lenovo:IMM v.s.) ESXi konsoluna bağlanarak orandan ESXi Shell’e erişebilirsiniz. ESXi konsolundan login olduktan sonra F2’ye basıp: Troubleshooting Options > Troubleshooting Mode Options > Enable ESXi Shell’i “Enter” ile seçiyoruz. Sonra  “ALT + F1” kombinasyonu ile ESXi Shell’e geçebilirsiniz. Ana ekrana dönmek için ise “ALT+F2” yapıyoruz.

Not: Bazen aşağıdaki komutları girince ekran akıp gidebilir eğer komutun çıktısını sayfa sayfa görmek isterseniz her komutun sonuna “| more” ifadesini ekleyebilirsiniz. “Space” tuşu ekranı sayfa sayfa ilerletir, “Enter” ise satır satır ilerletir. Ya da komutun bir kelime üzerinden ekrana basılmasını isterseniz komutun sonuna | grep “kelime ya da kelimenin ilk harfleri” (tırnak işareti dahil) şeklinde ekleme yapılabilir. Örnek: #esxcli software vib list | grep “scsi” bu komut ismi “scsi” ile başlayan tüm paketleri getirir.

Windows makinanızda VMware PowerCLI paketini kullanmak için öncelikle bu paketi Windows PowerShell’e modül olarak kurmanız gerekir. Bunun için Windows PowerShell’i açıyoruz (arama ikonundan Power yazında geliyor) ve aşağıdaki şekilde kurulum işlemini yapıyoruz:

Kurulum,

PS > Install-Module -Name VMware.PowerCLI -Scope CurrentUser

Modul Güncelleme,

PS> Update-Module -Name VMware.PowerCLI

Kullanılabilir Modulleri Görmek İçin,

PS> Get-Module VMware.* -ListAvailable

Bir Powershell scriptini (*.ps1 uzantılı dosyalar) PowerShell’de çalıştırmak için öncelikle ilgili dizine (cd komutu ile) gidiyoruz. Bu dizin altında “ .\script_name.ps1”  komutu ile script’i çalıştırıyoruz.

Öncelikle ESXi CLI Komutlarıyla başlayalım:

–         ESXi Management Servis Yönetimi :

Eğer vCenter, ESX sunucularınıza erişemiyorsa bu komutlar işe yarayacaktır. (Hostd: ESX Host Daemon, vpxa: vCenter Agent servisidir)

# /etc/init.d/hostd restart

#/etc/init.d/vpxa restart

Diğer opsiyonlar: start>servisi başlatır, stop> servisi durdurur, status> servis çalışıyor mu kontrol edilir]

–         ESXi Sunucu Versiyonu Öğrenme:

# vmware -vl

# esxcli system version get [Ayrıntılı Bilgi Getirir]

–         ESXi Sunucu FQDN ve Domain İsmini Öğrenme:

# esxcli system hostname get

–         ESXi Üzerinde Çalışan VM’leri Listeleme ve World ID’lerini Öğrenme:

# esxcli vm process list

–         ESXi Üzerinde Çalışan VM’i Kill Etme:

# esxcli vm process kill -type=force -world-id=<wid numarası> [wid numarası bir önceki komuttan görülebilir]

–         ESXi Üzerindeki VM’leri Listeleme, Durumunu Görme, Açma, Kapama, Dondurma:

Listeleme,

# vim-cmd vmsvc/getallvms [Her bir VM’in vmid’leri bu komutla görülür]

Durumunu Görme,

# vim-cmd vmsvc/power.getstate <vmid>

Açma (Power On):

# vim-cmd vmsvc/power.on <vmid>

Kapama (Shut Down):

# vim-cmd vmsvc/power.shutdown <vmid>

Fişini Çekme (Power-off)

# vim-cmd vmsvc/power.off <vmid>

Dondurma (Suspend):

# vim-cmd vmsvc/power.suspend <vmid> (durdurma)

# vim-cmd vmsvc/power.suspendResume <vmid> (suspend’den çıkarma)

–         ESXi Üzerinde Kurulu Paketleri Listeleme:

# esxcli software vib list

–         ESXi Üzerinde Kurulu Paketi Kaldırma:

# esxcli software vib remove -n <Paketin İsmi> (Paketin ismi bir önceki komutta görülür)

–         ESXi Sunucunun Offline Bundle dosyasından “Upgrade” Edilmesi:

Örneğin ESxi 6.5’den 6.5 Update1’e yükseltme yapılacaksa kullanılır. Bu işlem iki adımda yapılır:

  1. # esxcli software sources profile list -d /vmfs/volumes/datastore_name/ESXi_xxx.zip(Bu komut ile zipli dosya içindeki update dosyasının profil ismi öğrenilir. Genelde “ESXi-6.x.x-xxxxx-standard” şeklinde bir isim olur)
  2. # esxcli software profile update -d “/vmfs/volumes/datastore1/ESXixxxx.zip” -p <Profile_İsmi>(Yukarıda 1. Komutta paketin içindeki profil ismi kullanılır)

–         ESXi Sunucuda “Patch Update” Yapılması Ya da Yeni Bir Paket Yükleme:

Herhangi bir güvenlik yaması yüklemek, bir paket yüklemek (driver v.s)  ya da varolan bir paketi güncellemek için kullanılır.

# esxcli software vib update -d /vmfs/volumes/datastore_name/ESXi_xxx.zip [Bu komut bir önceki paketi günceller],

# esxcli software vib install -d /vmfs/volumes/datastore_name/ESXi_xxx.zip [Bu komut bir önceki paketin üzerine yazar ya da sıfırdan paket yükleme yapar]

–         ESXi Sunucu üzerinde Update Manager Log’unu İzleme:

# tail -f /var/log/esxupdate.log

–         ESXi Sunucuda Takılı HBA Kartı ile ilgili Detayları Görme: (Firmware Ver., Serial v.s)

# /usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -a

–         ESXi Sunucu Üzerindeki Donanımların Driver ve Firmware Detaylarını Görme:

# /usr/lib/vmware/vm-support/bin/swfw.sh

–         ESXi Sunucu Üzerindeki Tüm SCSI Aygıtların Detaylarını Görme:

Fiziksel Device İsimleriyle,

# esxcfg-scsidevs -a

Mantıksal Device İsimleriyle,

# esxcfg-scsidevs -c

–         ESXi Sunucudaki HBA Kartın Kuyruk Derinliğini (Queue Depth) Öğrenme:

QLogic HBA için,

# esxcli system module parameters list -m qlnativefc | grep “depth”

Emulex HBA için,

# esxcli system module parameters list -m lpfc | grep “depth”

Brocade HBA için,

# esxcli system module parameters list -m bfa | grep “depth”

–         ESXi Sunucu Üzerindeki HBA’ların Node (WWNN), Port Name (WWPN), Firmware, Speed, Link Status v.s Görme:

# esxcli storage san fc list

–         ESXi Üzerindeki Datastore’ları Device ID (naa.xxxx) leri ile Birlikte Görme:

# esxcli storage vmfs extent list

–         ESXi Üzerindeki Tüm Datastore’ların VAAI Bilgilerini Görme:

# esxcli storage core device vaai status get

–         ESXi Üzerindeki HBA’ların Listelenmesi:

# esxcli storage core adapter list

–         ESXi Üzerindeki HBA’ların Tekrar Taranması (scan) Edilmesi:

# esxcli storage core adapter rescan –all

Belli bir HBA’yı taramak için,

# esxcli storage core adapter rescan –adapter <vmkernel SCSI adapter name> [Bir önceki komutla ilgili SCSI adapter isimleri görülebilir: vmhbaX gibi]

–         ESXi Üzerindeki Datastore’ların Taranması:

# vmkfstools -V

–         ESXi Sunucuyu Maintenance Mode’a Alma ve Çıkarma:

Almak için,

# esxcli system maintenanceMode set -e true -m noAction

Çıkarmak için,

# esxcli system maintenanceMode set -e false

–         ESXi Sunucu Bilgilerini Görme (Sunucu Serial No, Marka v.s.):

# esxcli hardware platform get

–         ESXi Sunucunun Management Interface Bilgilerini Görme: (IP Adresi, VMKernel İsmi v.s.)

# esxcli network ip interface ipv4 get

–         ESXi Sunucuya Takılı Ethernet Kartı ile İlgili Bilgileri Görme:

# esxcfg-nics -l

–         ESXi Sunucu üzerinde Takılı Ethernet Kartının Driver ve Firmware Bilgilerini Görme:

# ethtool -i <Kart İsmi> [Bir önceki komutta kart isimleri vmnicX olarak gözükür]

–         ESXi Sunucunun Default Gateway Bilgilerini Görme:

# esxcli network ip route ipv4 list

Şimdi de PowerCLI üzerinde çalışmaya başlayalım. PowerCLI gerçekten çok geniş bir yönetim imkanı verir ve internette çok sayıda script ile işlerinizi kolayca halledebilirsiniz. Aşağıda bir başlangıç yapmış olacağız.

–         PowerCLI ile vCenter’a Bağlanma:

Aşağıdaki satırları ConnectvCenter.txt dosyasına kopyalıyoruz ve sonra dosyanın uzantısını .ps1 olarak değiştiriyoruz. Microsoft PowerShell’de ilgili scriptin dizinine gidip .\ConnectvCenter.ps1 komutu ile çalıştırıyoruz. Ekranda istenen bilgileri girince vCenter sunucumuza bağlantı sağlanmış oluyor. Artık PowerShell ekranında VMware PowerCLI komutlarıyla çalışmaya başlayabiliriz.

ConnectvCenter.ps1 dosyasının içeriği:

$VCServer = Read-Host ‘Enter VC Server IP Address’

$vcusername = Read-Host ‘Enter vCenter Administrator User Name’

$vcPassword = Read-Host ‘Enter vCenter Administrator Password’ -AsSecureString

$vccredential = New-Object System.Management.Automation.PSCredential ($vcusername, $vcPassword)

Connect-VIServer -Server $VCServer -Cred $vccredential -ErrorAction SilentlyContinue -WarningAction 0 | Out-Null

vCenter’a bağlandıktan sonra aşağıdaki gibi bir komut çalıştırılabilir:

PS> Get-vm | select * | sort Powerstate | Export-Csv ‘C:\Report\PoweronVMs.csv’ -NoTypeInformation [Bu komut poweron durumdaki VM’lerin bilgilerini ilgili csv dosyasına kopyalar]

PS>Get-Datacenter [vCenter’daki Datacenter ismini ekrana basar]

PS>Get-Cluster [vCenter’daki Cluster’ları Ekrana basar]

PS>Get-vm [Tüm VM’leri vCPU, RAM, Power Durumları ile ekrana basar]

–         PowerCLI’da Hangi VM’lere CD-ROM Bağlı Görme:

PS> get-vm | where { $_ | get-cddrive | where { $_.ConnectionState.Connected -eq “true” } } | select Name

–         PowerCLI’da Hangi VM’lerde  Snapshot Var Görme:

PS> get-vm | Get-Snapshot | select VM, Name, @{ n=”SpaceUsedGB”; e={[math]::round( $_.SizeGB, 2)}}, created

–         PowerCLI’da Bir Komutla İlgili Örnekleri görmek için:

PS>Get-help get-vm -examples [burada get-vm komutu örnek olarak verilmiştir. Bu komutun çıktısı olarak Get-VM komutu ile ilgili örnekler ekrana basılır]

–         PowerShell’de yüklü modüllerin içinde Belli Bir kelime geçen Komutları Görme:

PS> Get-Command -Name “*snapshot*” [İçinde snapshot geçen tüm komutları getirir. Sizde bu örnekten yola çıkarak belli bir konuda komut var mı diye bakabilirsiniz]

–         PowerShell’de yüklü bir Modul için geçerli Tüm Komutları Getirme:

PS> Get-Command -Module VMware* [Microsoft PowerShell aslında bir çok üreticinin kendine ait modülleri ile zenginleştirilebilir. Her üreticinin kendi komut seti için modülleri vardır. Bu örnekte VMware modülü ile gelen tüm komutlar ekrana basılır.