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 -a
einige 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?
Empfohlene Vorgehensweise:
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:
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 ...
quelle
Ich glaube, Sie müssen mit einem neuen AMI beginnen, aber Sie können mit dpkg eine Paketliste für das alte Image erstellen:
Verwenden Sie dies dann für das neue Image, um herauszufinden, welche Pakete Sie möglicherweise installieren müssen:
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.
quelle
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.
quelle