VM provisionieren (veraltet)#
Veraltet
In diesem Artikel beleuchten wir den Anwendungsfall, virtuelle Maschinen (VM) über i-doit zu provisionieren. Dazu machen wir uns eine gepflegte IT-Dokumentation zunutze, gepaart mit wenigen Scripts, um diesen Automatismus Wirklichkeit werden zu lassen.
Problemstellung#
Bisher wird strikt zwischen Dokumentations- und Konfigurationsdaten unterschieden: In i-doit wird die organisationsweite IT dokumentiert inklusive einem Virtualisierungs-Cluster, bestehend aus mehreren Virtualisierungs-Hosts (Wirtsysteme) und den darauf laufenden virtuellen Maschinen (Gastsysteme). Die Konfiguration jeder VM, also das Anlegen einer neuen VM mit bestimmten Angaben zu CPU, Arbeitsspeicher, Netzwerk, Plattenplatz usw., erfolgt innerhalb der Administrationsoberfläche des Clusters. Diesen Vorgang nennt man auch Provisionierung.
Im Alltag sieht der Prozess daher so aus, dass über ein dediziertes Tool eine neue VM angelegt wird und die erledigte Arbeit nachträglich in i-doit dokumentiert wird:
- Starten des Konfigurations-Tools des Virtualisierungs-Clusters
- Anlegen und Konfiguration einer neuen VM
- Wechsel in die IT-Dokumentation (i-doit)
- Anlegen einer neuen VM, Konfiguration in den entsprechenden Kategorien ablegen, VM dem Cluster zuordnen
Ein Datenaustausch zwischen dem genutzten Tool und i-doit findet nicht statt, sodass die VM-Konfiguration zweimal erledigt werden muss. Fehler beim Übertragen der Konfiguration sind hierbei nicht ausgeschlossen. Die redundante Pflege von Konfigurationsdaten ist also eine denkbar undankbare Aufgabe für den Admin.
Dieser Artikel ist veraltet und nicht mehr aktuell
Bitte beachten Sie, dass das hier dargestellte vorgehen bereits veraltet sein kann.
Lösung#
Wir möchten diesen Prozess optimieren, indem wir die in i-doit vorhandenen Konfigurationsdaten nutzen und einige Schritte automatisieren. Dazu stellen wir den Prozess um:
- Öffnen der IT-Dokumentation (i-doit)
- Anlegen einer neuen VM, Konfiguration in den entsprechenden Kategorien ablegen, VM dem Cluster zuordnen
- Die VM wird automatisch im Konfiguration-Tools des Virtualisierungs-Clusters erstellt und provisioniert.
Aus 4 manuellen Schritten werden 2. Der dritte Schritt geschieht automatisiert im Hintergrund. Für den Admin entfällt die doppelte Pflege der Konfigurationsdaten. Fehlerquellen werden eliminiert. Der Admin ist zufrieden.
Annahmen#
Diesen Anwendungsfall spielen wir einmal komplett an einem Beispiel durch. Es soll das prinzipielle Vorgehen darstellen und lässt sich problemlos auf andere Umgebungen übertragen. Für den Lösungsweg nehmen wir an:
- Der Virtualisierungs-Cluster basiert auf VMware vSphere in Version 5.
- i-doit ist auf Debian GNU/Linux 8.5 installiert. Hierzu bedienen wir uns der der Eval Appliance. Die Distributionspakete sollten mit apt auf den neusten Stand gebracht werden.
- Die Version von i-doit beträgt mindestens Version 1.7.1. Der i-doit Host ist über den FQDN i-doit.example.net erreichbar.
- Zum Kontrollieren der Automatisierung nutzen wir den VMware vSphere Client.
- Es existiert ein User in VMware vSphere, der VMs provisionieren darf. Dieser User heißt in diesem Beispiel vmprovision mit dem Passwort vmprovision.
Konfiguration#
Beginnen wir zunächst mit den Vorarbeiten, damit beide Systeme überhaupt miteinander kommunizieren können.
vSphere SDK#
Damit i-doit dem vSphere-Cluster mitteilen kann, eine neue VM zu privisionieren, benötigen wir auf dem Host von i-doit das VMware SDK for Perl. Wir laden die Version 6.0.2 herunter. Dazu ist ein Account bei VMware nötig und die VMware End User License Agreement (EULA) muss akzeptiert werden. Wir entscheiden uns für das Download-Paket für 64bit-Betriebsysteme als Tarball (.tar.gz).
Nach dem Herunterladen kopieren wir den Tarball auf den Host von i-doit und entpacken ihn. Da wir für fast alle folgenden Befehle Root-Rechte benötigen, melden wir uns als Root an:
1 2 3 4 5 6 |
|
Spätestens jetzt ist ein guter Zeitpunkt, das System auf den neusten Stand zu bringen. Zudem installieren wir zusätzliche Pakete über apt und cpan:
1 2 3 |
|
Da das SDK das Betriebssystem Debian GNU/Linux offiziell nicht unterstützt, müssen wir dem SDK ein anderes Betriebssystem vorgaukeln:
1 |
|
Das SDK benötigt die Umgebungsvariablen http_proxy und ftp_proxy:
1 2 |
|
Nun installieren wir das SDK. Dieses bringt ein Installations-Script mit:
1 |
|
Das Script möchte nochmals die EULA von VMware mit yes bestätigt bekommen. Falls es zusätzliche Perl-Module installieren möchte, sollte dies mit yes bestätigt werden. Wenn die Installation erfolgreich war, erscheint unter anderem folgender Text:
1 |
|
An dieser Stelle sind wir mit der Installation des SDKs durch. Wir haben uns freundlicherweise an dieser Anleitung orientiert. Vielen Dank! Und nun geht es weiter:
i-doit API#
Die Kommunikation zwischen i-doit und VMware findet unter anderem über die API von i-doit statt. Diese muss aktiviert und der API Key bekannt sein. Um die API komfortabel zu nutzen, verwenden wir den Referenz-Client für PHP:
1 2 3 4 |
|
Der API-Client fragt bei make initialize die URL und den API Key der zu verwendenen i-doit-Installation ab.
Script#
Das Bindeglied zwischen i-doit und VMware stellt folgendes Script dar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 |
|
Dieses kopieren wir in die Datei /usr/local/bin/i-doit_provision.php. Damit der Apache Webserver das Script ausführen kann, vergeben wir noch die entsprechenden Rechte:
1 |
|
In diesem Script befindet sich die Konfiguration, um sowohl auf i-doit, als auch VMware zugreifen zu können. Diese müssen entsprechend angepasst werden:
- $vSphereUsername: Benutzer für vSphere (siehe oben)
- $vSpherePassword: Password für vSphere (siehe oben)
- $vSphereWebService: URL zum Web Service von vSphere
- $objCMDBStatus: ID des CMDB-Status to be provisioned (siehe unten)
- $objCMDBStatus_ready: ID des CMDB-Status provisioned (siehe unten)
- $api_entry_point: URL zur API von i-doit
- $api_key: Key für die i-doit API
CMDB Status ergänzen#
Die beiden CMDB-Status-Angaben to be provisioned und provisioned existieren in der Standard-Installation von i-doit noch nicht, sind aber für den Automatismus entscheidend. Diese müssen wie im verlinkten Artikel beschrieben ergänzt werden.
Event konfigurieren#
Nun müssen wir in i-doit noch konfigurieren, dass bei bestimmten Änderungen des Script aufgerufen wird. Dazu verwenden wir die Event-Steuerung und legen dort einen neuen Hook an:
- Event: Category: (arbitrary sources) Speichern
- Description: VM provisioning
- Type: SHELL COMMAND
- Command: /usr/local/bin/i-doit_provision.php
- Additional parameters: leer lassen
- Mode: Executive live
An dieser Stelle ist die Konfiguration abgeschlossen und der Automatismus "scharf gestellt".
Handhabung#
Schauen wir uns nach der ausgiebigen, zum Glück einmaligen Konfiguration an, wie der Automatismus funktioniert.
Virtuelle Umgebung in i-doit dokumentieren#
Es existiert bereits ein vSphere Cluster (Objekttyp Cluster) mit einigen ESX-Hosts (Objekttyp Virtueller Host). Der Objekt-Titel des Clusters entspricht dem des Datencenters in vSphere. Die Objekt-Titel der ESX-Hosts sind die Hostnamen, die auch in vSphere angezeigt werden.
Pro ESX-Host werden virtuelle Switche mit VLAN IDs konfiguriert (Kategorie Virtuelle Switche).
Die ESX-Hosts sind an ein zentrales Storage gebunden. Darüber werden die VMs mit Plattenplatz versorgt (Kategorie Logische Geräte (Client)).
Auf Storage-Seite sieht es dementsprechend aus. Die Kategorie Logische Geräte (LDEV Server) enthält die Zuordnung von LUNs zu ESX-Hosts.
Neue VM erstellen#
Der vSphere Cluster und das Storage sind nun laut IT-Dokumentation bereit. Es ist Zeit, VMs zu dokumentieren - und automatisch zu provisionieren.
Zuerst legt man eine neue VM an (Objekttyp Virtueller Server) und setzt diese auf den CMDB-Status geplant (noch existiert sie ja nicht).
Danach wir die gewünschte Systemkonfiguration dokumentiert. In der Kategorie CPU wird die Anzahl der geforderten CPU-Kerne dokumentiert. Für jeden Kern wird ein Eintrag erzeugt.
In der Kategorie Speicher wird der benötigte RAM dokumentiert. Anzahl von Speicherriegeln und gewählte Größeneinheiten sind nicht wichtig. Stattdessen wird die Gesamtkapazität zusammengezählt.
In der Kategorie Netzwerk → Port wird die Bezeichnung des ersten Eintrags genutzt, um einen virtuellen Port für die VM zu konfigurieren.
Der benötigte Plattenplatz wird in der Kategorie Lokaler Massenspeicher → Gerät angegeben.
In welchem Cluster und auf welchem ESX-Host die VM laufen soll, wird in der Kategorie Virtuelle Maschine dokumentiert.
Die Zuordnung von Storage und Netzwerk wird in der Kategorie Virtuelle Maschine → Virtuelle Geräte hinterlegt. Der Screenshot zeigt, welche Attribute ausgefüllt werden sollten.
Damit ist die Konfiguration der VM ausreichend dokumentiert.
Template
Um schneller virtuelle Maschinen zu dokumentieren und somit auch zu provisionieren, eignet sich ein Template. Für jede vorkonfektionierte VM wird ein Template erstellt und daraus neue Objekte erstellt.
VM automatisch privisionieren#
Nun kommen wir zum finalen Schritt: das Provisionieren. Viel müssen wir nun nicht mehr tun. In der Kategorie Allgemein wird der CMDB-Status auf to be provisioned gesetzt. Wird die Änderung gespeichert, fängt das oben beschriebene Script an, die Konfigurationsdaten aus i-doit auszulesen und an vSphere weiterzugeben. Dadurch könnte das Speichern etwas länger dauern, weil auf das Ergebnis gewartet wird.
Ist die Provisionierung erfolgreich durchgelaufen, ändert sich der CMDB-Status automatisch auf provisioned. Die VM wurde erstellt und läuft. Fertig!
Die Kommunikation zwischen i-doit und vSphere wird unter Verwaltung → Add-ons → Events → Historie (Log) angezeigt.