27
Scripting in VMware Umgebungen Effiziente Adminstration mit Powershell und Perl Sebastian Kayser & Daniel Reinold, ConSol* GmbH

Webcast - VMware Scripting

Embed Size (px)

DESCRIPTION

„Scripting in VMware-Umgebungen - praxisorientierte Vorstellung gängiger Lösungen".• Agenda:o Die Rolle der vSphere API (ESX, ESXi, vCenter)o Einblick in das Schaltwerk mit dem Managed Object Browsero Intuitives Orchestrieren mit VMware Powershell cmdlets aka PowerCLIo VMware Scripting auch für *nix-Plattformen, Perl SDK, vMA und vCLIo Performance-Kniffe beim Scripting (sowohl für Perl SDK als auch fürPowerCLI)

Citation preview

Page 1: Webcast - VMware Scripting

Scripting in VMware UmgebungenEffiziente Adminstration mit Powershell und Perl

Sebastian Kayser & Daniel Reinold, ConSol* GmbH

Page 2: Webcast - VMware Scripting

22.07.10 2 www.consol.de

• ConSol* - Wer sind wir?

• Klassische Administration vs. Scripting

• vSphere Web Services & SOAP

• Scripting mit Powershell: PowerCLI

• Scripting mit Perl: Perl SDK

• Performance-Überlegungen

Agenda

Page 3: Webcast - VMware Scripting

24.06.2010 www.consol.de

Page 4: Webcast - VMware Scripting

22.07.10 4 www.consol.de

Webcast SerieGet Virtual – Virtualisierung erfolgreich gestalten

http://www.flickr.com/photos/ppym1/93571524/

• Folge 1: Desktop Virtualisierung

• Folge 2: Infrastruktur-Virtualisierung: vSphere4, vCenter, ESX-Server u.a.

• Folge 3: Performance und Dimensionierung von virtuellen Umgebungen

• Folge 4: Scripting in VMware-Umgebungen on air

• Folge 5: Backup in Vmware-Umgebungen Ende August / Anfang September

Page 5: Webcast - VMware Scripting

22.07.10 5 www.consol.de

Disclaimer

Wir sind:IT Consultants und VMware Spezialisten ... keine Entwickler(auch wenn wir für harte Fälle genügend im Haus sitzen haben)

http://www.flickr.com/photos/ppym1/93571524/

Page 6: Webcast - VMware Scripting

22.07.10 6 www.consol.de

Klassische vSphere Administration

• Point & Click mit vSphere Client

• Verwaltet einzelne ESX Server oder via vCenter mehrere ESX Server

Page 7: Webcast - VMware Scripting

22.07.10 7 www.consol.de

Problem?

Page 8: Webcast - VMware Scripting

22.07.10 8 www.consol.de

Problem?

• Aufwand entspricht O(n)

• Konsistenz nicht gewährleistet

• Informationssuche mitunter schwer

Page 9: Webcast - VMware Scripting

22.07.10 9 www.consol.de

Alternativer Ansatz: Scripting

• Aufwand einmal pro Skript

• Konsistente Änderungen

• Kann gezielt Informationen auslesen(auch bei vielen VMs)

• Was ist Ihr größter Zeitfresser?→ Automatisieren!

Page 10: Webcast - VMware Scripting

22.07.10 10 www.consol.de

Scripting-Infrastruktur

• Nicht limitiert auf das Wrappen von Service-Konsolen-Kommandos

• ESX und vCenter exportieren SOAP-basierte Web-Services zur Instrumentierung

• Konsumenten:vSphere Client, vSphere CLI, PowerCLI, vSphere SDK for Perl, 3rd Party Hersteller, u.v.m.

SOAP

Page 11: Webcast - VMware Scripting

22.07.10 11 www.consol.de

SOAP?

Page 12: Webcast - VMware Scripting

22.07.10 12 www.consol.de

Scripting-Infrastruktur: SOAP

vSphere Client Login bei 6 ESX Hosts, ca. 150 VMs produziert ~ 650 KByte (!) SOAP Datenhttp://akutz.wordpress.com/2010/03/10/how-to-vsphere-client-to-vcenter-using-http/

Page 13: Webcast - VMware Scripting

22.07.10 13 www.consol.de

Scripting-Infrastruktur: Die Tools

SOAP ist der Unterbau, Tools und Frameworks abstrahieren

• vSphere CLI (ehemals RCLI):Kommandos zur Remote-Administration

