So testen Sie das VM-Bereitstellungsskript ohne Bereitstellung

10

Derzeit bin ich in einem Zustand, in dem das Testen mich Geld und viel Zeit kostet ...

Hintergrund: Ich stelle VMs auf Softlayer bereit und verwende ein Post-Deployment-Skript (Bash), mit dem jede Software installiert wird, die ich benötige, nachdem die VM bereit ist. Das Problem ist, dass ich dieses Skript nur testen kann, indem ich eine VM bereitstelle. Derzeit dauert es ungefähr 4 Stunden, bis das Skript fertig ist. Bei jeder Änderung, die ich vornehme, muss ich eine neue VM erstellen (kostet Geld) und warten 4 Stunden, um zu sehen, ob das Skript kaputt ist oder nicht ... Das wird chaotisch und ich kann nicht weitermachen, wenn ich so bleibe.

Ich brauche einen neuen Weg, um diese Art von Situation anzugehen und das Bereitstellungsskript schneller testen zu können, ohne jedes Mal eine neue VM bereitstellen zu müssen.

Kennt ihr ein Tool, das mir in diesem Szenario hilft?

Lucas Mattos
quelle
4
Ist es nicht möglich, Ihr Bereitstellungsskript (Bash) auf einer lokalen Entwicklungs-VM zu testen, indem Sie es lokal ausführen?
Rekovni
3
Dies ist ein Ort, an dem eine private Cloud leuchten würde. Der Kauf und die Einrichtung eines Geräts kosten möglicherweise weniger als das, was Sie derzeit tun. Führen Sie die Zahlen aus. Sehen Sie, was für Sie Sinn macht.
Küken

Antworten:

10

Ich kann einige Optionen sehen:

  • Verwenden Sie Vagrant, um Ihre VMs zu erstellen. Es trennt den Prozess der Erstellung der VM (einschließlich des Basisbetriebssystems) von der eigentlichen Bereitstellung. Es gibt auch einige Optionen, um bestimmte Bereitstellungsschritte nur unter bestimmten Umständen auszuführen.
  • Verwenden Sie Ansible, Puppet oder ähnliches, um in einen Bereitstellungsmodus zu wechseln, in dem Sie nicht jedes Mal das Gleiche tun, sondern nur das, was benötigt wird. Dies bedeutet, dass Sie den Job starten und beim ersten fehlgeschlagenen Teil stoppen können. Repariere diesen Teil und fahre dann fort.
  • Verwenden Sie Docker. Dies unterscheidet sich geringfügig vom Vagrant / Ansible-Ansatz darin, dass Container erstellt werden (die Sie, soweit ich das beurteilen kann, nicht wirklich benötigen). Über den Ansible-Ansatz hinaus hat es den Vorteil, dass Sie einen sehr fein abgestimmten schrittweisen Entwicklungsprozess erhalten. Das heißt, wenn ein Schritt fehlschlägt, haben Sie immer noch alle Bilder, die dazu führen, und so werden Sie während der Entwicklung mit ein wenig Disziplin sehr, sehr schnell.

Alle diese Tools leisten viel mehr als Sie benötigen, aber alle bieten Ihnen die Möglichkeit, Ihre Arbeit schrittweise zu erledigen. Vagrant, Ansible und Docker sind für mich ziemlich einfach zu erlernen (solange Sie sich im Dev / Test-Modus befinden, beginnen die "interessanten" Teile, wenn Sie zur Produktion gehen). Ansible ist sehr minimalistisch und benötigt nichts außer einer SSH-Verbindung. Vagrant und Docker sind in Ihrer Infrastruktur möglicherweise nicht realisierbar, wie Sie schnell sehen werden.

AnoE
quelle
6

http://www.vagrantup.com

Sie können vagrant verwenden, um VMs auf dem lokalen Laptop bereitzustellen.

Sie können auch prüfen, ob es möglich ist, das Skript in kleinere Teile aufzuteilen, sodass das Testen nicht vier Stunden dauert.

030
quelle
5

Wenn lokales Testen keine Option ist, besteht der einfachste Ansatz darin, Snapshots / Backups zum Festplattenvolumen zu Ihrem Vorteil zu verwenden. Diese kosten immer noch $$$, sparen Ihnen aber auf lange Sicht Zeit. Sie sollten dann Ihr Bash-Skript in verschiedene Arbeitssegmente / Skripte aufteilen, die einzeln getestet werden können. Führen Sie nach der Bereitstellung Ihres Servers ein Skript aus und erstellen Sie einen Snapshot. Wenn es erfolgreich war, führen Sie das nächste Skript aus, machen Sie einen Schnappschuss, spülen Sie ihn aus und wiederholen Sie ihn. Wenn Ihr Skript fehlschlägt, ändern Sie das Skript, kehren Sie zum letzten erfolgreichen Snapshot zurück und versuchen Sie es erneut.

ANMERKUNG: Ich bin nicht sicher, ob Sie Snapshots von Festplatten virtueller Maschinen in IBM Cloud / Softlayer erstellen können, aber es sieht so aus, als könnten Sie ganz einfach ein VM-Image erstellen.

Sichern von Images virtueller Maschinen

Sie können ein Image einer virtuellen Maschine in Ihrer Instanz sichern. Diese Funktion erstellt eine Kopie des Images der virtuellen Maschine und der Cloud-Konfiguration, die später wiederhergestellt werden kann. Darüber hinaus können Sie diese Backup-Images verwalten. Details zum Backup-Image lauten wie folgt:

Das Backup-Image ist eine exakte Kopie des Images der virtuellen Maschine und der Cloud-Konfiguration. Es wird keine Bildbereinigung durchgeführt.

  • Das Backup-Image kann nicht als neue Instanz bereitgestellt werden. Es kann nur zum Wiederherstellen des zugehörigen Images der virtuellen Maschine und der Cloud-Konfiguration verwendet werden.

  • Nur der Projektbesitzer (oder ein Administrator) hat Zugriff auf die Wiederherstellung der Images der virtuellen Sicherungsmaschine und der Sicherung der virtuellen Maschine.

  • Wenn Sie eine OpenStack-Cloud verwenden, ist gleichzeitig nur ein Instanzsicherungsvorgang zulässig. Wenn ein anderer Benutzer eine Sicherung ausführt und Sie eine auf derselben Instanz starten, wird eine Fehlermeldung angezeigt, die besagt, dass eine widersprüchliche Anforderung vorliegt. Um eine Sicherung durchzuführen, müssen Sie warten, bis die andere Sicherung abgeschlossen ist.

  • OpenStack PowerVM®- und z / VM®-Instanzen unterstützen diese Aktion nicht.

  • Wenn die Instanz mithilfe von IBM® Cloud Manager mit OpenStack gelöscht wird, werden auch die zugehörigen Sicherungen gelöscht.

https://www.ibm.com/support/knowledgecenter/en/SST55W_4.1.0/liacb/liacbsaverestorevsvmw.html

PrestonM
quelle