VMUG Meeting 8 april 2010 The Virtualization Ecoshell Initiative Alan Renouf Arne Fokkema Arnim van Lieshout Marcel van Os Viktor van den Berg
Welkom & Agenda • Welkom bij deze VMUG Meeting! • Agenda – 16:00-16:20 Welkom bij deze VMUG Meeting Wat is de bedoeling A word from our sponsors… – 16:20-17:30 Introductie tot het beheer van vSphere 4 met Powershell en VMware PowerCLI + Labs – 17:30-18:00 Introductie tot The VESI – 18:00-18:45 Pizza! – 18:45-19:15 Vervolg The VESI – 19:15-20:30 The VESI Powerpacks & Powershell Toepassingen
Welkom & Agenda • Dank gaat uit naar – Vizioncore & XTG voor het supporten van deze meeting • XTG voor de faciliteiten • Vizioncore voor de pizza’s & drank! – Diegenen die achter de schermen hebben meegewerkt:
• • • •
Alan Renouf Arne Fokkema Arnim van Lieshout Marcel van Os
De sponsoren • XTG • Vizioncore
Introductie Powershell / PowerCLI Arnim van Lieshout Viktor van den Berg
Wat is Powershell? • • • •
Powershell is een krachtige command prompt / shell die een reeks commandlets beschikbaar maakt Is enigszins te vergelijken met wat de BASH shell is op Linux Powershell zit standaard in Windows 7 ☺ Kan geïnstalleerd op Windows OS-en die het standaard niet hebben (XP, W2K3)
It’s all about objects •
PowerShell is object georiënteerd
•
Dus alles is een object ook al is dit niet altijd zichtbaar
•
Een object heeft eigenschappen (properties) PS>“VMUG Meeting”.length 12
•
en functies (methods) PS>“VMUG Meeting”.toupper() VMUG MEETING
Gestructureerde commando’s (Cmdlets) •
Naast de ondersteuning voor traditionele Windows executables, introduceert PowerShell een nieuw type commando met de naam command-let.
•
Get-Command geeft een overzicht van de beschikbare cmdlets
•
Get-Member (gm) geeft een overzicht van de beschikbare methods en properties PS>“VMUG Meeting” | gm
•
Get-Help geeft hulp bij het gebruik van cmdlets PS>Help Get-Member PS>Help Get-Member –detailed PS>Help Get-Member –examples
Variabelen & Arrays • •
Variabelen beginnen altijd met $ Een variabele kan 1 of meerdere objecten (collection) bevatten PS>$var = 1 PS>$var.gettype() IsPublic IsSerial Name BaseType -------- -------- ---- -------True True Int32 System.ValueType
•
Meest voorkomende collection is het array PS>$var = 1,2,3 PS>$var.gettype() IsPublic IsSerial Name BaseType -------- -------- ----------True True Object[] System.Array
•
Een element in een array wordt geadresseerd door zijn index nummer PS>$var[1] 2
Pipeline • •
Met het pipe (“|”) commando kunnen commando’s doorgesluisd worden, net zoals met BASH ☺ en de oude command prompt Inpricipe dus niks nieuws PS>Dir | More
• • •
Maar…….de PowerShell pipeline is object georiënteerd Er wordt geen tekst geconverteerd maar objecten worden doorgegeven Waarom zien we dan wel tekst? PS>Dir | Out-Default
•
Op de pipeline worden arrays uit elkaar gehaald en als losse objecten doorgegeven De speciale variabele $_ bevat het actuele pipeline object PS>Dir c:\ | where { $_.length -gt 2048 }
•
Condities en Loops •
Veel voorkomende operators: -eq, -ne -gt, -lt, -contains, -match
•
Structuren: – Where-Object (?) Where { $_.Name -eq “server01” } – If-Else If ($var –lt 4) { Write-Host “Kleiner dan 4” } Else { Write-Host “4 of meer” }
•
ForEach-Object (%) evalueerd elk object afzonderlijk
•
PS>Dir c:\ | ForEach-Object { $_.Name.ToUpper() }
• •
PS>Dir c:\ | % {$_.FullName} PS>ForEach ($item in Dir c:\) { $item.FullName }
PowerShell Cheat Sheet
Meer PowerShell? • http://powershell.com/cs/blogs/ebook/
Wat is PowerCLI? • • •
Is een snapin in PowerShell met 229 cmdlets (sinds 4.0 U1) voor het beheren van een VMware infrastructuur Gebruik Get-VICommand voor een overzicht van de beschikbare cmdlets Met PowerCLI is alles mogelijk, dat met de VI Client mogelijk is, en meer
•
PowerCLI kan gebruikt worden voor zowel het opvragen van gegevens (get) als het wijzigen van gegevens (set) – Get-VM – Set-VM
•
Maar ook voor het aanmaken en verwijderen van objecten – New-VM – Remove-VM
VMware vSphere PowerCLI
Hoe VMware PowerCLI installeren? •
Installeer .NET framwork 3.5 SP 1 (is nodig voor de out-gridview cmdlet)
•
Installeer PowerShell (onderdeel van Windows 7 / w2k8 R2 of gratis te downloaden vanaf de Microsoft website voor XP, Vista, w2k3, wk28)
•
Installeer VMware PowerCLI 4.0 U 1
•
Set-ExecutionPolicy RemoteSigned
PowerShell en PowerCLI command-lets • Het is net de vSphere Client! • Acties in de GUI hebben een equivalent in PowerCLI • Hoe werkt het? – GUI buttons en menu’s vSphere API – PowerCLI command-lets vSphere API • Net zoals in de vSphere Client moet je: – Aanmelden op ESX of vCenter Server – Objecten selecteren waar je iets mee wilt doen – Acties selecteren die je wilt uitvoeren
vSphere Client (GUI) versus PowerCLI • Voorbeeld in de GUI: – Aanmelden op vCenter Server – Een VM selecteren – Op Edit settings klikken • PowerCLI script: Connect-VIServer -Server esx1.xtg.local –User root -Password vmware Get-VM | Where {$_.name –eq “Server1”}
Uitvoer van Get-VM • Voorbeeld van de uitvoer van Get-VM: – Verbinding maken met vCenter Server (port 443) – Uitvoer van Get-VM Name vcenterteam1.xtg.local PowerState Description Notes Guest NumCpu MemoryMB HardDisks NetworkAdapters CDDrives FloppyDrives Host HostId VMHostId FolderId ResourcePoolId DatastoreIdList Id Name
: : : : : : : : : : : : : : : : : :
Port User 443 admin11 PoweredOn VMUG PowerShell Workshop Dummy VM Dit is een dummy VM VMware.VimAutomation.Client20.VMGuestImpl 1 512 {Hard disk 1} {Network adapter 1} {CD/DVD Drive 1} {Floppy drive 1} esx1.xtg.local HostSystem-host-8 HostSystem-host-8 Folder-group-v349 ResourcePool-resgroup-24 {Datastore-datastore-1201} VirtualMachine-vm-120 dummyVM
De pijplijn in actie • Alleen maar Get-VM is beperkt; ik wil juist de apparaten in een VM zien (CD, Virtual Disk)! • Oplossing: Gebruik de pijplijn om binnen een Get-VM statement de gewenste apparaten weer te geven. • Voorbeeld: Connect-VIServer -Server esx1.xtg.local –User root -Password vmware Get-VM | Get-HardDisk
Uitvoer voor apparaat binnen VM • Voorbeeld van de uitvoer van Get-VM: – Verbinding maken met vCenter Server (port 443) – Uitvoer van Get-HardDisk binnen Get-VM Name Port vcenterteam1.xtg.local 443 StorageFormat Persistence DiskType Filename CapacityKB ParentId ConnectionState Id Name
: : : : : : : : :
User admin11
Thick Persistent Flat [VMFS_4_ALL] dummy-VM/dummy-VM.vmdk 6291456 VirtualMachine-vm-120 VirtualMachine-vm-120/2000 Hard disk 1
Connectie maken met vSphere •
Connect-VIServer – Sinds U1 de mogelijkheid om met meerdere servers verbonden te zijn – Cmdlets worden dan op alle verbonden servers uitgevoerd (indien er geen specifieke server wordt opgegeven) – Connectie naar zowel vCenter Server als ESX server mogelijk
•
$global:defaultVIServers variabele geeft een overzicht van de connecties
Toepassingen van VMware PowerCLI •
Overzicht van VMs PS>Get-VM PS>Get-VM server01
•
Overzicht van ESX Hosts PS>Get-VMHost PS>Get-VMHost esx01
•
Overzicht van Clusters PS>Get-Cluster PS>Get-Cluster cluster01
•
Overzicht van PortGroups PS>Get-VirtualPortGroup
Toepassingen van VMware PowerCLI •
Overzicht van alle snapshots PS>Get-VM | Get-Snapshot
•
Overzicht van snapshots ouder dan 14 dagen PS>Get-VM | Get-Snaphot | Where {$_.Created -lt ((Get-Date).AddDays(-14))}
•
Verwijderen van alle snapshots PS>Get-VM | Get-Snapshot | Remove-Snapshot
Vesi Script Editor • • •
Een script kun je natuurlijk in Notepad maken, maar… VESI Script Editor biedt een grafische tool voor het ontwikkelen van PowerShell scripts Onderdeel van The VESI en dus gratis ☺
Get-VMDiskUsage
LAB1 – Werken met de PowerCLI • • • • • • •
VESI Script Editor Set-ExecutionPolicy Connect-VIServer / Disconnect-VIServer Get-VM Pipeline ( | ) Variabelen Loops
Introductie The Virtualization Ecoshell Iniative
Arnim van Lieshout Viktor van den Berg
The Virtualization Ecoshell • Het doel van The Virtualization Ecoshell is om een freeware desktop applicatie te bieden die voor zowel beginners als ervaren beheerders een raamwerk biedt om Powershell scripts te gebruiken in de IT infrastructuur.
The Virtualization Ecoshell • Met The VESI kun je: Verzamel informatie uit verschillende bronnen
Filter zodat je alleen krijgt te zien wat je wilt
Verander jou omgeving om alles te krijgen zoals het hoort
Maak een verslag van de verkregen gegevens
Integreer en breid de mogelijkheden uit
The VESI - Console
The VESI – Wat kun je ermee? • Task Automation Door taken die vaak voorkomen te automatiseren in een script, kun je de hoeveelheid beheerdersfouten reduceren. • Bijvoorbeeld: – Rescan HBA – Aanmaken portgroup op meerdere vSwitches – VM Configuratie aanpassen
The VESI – Wat kun je ermee? • Administrative Reports Voorziet in aanpasbare reports in HTML, XML en CSV formaat.
The VESI – Wat kun je ermee? • Powershell Script Assistance Sneller zelf PS scripts schrijven door gebruik te maken van de beschikbare tools binnen The VESI voor script ontwikkeling.
The VESI – Wat kun je ermee? • Charts Je kunt grafieken op maat maken m.b.v. de “chart functionaliteit”.
The VESI – Wat kun je ermee? • Filters / Best Practice Filters Met behulp van filters op zoek gaan naar bepaalde objecten binnen de vSphere 4 infrastructuur
Custom Scripts • Een PowerShell script kan gewoon gekopieerd worden in een script node • NewScript Node
Best Practice Queries
LAB 2: Werken met de Virtualization Ecoshell • • • •
Servers toevoegen aan de VESI Commando’s uitvoeren binnen VESI Report maken Node / Script Node
Extend the functionality of The Vesi: Powerpacks Alan Renouf Arne Fokkema
Agenda • • • • • • • • •
Short Introduction Create your own Powerpack Demo 1: Create Script Nodes and Actions VMware Community Powerpack Demo 2: More advanced scripts and Ideas Software we use Websites for more PowerCLI info Twitter Labs
Introduction
Alan / Arne
Home Lab
Create your first PowerPack • Create a Script Node • Check if you’re connected to a vCenter server or not
• How to use the $input | ForEach-object loop:
Demo 1: Create Script Nodes and Actions • List VMs where WakeOnLan is disabled – Script action to enable WakeOnLan • List ESXi Hosts – Script action: Backup the systemconfig
VMware Community Powerpack
Arnim “Rainbow Shirt”van Lieshout Eric “Superstar” Sloof
Arne “ICTFreak” Fokkema Luc “T2” Dekens
Alan "Not French" Renouf
You !
• Goodbye Virtu-Al – Hello Community • Import the VMware Communities Powerpack • Demo
More advanced scripts and Ideas Restricted Application: • PowerGUI LockDown mode • Specific tasks Demo: • Host NTP Settings • Host Over Commit • DRS rules script + Export to XML • Move Template Script
Software • • • • •
Virtualization EcoShell™ PowerGUI PrimalForms PowerWF Studio PowerShell Plus Professional Edition
Websites about PowerCLI • • • • • • • • •
http://thevesi.org/ http://blogs.vmware.com/vipowershell http://lucd.info/ http://virtu-al.net/ http://get-admin.com/blog/ http://www.peetersonline.nl/ http://halr9000.com/ http://www.van-lieshout.com/ http://ict-freak.nl
Twitter aliasses @theVESI • • • • • • • • • •
Carter Shanklin Alan Renouf Hal Rottenberg Luc Dekens Dmitry Sotnikov Hugo Peeters Arne Fokkema Eric Sloof Scott Herold Arnim van Lieshout
@cshanklin @alanrenouf @halr9000 @LucD22 @Dsotnikov @hugopeeters @afokkema @esloof @vmguru @avlieshout
VESI Custom Scripts and Powerpacks • Download and install the Virtu-Al Powerpack • Test the powerpack • Have FuN! Dont forget to share your scripts !