VMware: An introduction to scripting VI using Perl or Powershell


David Deeths heeft een post geplaats met daarin de VMworld labs over Perl scripting en het gebruik van Powershell.

Hello, my name is David Deeths and I’m a new contributor to the VMware Developer Blog. I wanted to share with the community the scripting lab we put together for VMworld 2008. This is a great introduction to scripting with the VI Toolkits in Perl or PowerShell. The PowerShell version doesn’t require any programming or scripting experience at all.

The labs will help you get started with scripting VMware Infrastructure to enable automation, extensibility, and integration with existing tools. When we ran this at VMworld, we had about 600 attendees and it was so popular some students camped out in line to attend the lab a second time. We had so many folks request a way to share this with their teams that we decided to publish the whole thing for the community.

The lab is available in two versions: one shows how to use the VI Perl Toolkit and the other shows how to use the PowerShell-based VI Toolkit (for Windows). The attached files contain the manuals for both versions of the lab and the exercises for both versions of the lab.

The lab takes 2-3 hours to complete (not including the time to set the environment up first), but is conveniently split into 20 minute exercises. You’ll walk away with a better understanding of VMware Infrastructure, resources for using the toolkits, and a variety of useful scripts for performing common administrative tasks. The exercises cover triggering tasks, examining VM attributes, performing actions on VMs, and exporting performance data.

Meer info en een aantal downloads vind je hier: an-introduction-to-scripting-vi-using-perl-or-powershell

Script: VI Toolkit Healthcheck


Ivo Beerens just released his second version of his Healthcheck powershell script.

Version 2.0 of the Healthcheck script is released. The script reports the following:

– VMware ESX server Hardware and version         
– VMware vCenter version    
– Cluster information
– VMware statistics
– Active Snapshots    
– CDROMs connected to VMs   
– Floppy drives connected to VMs  
– Datastores Information such as free space
– RDM information 
– VM information such as VMware tools version,  processor and memory limits     
– VM’s and there datastore
– VMware timesync enabled  
– Percentage disk space used inside the VM
– VC error logs last 5 days

It is possible to schedule this script and output the content to HTML and e-mail it. 

image 

You can download the script over here: http://www.ivobeerens.nl/?p=256

VMware: Service Console Memory


Als je ESX 3.x standaard installeerd krijgt het Service Console 272 MB geheugen.

image

Via fdisk –l  kun je de partitie informatie opvragen. Zoals je ziet heeft deze ESX server een Swap partitie van 1600MB. 

image

Standaard is de Swap partitie 544MB (2*272mb van het Service Console).  Mocht de swap partitie inderdaad “maar” 544mb groot zijn, dan kun je het geheugen van het Service Console niet verhogen. Hoe je dit verder kan oplossen lees je hier: http://communities.vmware.com/message/685697#685697

Je kunt het gehugen van het Service Console op twee manieren aanpassen, via de de VIC of via de commandline.

Via de VIC

klik op properties.

image

Voer daarna de juiste waarde in (800MB is de max):

image

 

Vanaf het Service Console

Via het onderstaande commando kun je opvragen hoeveel geheugen er voor het Service Console geconfigureerd is.

[root@esxserver root]# cat /etc/vmware/esx.conf | grep -i "memSize"
/boot/memSize = "272"

Als je dit wilt ophogen naar 800MB kun je dat doen via het commando:

