Beim Bereitstellen einiger VMware Appliances unter vSphere 6.5 hatte ich kürzlich verstärkte Probleme. Unabhängig vom verwendeten Frontend (Host Client, HTML 5 Client, Web Client, C# Client) konnte keine Vorlage sauber provisioniert werden – häufige Abbrüche und “allgemeine Systemfehler” waren das Resultat.
Mark Brookfield gab mir den Tipp, anstatt einer grafischen Oberfläche OVF Tool zu verwenden. Die Konsolenanwendung dient zum Im-/Export von OVA/OVF-Vorlagen zwischen diversen VMware-Produkten und ist für Microsoft Windows, Linux und App macOS erhältlich. Das Tool kann kostenfrei heruntergeladen werden.
Der Funktionsaufruf ist prinzipiell:
$ ovftool [parameter] quelle ziel
Einige wichtige (teilweise optionale) Parameter sind:
Parameter | Funktion |
-n / –name | Name der Ziel-VM |
-vf / –vmFolder | Order, in welchen die VM beheimatet werden soll |
–acceptAllEulas | EULA automatisch akzeptieren |
-ds / –datastore | Zu verwendender Datastore |
-dm / –diskMode | Disk Provisioning-Mode (bei vSphere: thin, thick oder eagerZeroedThick) |
–net:NIC-Name:Portgroup | Konfiguration einer Netzwerkzuordnung (Portgroup wird an NIC-Name angebunden) |
–ipProtocol | Verwendetes IP-Protokoll: IPv4, IPv6 |
–prop | Zuweisung eines OVA-/OVF-Parameters (z.B. Root-Passwort) |
–deploymentOption | Auswählen einer vApp-Konfiguration (sofern von Vorlage unterstützt) |
–powerOn | Anschalten der VM nach Provisionierung |
Das Target muss einem bestimmten Format folgen, das sich mir nicht unbedingt direkt erschlossen hat. Einige Beispiele für vSphere:
Locator | Beschreibung |
vi://myvcenter/mydatacenter/host/mycluster | Beliebiger Hosts eines konkreten Datacenters und Clusters |
vi://admin:admin@myvcenter/mydatacenter/host/mycluster | wie oben, jedoch mit vorgegebenen Login-Informationen |
vi://myvcenter/mydatacenter/vm/myfolder/myvm | Angabe eines konkreten Datacenters, VM-Ordner und VM-Namen |
vi://myvcenter/mydatacenter/host/myesx | Angabes eines konkreten ESXi-Hosts eines Datacenters |
vi://myvcenter/mydatacenter/host/myesx/Resources/myresource | wie oben, jedoch mit konkretem Ressourcenpool |
Weitere Beispiele finden sich in der Online-Hilfe des Tools:
$ ovftool -h | less $ ovftool -h locators | less $ ovftool -h examples | less
Die OVA-/OVF-Quelle muss sich übrigens nicht auf der lokalen Festplatte befinden, es kann auch über einen Webserver (http://pfad, https://pfad) oder FTP-Server (ftp://pfad) bezogen werden.
Bevor eine Vorlage bereitgestellt wird, empfiehlt es sich, einen Blick in die verfügbaren Optionen zu werfen. Hier werden unter anderem benötigte Netzwerk-Schnittstellen aufgelistet:
$ ovftool --hideEula VMware-vSAN-Witness-201704001-5310538.ova ... Networks: Name: Management Network Description: Management Network will be used to drive witness vm traffic Name: Witness Network Description: Witness Network will be used to drive witness vm traffic
In diesem Fall müssen gültige Zuordnungen für Management Network und Witness Network zugewiesen werden. Anschließend sollte man sich die verfügbaren Eigenschaften ansehen:
... Properties: ClassId: vsan Key: witness.root.passwd Label: Root password Type: password(7..) Description: Set password for root account. ...
Manche werden zwingend benötigt, wie in diesem Fall für das Root-Password, manche sind optional. Manche OVA-/OVF-Vorlagen bieten Deployment-Optionen bzw. “T-Shirt-Größen” an:
Deployment Options: Id: tiny Label: Tiny (10 VMs or fewer) Description: Configuration for Tiny vSAN Deployments with 10 VMs or fewer * 2 vCPUs * 8GB vRAM * 1x 12GB ESXi Boot Disk * 1x 15GB Magnetic Disk * 1x 10GB Solid-State Disk * Maximum of 750 Components Id: normal (default) Label: Medium (up to 500 VMs) Description: Configuration for Medium vSAN Deployments of up to 500 VMs * 2 vCPUs * 16GB vRAM * 1x 12GB ESXi Boot Disk * 1x 350GB Magnetic Disk * 1x 10GB Solid-State Disk * Maximum of 22K Components Id: large Label: Large (more than 500 VMs) Description: Configuration for Large vSAN Deployments of more than 500 VMs * 2 vCPUs * 32GB vRAM * 1x 12GB ESXi Boot Disk * 3x 350GB Magnetic Disks * 1x 10GB Solid-State Disk * Maximum of 45K Components
Hier gibt es drei fertige Größen, die Anforderungen und Einsatzgebiete werden entsprechend dargestellt.
Der vollständige Aufruf sieht dann beispielsweise wie folgt aus:
$ ovftool --acceptAllEulas -ds=NFS-Backup --net:"Management Network"="DPortGroup-MGMT" --net:"Witness Network"="DPortGroup-VSAN" --prop:witness.root.passwd=... --deploymentOption=tiny VMware-vSAN-Witness-201704001-5310538.ova vi://st-vcsa03.stankowic.loc/Stankowic/host/Darmstadt/ Opening OVA source: VMware-vSAN-Witness-201704001-5310538.ova The manifest validates Source is signed and the certificate validates Enter login information for target vi://st-vcsa03.stankowic.loc/ Username: administrator@vsphere.local Password: ... Opening VI target: vi://administrator%40vsphere.local@st-vcsa03.stankowic.loc:443/Stankowic/host/Darmstadt/ Deploying to VI: vi://administrator%40vsphere.local@st-vcsa03.stankowic.loc:443/Stankowic/host/Darmstadt/ Transfer Completed

Erhält man Warnung wie beispielsweise:
Warning: - OVF property with key: 'witness.root.passwd' does not exists.
Ist es ratsam, einen Blick in den Reiter vApp-Optionen in der VM-Konfiguration zu werfen. Hier fehlt ein benötigter Wert, der vor dem Einschalten der Appliance ergänzt werden sollte.
Mithilfe des Tools war ich schlussendlich in der Lage, weitere vApps in meinem Homelab bereitzustellen – schade, dass dies jedoch nicht über die zahlreichen Frontends möglich ist. Ich weiß nicht, ob die Ursache in meinem Homelab begraben liegt, oder ob es ein generelles Problem (Bug?) ist. Hier muss ich mal näher investigieren…
Endlich mal ein Beitrag, mit dem man auf Anhieb etwas anfangen kann. Sehr cool…
Als Tipp: In der Parameter Auflistung wird das doppelte Minus/dash “–” nicht ganz korrekt dargestellt, sodass es nicht per Copy/Paste genutzt werden kann.
Hey Kim!
Vielen lieben Dank für das Feedback – freut mich, dass dir der Artikel geholfen hat.
Das Dash-Problem ist mir leider schon bekannt, das scheint an der verwendeten Schriftart in Verbindung mit dem Theme zusammenzuhängen. Da habe ich aktuell leider keine Lösung für.. 🙁
Beste Grüße,
Christian.