Einfache Möglichkeit, benutzerdefiniertes 32-Bit-AMI in 64-Bit-AMI umzuwandeln?

7

Ich habe AMI angepasst (EBS-unterstützt), um eine Demoversion einer unserer Anwendungen auszuführen. (Das AMI enthält Ubuntu 11.04 mit einem Tomcat & MySQL-Setup für die App selbst und Jenkins für ein einfaches Ein-Klick-Update der Demo.)

Dies ist ein 32-Bit-AMI, was bedeutet, dass ich die folgenden Instanztypoptionen habe :

  • Mikro (t1.mikro)
  • Klein (m1.small)
  • High-CPU-Medium (c1.medium)

Wir haben festgestellt, dass wir mehr Leistung für den Demo-Server wünschen, als c1.medium bieten kann. (Insbesondere vermute ich, dass "E / A-Leistung: Mittel" ein Engpass sein könnte, obwohl ich nicht sicher bin, ob eine Verbesserung helfen würde, da wir EBS für alles verwenden.)

Um die leistungsstärkeren Instanztypen (z. B. "m1.large" oder "c1.xlarge") zu verwenden, würde ich jedenfalls ein 64-Bit-AMI benötigen .

Eine Möglichkeit, dies zu tun, besteht darin, eine neue Instanz aus sauberem 64-Bit- Ubuntu-AMI zu erstellen , dann mein System dort neu einzurichten und diese schließlich als neues AMI zu speichern. Ich könnte ein Volume mit dem aktuellen Setup mounten und dann cp -aeinige Dinge auf die Root-Festplatte der neuen Instanz übertragen, was etwas helfen würde. Trotzdem kann dieser Ansatz etwas langwierig und zeitaufwändig sein.

Meine Frage ist also, gibt es eine einfachere, automatisierte Möglichkeit, ein 32-Bit-AMI in ein 64-Bit-AMI umzuwandeln?

Jonik
quelle

Antworten:

7

Nein, es gibt keinen automatisierten Weg. Sie müssen ein neues AMI erstellen, das mit dem Ubuntu-Plain beginnt.

Es ist möglich, eine Unbuntu-Installation zu konvertieren, aber es ist wirklich chaotisch. Am besten machen Sie einen frischen AMI.

Bart De Vos
quelle
Akzeptiere dies, weil es meine Frage direkt beantwortet. Aber jeder sollte sich auch die Best-Practice-Empfehlungen von Eric Hammond ansehen !
Jonik
14

Empfohlene Vorgehensweise:

  1. Wenn Sie ein AMI erstellen (oder sogar eine Instanz einrichten), dokumentieren Sie immer die genauen Schritte, die Sie zur Installation und Konfiguration der Software unternommen haben, und welche Daten Sie darauf und wo gespeichert haben. Dies hat viele Vorteile, einschließlich der einfachen Wiederherstellung desselben AMI für eine andere Architektur.

    Noch besser ist, ich empfehle, die meisten oder alle Installationsskripte zu erstellen und die Schritte so zu konfigurieren, dass Sie die Erstellung der AMIs automatisieren können. Dies macht es einfach, das Setup zu optimieren und neue Versionen zu testen.

    Hier ist ein Beispiel, wie ich ein Ubuntu AMI mit Git und gitolite erstelle, die für private Git-Repository-Server installiert sind:

    https://github.com/alestic/alestic-git/blob/master/bin/alestic-git-build-ami

  2. Die erste Empfehlung oben ist das Einrichten der Software, die im Allgemeinen auf dem Root-Volume ausgeführt wird. Ihre Daten sollten auf separaten EBS-Volumes abgelegt werden, die Sie nach dem Ausführen des AMI an Ihre Instanz anhängen. Dies hat viele Vorteile, einschließlich der Möglichkeit, die Daten zwischen Instanzen zu verschieben, z. B. wenn Sie zur Ausführung eines neuen AMI wechseln möchten. Außerdem können Sie Kopien Ihrer Datenmengen erstellen, um sie an Entwicklungsinstanzen anzuhängen.

Sie denken vielleicht, dass dieser Rat zu spät für Sie ist, aber Sie sind dabei, einen weiteren AMI zu bauen, also ...

Eric Hammond
quelle
1
Scripting? Ich weiß nichts über dich, aber ich baue meine mit Puppet aus.
Tom O'Connor
1
Tom: Ich betrachte das Schreiben von Puppet- oder Chef-Konfigurationen als eine Form der Skripterstellung. Ich meine nur, dass Sie den Prozess so automatisieren sollten, dass so wenig manuelle Arbeit wie möglich erforderlich ist.
Eric Hammond
Meinetwegen. Ich nehme an, die Grenze zwischen einem DSL und einem Skript ist ziemlich schmal.
Tom O'Connor
Danke, toller Rat. Intuitiv fühlt sich das richtig an, und ich wusste es irgendwie, aber bisher war ich zu faul, um alles zu automatisieren, oder es fühlte sich immer wie ein einmaliger Fall an ... :)
Jonik
1
Jonik: Eine vollständige Automatisierung ist nicht immer erforderlich. Gewöhnen Sie sich an, eine Textdatei zu öffnen und die von Ihnen ausgeführten Befehle und Dateien zu kopieren, die Sie beim Einrichten eines neuen Systems bearbeiten. Diese Dokumentation erleichtert die Arbeit beim nächsten Mal erheblich und ist ein guter Anfang für die Automatisierung.
Eric Hammond
5

Ich glaube, Sie müssen mit einem neuen AMI beginnen, aber Sie können mit dpkg eine Paketliste für das alte Image erstellen:

dpkg --get-selections | awk '{print $1}' > pkgs.old

Verwenden Sie dies dann für das neue Image, um herauszufinden, welche Pakete Sie möglicherweise installieren müssen:

dpkg --get-selections | awk '{print $1}' | fgrep -v -f - pkgs.old

Dann sollte das Kopieren von Dateien aus / etc Sie wahrscheinlich den größten Teil des Weges dorthin bringen.

Und +1 für das Scripting - Sie haben diese Dinge kaum ein- oder zweimal eingerichtet - es ist normalerweise viele, viele Male. All dies automatisiert und in der Quellcodeverwaltung zu haben, ist entscheidend.

Matt Billenstein
quelle
3

Versuchen Sie, das 32-Bit-AMI mit Blaupause zurückzuentwickeln:

https://github.com/devstructure/blueprint

Speichern Sie die Ausgabe als Bash-Skript und verwenden Sie den Benutzerdaten-Hook, wenn Sie die 64-Bit-Version starten.

Dennis Watson
quelle
Ich bin hierher gekommen, um eine Blaupause vorzuschlagen. +1 für dich!
Ceejayoz