UEC: Erstellen eines eigenen Image

Dieses Tutorial beschreibt das Erstellen von Images für die Ubuntu Enterprise Cloud mit Hilfe des vmbuilder utility. Dieses Image ist generisch und kann für jede Eucalyptus Cloud genutzt werden.

Zunächst erstellen wir eine Beschreibung zu einer Partition, hier mit dem Namen "part". Diese beinhaltet die Größe, den Typ sowie den Mountpoint der Partition unserer VM.

$ cat > part <

Im nächsten Schritt wird ein einfaches Skript mit dem Namen "firstboot" (entspricht ebenfalls dem Dateinamen) erstellt. Dieses wird das erste Mal ausgeführt, wenn das Image innerhalb von Eucalyptus gestartet wird um einen SSH Daemon zu installieren.

$ cat >firstboot <

Nun kann mit dem vmbuilder das Image erstellt werden. Dazu wird als Parameter das vorher erstellte Skript "firstboot" mit übergeben.

sudo vmbuilder xen ubuntu --part ./part --firstboot ./firstboot

Als nächstes müssen wir einen Kernel, eine Ramdisk und natürlich das Image "bundlen", registieren und hochladen. Dazu verwenden wir die EC2 API Tools.

mkdir kernel
euca-bundle-image --image /boot/vmlinuz-$(uname -r) \
--destination ./kernel --kernel true
euca-upload-bundle --bucket kernel \
--manifest ./kernel/vmlinuz-$(uname -r).manifest.xml
EKI=`euca-register kernel/vmlinuz-$(uname -r).manifest.xml | awk '{print $2}'`
echo $EKI

mkdir ramdisk
sudo sh -c 'grep -q acpiphp /etc/initramfs-tools/modules ||
printf "#acpiphp needed for ebs\nacpiphp\n" > /etc/initramfs-tools/modules'
sudo mkinitramfs -o ./ramdisk/initrd.img-$(uname -r)
euca-bundle-image --image ./ramdisk/initrd.img-$(uname -r) \
--destination ./ramdisk --ramdisk true
euca-upload-bundle --bucket ramdisk \
--manifest ramdisk/initrd.img-$(uname -r).manifest.xml
ERI=`euca-register ramdisk/initrd.img-$(uname -r).manifest.xml | awk '{print $2}'`
echo $ERI

mkdir image
euca-bundle-image --image ubuntu-xen/root.img \
--destination ./image --kernel $EKI --ramdisk $ERI
euca-upload-bundle --bucket image --manifest ./image/root.img.manifest.xml
EMI=`euca-register image/root.img.manifest.xml | awk '{print $2}'`
echo $EMI

Die Shell Variablen in dem obigen Code Beispiel werden dazu benötigt, um die anschließende Instalaltion zu testen. Nun sollte der Kernel, die Ramdisk und das Image in Eucalyptus hochgeladen worden und betriebsbereit sein. Um das zu überprüfen nutzen wir den folgenden Befehl.

euca-describe-images

Wir sollten einen registierten Kernel, eine Ramdisk und das Image sehen, wobei alle als "available" gekennzeichnet sind.

Quelle