• vSphere PowerCLI (ehemal VI Toolkit):Powershell Cmdlets für vSphere

• vSphere SDK for Perl:Perl Interface für Unix/Linux Plattformen

• vSphere Management Assistant (vMA, ehemals VIMA):Vorinstallierte Linux VM Appliance mit vSphere CLI und Perl SDK

http://www.vmware.com/support/pubs/sdk_pubs.html

Page 14: Webcast - VMware Scripting

22.07.10 14 www.consol.de

Nicht kompatibel mit VMware ServerESXi mit Lizenz → okESXi ohne Lizenz→ read-only

http://www.flickr.com/photos/adobemac/294078052/#/

Page 15: Webcast - VMware Scripting

22.07.10 15 www.consol.de

Tools: vSphere CLI

• Für Windows, Linux oder via vMA: esxcfg-*, vicfg-*

• Besonders wichtig für ESXi Deployments ohne Service Console

• Nur die Linux Version hat derzeit resxtop! (Stand vCLI 4.1)

• Kommandos:

esxcfg-* obsolet

Page 16: Webcast - VMware Scripting

22.07.10 16 www.consol.de

Tools: PowerCLI (1)

• vSphere cmdlets für PowerShell (W7 & W2008R2 haben PowerShell pre-installed)

• Gebaut speziell für Administratoren, nicht für Entwickler

• Paradigma intuitive Nutzung: <verb>-<aktion>, z.B. „get-vm“

• 237 cmdlets verfügbar (PowerCLI 4.1)

• Kommandos suchen: „get-vicommand | select-string <suchbegriff>“

• Hilfe eingebaut: „help <kommando>“, „help <kommando> -examples“

• Abstrahieren vSphere API → „nicht machbar“ gibt es nicht

Nicht nur VMware selbst bietet cmdlets, sondern auch 3rd Party Hersteller für ihre ProdukteLernenswert: Microsofts Common Engineering Criteria → PowerShell cmdlets für jedes Produkt

Page 17: Webcast - VMware Scripting

22.07.10 17 www.consol.de

Tools: PowerCLI (2)

• Anwendungsbeispiel: Auf der Suche nach dem Silent Datastore Killer … Snapshots

• Name, Description, PowerState … Sind das alle Attribute die zur Verfügung stehen?

• Vollständige Attributlist über get-member/select-object oder format-list

• Filterbar nach Kriterien: get-vm | get-snapshot | where { $_.Created -lt ((Get-Date).AddDays(-7)) }

Page 18: Webcast - VMware Scripting

22.07.10 18 www.consol.de

Tools: PowerCLI (3)

Weitere Beispiele:

• Changed Block Tracking (CBT) aktivieren, insofern Backup-SW das nicht machthttp://ict-freak.nl/2009/12/14/powercli-enable-changed-block-tracking/

• vCenter Rollen & Berechtigungen dokumentierenhttp://www.wekabyte.co.uk/2010/02/powercli-documenting-vcenter-permissions-part-1/

• Scripts en masse im VMware Powerpack (ehemal Virtu-Al Powerpack):http://www.virtu-al.net/featured-scripts/vmware-powerpack/

• ESX Deployment http://www.ivobeerens.nl/?p=509, u.v.v.v.m.

Links:

• http://vmware.com/go/powercli, http://blogs.vmware.com/vipowershell/

• http://www.virtu-al.net/, http://get-admin.com/blog/, http://www.peetersonline.nl/, http://www.lucd.info/

• Link zu cmdlets Poster und PowerCLI Intro:http://blog.consol.de/virtualisierung/2010/04/02/vmware-powercli-auch-fur-perl-sdk-ler/

Page 19: Webcast - VMware Scripting

22.07.10 19 www.consol.de

Tools: vSphere SDK for Perl (1)

• Perl Bindings/Module/Framework zum Arbeiten mit der vSphere API

• Weniger abstrahiert als PowerCLI, nahe an der API, daher weniger intuitiv/deklarativ

• Beispiel: Get-VM übersetzt in Perl

• Geeignet in Unix/Linux-zentrierte Umgebungen oder für Nagios-Checks

Page 20: Webcast - VMware Scripting

22.07.10 20 www.consol.de

Tools: vSphere SDK for Perl (2)

• Deployment anfänglich einfachst mit dem vMA

• Credentials cachen, zwei Varianten