vmware-vim-cmd hostsvc/memoryinfo 838860800 (http://communities.vmware.com/thread/173359)

Daarna even kijken of de settings is doorgevoerd.

[root@esxserver root]# cat /etc/vmware/esx.conf | grep -i "memSize"
/boot/memSize = "800"

 

Via de VI Toolkit:

$consoleMemMb = 800
Get-VMHost | Get-View | %{(Get-View -Id $_.ConfigManager.MemoryManager).ReconfigureServiceConsoleReservation($consoleMemMb*1mb)}
Thanks to LucD: http://communities.vmware.com/

De bovenstaande code past de setting aan op al je ESX servers in je VirtualCenter.

image

En in de VIC kun je zien dat de settings is aangepast en een herstart nodig is.

image

VMware: Set VMware TimeSync option with the VI Toolkit


Ik was vandaag even met Gabrie van Zanten (http://www.gabesvirtualworld.com/) aan het brainstormen over het aanpassen van de Time synchronization optie, binnen de VMware Tools via de VI Toolkit.

image

Dit is uiteindelijk gelukt (met een beetje hulp van Niket en LucD http://communities.vmware.com/message/1106816).

Je kunt het script op twee manieren gebruiken:

Het aan of uitzetten van deze optie op alle VM’s kan via het onderstaande script.

$vCenter = ”

Connect-VIServer $vCenter

[Reflection.Assembly]::LoadWithPartialName("vmware.vim")

$vmConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec
$vmConfigSpec.Tools = New-Object VMware.Vim.ToolsConfigInfo
$vmConfigSpec.Tools.SyncTimeWithHost = $True (or $False if you want to disable it)

Get-VM | % { (Get-View $_.ID).ReconfigVM($vmConfigSpec)} # For al VMs

Disconnect-VIServer -Confirm:$False

 

Wil je dit op een specifieke VM uitvoeren dan gebruik je de volgende Get-VM regel:

Get-VM -Name $vmname | % { (Get-View $_.ID).ReconfigVM($vmConfigSpec)} # VM with name vmname.

Je moet alleen dan wel de variable $vmname aanmaken.

Via het volgende commando kun je de actie controleren.

Get-VM | Get-View | %{Write-Host $_.Name $_.Config.Tools.syncTimeWithHost}

Script: Set-VMVideoAccLevel


Hugo Peeters van www.peetersonline.nl heeft een powershell script gemaakt voor het instellen van de video hardware acceleration level. Zoals je weet staat dit bij een standaard installatie van Windows Server 2003 (en ook andere versies) standaard op none.

image

Via het script van Hugo kun je in een keer deze setting aanpassen op alle VM’s (Windows 2003 servers en deze moeten wel aan staan). Zie de onderstaande quote van Hugo:

I have created a simple, fire-and-forget script that sets the Hardware Video Acceleration Level for all your (Windows Server 2003 and Powered On) VM’s to Full. This way you can always enjoy smooth mouse movements when working in the console!

Het script kun je hier downloaden: http://www.peetersonline.nl/index.php/vmware/setting-video-hardware-acceleration-level/

VI Toolkit: Set VMware Tools Upgrade Policy


 

Tijdens het googlen naar informatie over de VI Toolkit kwam ik het onderstaande script tegen.

Connect-VIServer <VirtualCenterServer>
#  NAME: set-VMautoUpdate.ps1
#  AUTHOR: angoletti1 / LucD
#  SOURCE:  http://communities.vmware.com/message/937094#937094

[Reflection.Assembly]::LoadWithPartialName("vmware.vim")

$vmConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec
$vmConfigSpec.Tools = New-Object VMware.Vim.ToolsConfigInfo
$vmConfigSpec.Tools.ToolsUpgradePolicy = "UpgradeAtPowerCycle"

Get-VM | % { (Get-View $_.ID).ReconfigVM($vmConfigSpec)}

 

Via dit script kun je in één keer alle VM’s aanpassen.

Bron: http://www.blkmtn.org/the-value-of-digging-through-an-SDK

VI Toolkit: Create an Overview Of All cmdlets


 

Het volgende commando genereerd een html file met daarina een overzicht van alle VI cmdlets.

Get-Command -PSSnapin VMware.VimAutomation.Core | ConvertTo-Html –Property CommandType,Name,Definition -title "VIToolkit" > D:\vitoolkit_cmdlets.html

Voer deze code wel  uit als een oneliner!

 

Het volgende overzicht wordt gegenereerd:

image

Nu heb je in een oogopslag een overzicht van alle cmdlets.