• 30 Minuten: /usr/lib/vmware-vcli/apps/session/save_session.pl

• Dauerhaft: vifp addserver, vifpinit (Achtung: Sicherheitsanforderung bedenken

• Deployment anfänglich einfachst mit dem vMA

• Credentials cachen, zwei drei Varianten

• 30 Minuten: /usr/lib/vmware-vcli/apps/session/save_session.pl

• Dauerhaft: vifp addserver, vifpinit (Achtung: Sicherheitsanforderung bedenken

Neu mit vMA 4.1: AD Authentifizierunghttp://www.virtuallyghetto.com/2010/07/vma-41-active-directory-intergration.html

Page 21: Webcast - VMware Scripting

22.07.10 21 www.consol.de

Tools: vSphere SDK for Perl (3)

Anschauungsmaterial:

• Alle vicfg-Kommandos vom vSphere CLI bauen auf dem Perl SDK auf

• Beispiel-Skripte unter: /usr/share/doc/vmware-vcli/samples, /usr/lib/vmware-vcli/apps

Links:

• Programming Guide:http://www.vmware.com/support/developer/viperltoolkit/

• Community: Skripte:http://communities.vmware.com/community/developer/codecentral/vsphere_perl

Page 22: Webcast - VMware Scripting

22.07.10 22 www.consol.de

Problem #1: vSphere API

• Woher weiss man, welche Objekte, Methoden und Attribute zur Verfügung stehen?

• Programming Guides, PowerCLI → get-member, Perl → Data::Dumper

• Offizielle SDK Doku: http://www.vmware.com/support/developer/vc-sdk/ → API Reference

• Meist schneller: Der Managed Object Browser, verfügbar auf jedem ESX und vCenter Hosthttps://<hostname>/mob/

Page 23: Webcast - VMware Scripting

22.07.10 23 www.consol.de

Problem #2: Laufzeit der Skripte (1)

• Selbst vermeintlich simple Abfragen wie Get-VM „brauchen lange“

• Bei größeren Umgebungen Laufzeiten bis zu 30 Sekunden oder mehr

• Ursache: Ohne genauere Spezifizierung werden

a) ein Großteil der Attribute ausgelesen und aufbereitet

b) potentiell mehr Objekte abgerufen, als benötigt

• Beides sehr aufwendig (Client- & Server-seitig), beim Perl SDK z.B. Accessor Methoden Konstruktion

• Beispiel: get_vms.pl, ca. 150 VMs, Laufzeit 15 Sekunden, 4,5 MB (!) an SOAP Daten,

Page 24: Webcast - VMware Scripting

22.07.10 24 www.consol.de

Problem #2: Laufzeit der Skripte (2)

• Besser: vorher überlegen welche Daten benötigt werden!

• Perl SDK: find_entity_views() um „filter“ und „properties“ ergänzen

• PowerCLI: Anstatt Get-VM, Get-View mit -property verwenden

• Beispiel: get_vms.pl, ca. 150 VMs, Einsatz von „properties“

• Laufzeit um ca. 85% von 15 Sekunden auf 2 Sekunden reduziert

• SOAP Daten um ca. 98% von 4,5 MB auf 60 KByte reduziert

Achtung: Abwägen zwischen Pragmatismus/Zweck und Aufwand

Page 25: Webcast - VMware Scripting

22.07.10 25 www.consol.de

Problem #3: Webcast-Zeit limitiert ...

… deswegen nähern wir uns jetzt dem Ende. ;)

http://www.flickr.com/photos/carbonnyc/64581364/

Page 26: Webcast - VMware Scripting

22.07.10 26 www.consol.de

Fazit

• Scripting übernimmt server-übergreifend wiederkehrende Aufgaben

• Nicht alles muss geskriptet werden. Was frisst am meisten Zeit?

• Vielseitige Tools, Windows & Linux

• Eingewöhnungsphase notwendig, enorm viele Informationen online verfügbar

• Auch Unix-Admins können/sollten bei PowerCLI reinschnuppern

• Runterladen, ausprobieren!

Page 27: Webcast - VMware Scripting

22.07.10 27 www.consol.de

FRAGEN

Besuchen Sie uns online:

blog.consol.de/virtualisierung/www.consol.de/virtualisierung/

Oder kontaktieren Sie uns:

[email protected]+49-89-45841-100

ConSol* Consulting & Solutions Software GmbHFranziskanerstr. 38D-81669 München