SDB:KIWI Kochbuch eigene Cloud

Wechseln zu: Navigation, Suche


Verwendung von 3.-Anbieter-Software in unserem Abbild
Getestet mit openSUSE Empfohlene Artikel Verwandte Artikel
Icon-checked.png

Icon-manual.png Icon-help.png



Schaffen Sie sich Ihre eigene Wolke

Dieses Beispiel wird Sie bei den Schritten bis zur Erstellung der Infrastruktur Ihrer eigenen Wolke führen. Das erfolgt auf der Grundlage von Eucalyptus. Das Beispiel führt Sie auf dem Weg zum Bau von 3 getrennten Abbildern, einem Haupt-Knoten-Abbild, einem Wolken-Knoten-Abbild und einem Gast-Abbild. Wenn die Abbilder erstellt sind, wird es etwa 10 Minuten dauern, Ihre eigene Wolke einzurichten und die Errichtung auf neuen Knoten kann in etwas weniger als 5 Minuten ausgeführt werden.

Wie bei der Kiwi-Version 4.25 enthält das Paket kiwi-doc das Beispiel der suse-euca-cloud im Verzeichnis /usr/share/doc/packages/kiwi/examples.


CLOUDS

Erstelle das Wolken-Abbild

Vorbereitungszeit:

  • 60 min

Kochzeit:

  • 40 min

Zutaten:

  • ein laufendes openSUSE System
  • eine openSUSE Paketquelle
  • den neuesten Werkzeugsatz von KIWI installiert
  • das Paket kiwi-doc installiert
  • Eucalyptus tarball und Euca2ools tarball heruntergeladen
  • über 1 GB freien Speicherplatz


Wenn Sie Ihre Infrastruktur auf openSUSE 11.1 aufbauen benötigen Sie die Eucalyptus-Version 1.6.1. openSUSE 11.2 und höher können Eucalyptus 1.6.1 oder Eucalyptus 1.6.2. verwenden.


Den Haupt-Knoten erstellen

Erstellung der Haupt-Knoten-Konfiguration

Lassen Sie uns mit dem Kopieren des Beispiels, das vom Paket kiw-doc bereitgestellt wird, in ein Arbeitsverzeichnis beginnen. Für dieses Beispiel wird es das Arbeitsverzeichnis /tmp/cloud-setup sein.

cp -r /usr/share/doc/packages/kiwi/examples/suse-11.2/suse-euca-cloud/ /tmp/cloud-setup


Wenn Sie noch nicht Eucalyptus und Euca2ools tarballs heruntergeladen haben, dann machen Sie das nun und speichern sie unter /tmp/cloud-setup.

Dann wechseln Sie in unser Arbeitsverzeichnis und entpacken Sie die Eucalyptus-Pakete.

cd /tmp/cloud-setup
tar -xzvf euca2ools-1.2-opensuse-x86_64.tar.gz
tar -xzvf eucalyptus-1.6.2-opensuse-x86_64.tar.gz


Wenn Sie auf einer 32 bit basierten Infrastruktur bauen oder eine andere Version von Eucalyptus verwenden, dann fügen Sie geeignete Bezeichnung für die "Teerkugel" in das tar-Kommando oben ein.

Mit den folgenden Schritten werden wir die Paketverzeichnisse, die während des Entpacken der "Teerkugeln" erzeugt wurden, zur Kiwi-Konfiguration als Repositorys hinzufügen. Bearbeiten Sie die Datei config.xml im Verzeichnis cloud-head-node. Ersetzen Sie den Eintrag PATH_TO_EUCALYPTUS_RPMS durch den Pfad zu den Eucalyptus rpms. In diesem Beispiel ist das der Pfad /tmp/cloud-setup/eucalyptus-1.6.2-opensuse-x86_64. Dann kopieren Sie die Paketquellenvereinbarung (repository declaration) erneut und weisen den Pfad zum Verzeichnis euca2ools-1.2-opensuse-x86_64. Wenn das vollbracht ist, sollten Sie die folgende Paketquellen-Konfiguration in config.xml haben.

    <repository type="rpm-dir">
        <source path="tmp/cloud-setup/eucalyptus-1.6.2-opensuse-x86_64"/>
	</repository>
    <repository type="rpm-dir">
        <source path="tmp/cloud-setup/eucalyptus-1.6.2-opensuse-x86_64/eucalyptus-1.6.2-rpm-deps-x86_64"/>
    </repository>
    <repository type="rpm-dir">
        <source path="tmp/cloud-setup/euca2ools-1.2-opensuse-x86_64"/>
    </repository>
Wenn Sie nicht die openSUSE Pakete über das Internet ziehen möchten, vergessen Sie nicht die Paketquelle zu einer örtlichen Paketquelle zu ändern, möglichst dem Einhängepunkt des openSUSE ISO-Abbildes.

Wenn Sie die neuesten openSUSE-Pakete einbeziehen wollen, fügen Sie das Update-Repository in die Datei config.xml ein. Das Hinzufügen der Aktualisierungs-Paketquelle hat die folgende Syntax:

    <repository type="rpm-md">
	<source path="http://download.opensuse.org/update/11.2/"/>
    </repository>

Das vervollständigt die Änderungen zu config.xml.

Wenn Sie ein 64 bit Abbild bauen, sind einige Änderungen in der Datei config.sh notwendig. Das 64 bit Paket euca2ools platziert erforderliche Python-Dateien eher in den 32 bit Baum als in den 64 bit Baum. Darum wird eine Verknüpfung erforderlich. Das wurde berichtet. Es wird erwartet, das das behoben wird in einer späteren Version das Pakets euca2ools. Nach dem Kommando suseConfig in config.sh fügen Sie die folgenden Einträge hinzu:

#====================================== 
# Problemumgehung für das zerstörte Paket euca2ools  
#-------------------------------------- 
ln -s /usr/lib/python2.6/site-packages/boto /usr/lib64/python.6/site-packages
ln -s /usr/lib/python2.6/site-packages/euca2ools /usr/lib64/python.6/site-packages

Das vervollständigt die erforderlichen Änderungen zur Beispiel-Konfiguration.

Die Konfiguration ist eingerichtet, um ein OEM-Abbild im ISO-Format zu erstellen, z. B. ein sich selbst installierendes ISO-Abbild, das Sie auf eine CD brennen können. Wenn es von der CD gestartet ist, wird das Haupt-Knoten-Abbild sich selbst auf der Maschine, auf der Sie booten, installieren. Es ist ebenso sensibel, einen Haupt-Knoten in einer VM laufen zu lassen. Sie können den Typ des Abbildes in der Konfiguration ändern, wenn Sie wollen. Nun lassen Sie uns das Haupt-Knoten-Abbild bauen.

Bau des Haupt-Knoten-Abbildes

kiwi --prepare ./cloud-head-node --root /tmp/cloud-setup/cloud-head-unpacked


Nach dem Vorbereitungsschritt erstellen wir das Abbild.

kiwi --create ./cloud-head-unpacked -d /tmp/cloud-setup/cloud-head-image


Sie können das Abbild in einer virtuellen Umgebung testen. Mit Qemu auf einem 64 bit System funktioniert das wie folgt:

Erstellen Sie eine virtuelle Festplatte

qemu-img create -f qcow2 /tmp/cloud_head_test.img 10G


Starten Sie das erstellte ISO

qemu-kvm /tmp/cloud_head_test.img -cdrom /tmp/cloud-setup/cloud-head-image/Eucalyptus-Head-Node.x86_64-0.9.2.iso -boot d


Das vervollständigt den Haupt-Knoten und Sie können das Abbild auf einer geeigneten Hardware installieren.

Erstellung des Wolken-Knotens

Erstelle die Konfiguration für den Wolken-Knoten

Bearbeiten Sie die Datei config.xml im Verzeichnis cloud-cloud-node mit Ihrem bevorzugten Editor. Wie bei der vorherigen Haupt-Knoten-Konfiguration, richten Sie Ihre Paketquellen ein (Sie könnten die konfigurierten Paketquellen-Elemente aus Ihrer Haupt-Knoten-Konfigurations-Datei kopieren).

Zur Wolken-Knoten-Konfiguration ist zu bemerken, dass das Abbild als ein Xen-Hypervisor eingerichtet ist, z. B. dom0, image. Das wird mit dem Element <xenconfig> und den Attributen bootprofile und bootkernel des Elements <type> ausgeführt.

    <type image="oem" filesystem="ext4" boot="oemboot/suse-11.2" format="iso" bootprofile="xen" bootkernel="xenk">
        .......
        <xenconfig domain="dom0"/>
    </type>
Wenn Sie die config-Dateien anpassen, damit sie mit einer früheren Kiwi-Version vor 4.20 zusammen arbeiten, müssen Sie den Wert des Attributs bootkernel von xenk zu nex ändern.

Die Konfiguration für den Wolken-Knoten produziert ebenso ein OEM-Abbild im ISO-Format. Wenn Sie lieber ein Abbild erstellen wollen, dass sich selbst von einem USB-Stick installiert, können Sie einfach den Wert des format-Attributes des <type>-Elements von iso zu usb ändern. Das Ergebnis wird eine Datei .raw.install.raw sein. Verfrachten Sie dieses Abbild auf einen USB-Stick mit dem Kommando dd (vergessen Sie nicht, das Argument bs=32 zu verwenden).

Bau des Wolken-Knoten-Abbildes

Nun können Sie Ihr Wolken-Knoten-Abbild bauen.

kiwi --prepare ./cloud-cloud-node --root /tmp/cloud-setup/cloud-cloud-unpacked
kiwi --create ./cloud-cloud-unpacked -d /tmp/cloud-setup/cloud-cloud-image


Einrichtung einer Wolken-Infrastruktur

Sind die Haupt- und Wolken-Knoten-Abbilder komplett, können Sie diese auf geeigneter Hardware installieren. Folgen Sie den Instruktionen der Anleitung für Administratoren, um die Wolken-Infrastruktur zu konfigurieren.

Auf den Wolken-Knoten müssen Sie eine Netzwerk-Brücke erzeugen, um den Gast-Abbildern zu erlauben, sich mit dem Netzwerk zu verbinden. Sie können die Kommandozeile verwenden oder die Konfiguration mit einer netten GUI durchführen. Dazu verwenden Sie YaST.

Da die Wolken-Infrastruktur ohne Gast-Abbild ziemlich nutzlos ist, erklärt der nächste Schritt, wie die Gäste mit Eucalyptus zu registrieren sind.

Erstellung eines Wolken-Abbildes

Die Konfiguration des Wolken-Knotens ist so eingerichtet, dass er mit Xen arbeitet. Darum müssen unsere virtuellen Wolken-Maschinen als Xen-Gast-(domU)-Abbilder gebaut werden. Zur Demonstation wird hier das Xen-Gast-Beispiel, das von dem Paket kiwi-do unterstützt wird, hier verwendet.

Sie können das Xen-Gast-Beispiel ohne Veränderung verwenden. In diesem Fall ist das Beispiel in das Arbeitsverzeichnis /tmp/clous-setup kopiert. Um die Repository-Deklaration zu verändern verwenden Sie ein örtliches ISO-Abbild. Das nicht veränderte Xen-Gast-Beispiel bezieht die Pakete über das Internet.
cp -r /usr/share/doc/packages/kiwi/examples/suse-11.2/suse-xen-guest .


kiwi --prepare ./suse-xen-guest --root /tmp/cloud-setup/cloud-guest-unpacked


kiwi --create ./cloud-guest-unpacked -d /tmp/cloud-setup/cloud-guest-image


Das Xen-Gast-Beispiel erstellt ein "ungepacktes" Xen-Abbild, das ermöglicht es, es in Eucalyptus aufzunehmen, wie unten erklärt wird.

Das Wolken-Gast-Abbild kann ebenso durch die Verwendung von SUSE Studio erzeugt werden. Mit Studio ist das Ergebnis ein gepacktes Xen-Gast-Abbild. Es benötigt etwas mehr Aufwand, um es in die Wolken-Infrastruktur zu integrieren. Diese Schritte sind unten ebenso dargestellt.

Integration des Gast-Abbildes

Vorbereitung des Gast-Abbildes für die Integration

Das Kiwi-Abbild
  • Erstellen Sie ein Tar-Archiv Ihres Ergebnis-Verzeichnisses, z.B. /tmp/cloud-setup/cloud-guest-image.
  • Kopieren/Verschieben Sie das Tar-Archiv in Ihren Eucalyptus-Haupt-Knoten in ein Verzeichnis Ihrer Wahl.
  • Entpacken Sie das Tar-Archiv.
Ein SUSE Studio Abbild
  • Laden Sie das Tar-Archiv von SUSE Studio herunter.
  • Entpacken Sie das Tar-Archiv.
    • Das Archiv enthält:
      • Die Konfigurationsdatei, endet mit .xenconfig,
      • Die Datei des Platten-Abbildes, endet mit .raw
  • Extrahieren Sie den Kernel und die initrd aus dem Platten-Abbild wie folgt:
losetup /dev/loop1 FILENAME.raw
Es wird angenommen, dass loop1 noch nicht bereits verwendet wird. Prüfen Sie mit dem Kommando mount und mit grep loop1, dass das so ist, bevor Sie das Kommando losetup ausgeben.
kpartx -a /dev/loop1
mount -t ext3 /dev/mapper/loop1p1 /mnt
Stellen Sie sicher, dass Ihr Dateisystem zu dem Dateisystem passt, das verwendet wird, um Ihr Gast-Abbild zu bauen.
mkdir SOMEWHERE/my_xen_guest
Ersetzen Sie SOMEWHERE durch einen Pfad Ihrer Wahl. Der Name my_xen_guest wurde willkürlich gewählt und nur als Beispiel verwendet.
cp /mnt/boot/initrd.vmx SOMEWHERE/my_xen_guest
cp /mnt/boot/vmlinuz-KERNEL_VERSION-xen SOMEWHERE/my_xen_guest


Die letzten zwei Schritte kopieren initrd und den Kernel aus dem Platten-Abbild. Wenn Sie sich unsicher bezüglich der Bezeichnungen sind, schauen Sie in /mnt/boot/grub/menu.lst nach, um die Bezeichnungen für initrd und den Kernel zu bestimmen, und kopieren Sie die entsprechenden Dateien.

Bündelung und Hochladen

Jedes Eucalyptus-Maschinen-Abbild besteht aus drei Dateien:

  1. filesystem
  2. initial ramdisk (initrd)
  3. kernel

Jede dieser drei Abbild-Dateien muss gebündelt, hoch geladen und bei der Eucalyptus-Infrastruktur registriert werden. Das Bündeln, Hochladen und die Registrierung wird mit den folgenden Kommandos abgeschlossen:

  1. euca-bundle-image
  2. euca-upload-bundle
  3. euca-register

Detaillierte Informationen über diesen Prozess und die Kommandos können im Abschnitt Image Management des Eucalyptus Führers für Administratoren gefunden werden.

Bündelung und Hochladen der Initial Ramdisk
Verwendung des mit Kiwi erzeugten Gastes

Identifizieren Sie die Dateibezeichnung der initial ramdisk (initrd), indem Sie die Datei .xenconfig im Ergebnis-Verzeichnis überprüfen, cloud-guest-image/suse-11.2-xen-guest.x86_64-1.1.2.xenconfig in unserem Beispiel.

Verwendung des mit SUSE Studio erzeugten Gastes

Verwenden Sie die Datei initrd.vmx, die Sie kürzlich in ein Verzeichnis Ihrer Wahl kopiert haben.

  • Erstellen Sie eine Manifest-Datei durch Bündelung der initrd-Datei
euca-bundle-image --ramdisk true -i <initrd-Datei>
  • Laden Sie das Bündel, das eine Behälter-Bezeichnung spezifiziert und das Manifest, das im vorangegangenen Schritt erzeugt wurde, hoch. Die Behälter-Bezeichnung ist eine Zeichenkette Ihrer Wahl.
euca-upload-bundle -b <Behälter-Bezeichnung> -m /tmp/<Bezeichnung der Manifest-Datei>
  • Registrieren Sie dieses im Wolken-Management-Rahmenwerk von Eucalyptus
euca-register <Behälter-Bezeichnung>/<Bezeichnung der Manifest-Datei>
  • Notiere den Eucalyptus Ramdisk-Identifikator (eri-xxxxxx), der erzeugt wird.
Bündelung und Hochladen des Linux Kernels
Verwendung des von Kiwi erzeugten Gastes

Identifiziere die Dateibezeichnung des Kernels durch untersuchung der Datei .xenconfig im Ergebnis-Verzeichnis, cloud-guest-image/suse-11.2-xen-guest.x86_64-1.1.2.xenconfig in unserem Beispiel.

Verwendung eines mit SUSE Studio erzeugten Gastes

Verwenden Sie die Kernel-Datei, die Sie kürzlich in ein Verzeichnis Ihrer Wahl kopiert haben.

  • Erstellen Sie eine Manifest-Datei durch Bündelung des Kernels
euca-bundle-image --kernel true -i <Kernel-Datei>
  • Laden Sie das Bündel, das das gleich Behälter-Bezeichnung spezifiziert, das Sie für die initrd-Datei verwendet haben, hoch spezifizieren Sie die Manifest-Datei.
euca-upload-bundle -b <Behälter-Bezeichnung> -m /tmp/<Bezeichnung der Manifest-Datei>
  • Registrieren Sie dieses Abbild im Wolken-Management-Rahmenwerk von Eucalyptus
euca-register <Behälter-Bezeichnung>/<Bezeichnung der Manifest-Datei>
  • Notiere den Eucalyptus Kernel-Identifikator (eki-xxxxxx), der erzeugt wird.
Bündelung und Hochladen des Dateisystems Root
Verwendung des mit Kiwi erstellten Gastes

Identifizieren Sie das Abbild des Dateisystems durch Untersuchung der Datei .xenconfig im Ergebnis-Verzeichnis, cloud-guest-image/suse-11.2-xen-guest.x86_64-1.1.2.xenconfig in unserem Beispiel.

Verwendung eines mit SUSE Studio erstellten Gastes

Verwenden Sie die .raw Darei, die Sie kürzlich in ein Verzeichnis Ihrer Wahl kopiert haben.

  • Erstellen Sie eine Manifest-Datei, indem Sie das Dateisystem bündeln. Das erfordert die vorher notierten Identifier eri-xxxxxx und eki-xxxxxx.
euca-bundle-image --ramdisk <eri-xxxxxx> --kernel <eki-xxxxxx> -i <Pfad zum Root-Dateisystem>
  • Laden Sie das Bündel hoch, das die gleiche Behälterbezeichnung angibt und vorher für initrd und kernel verwendet wurde, und spezifizieren Sie die Manifest-Datei
euca-upload-bundle -b <Behälter-Bezeichnung> -m /tmp/<Dateiname des Manifests>
  • Registrieren Sie dieses Abbild im Eucalyptus-Wolken-Management-Framework
euca-register <Behälter-Bezeichnung>/<Dateiname des Manifests>
  • Notieren Sie sich den Identifikator des Eucalyptus-Machinen-Abbildes (EMI) (emi-xxxxxx)

Das vervollständigt die Bündelung, das Hochladen und den Registrierungsprozess. Das neu erstellte Abbild kann nun unter Verwendung des EMI-Identifikators vom Stapel laufen.

Verwendung der Wolke

  • Start eines Gast-Abbildes
euca-run-instances -k <ssh key id> emi-xxxxxx
  • Zeige die laufenden Instanzen:
euca-describe-instances
  • Zeige die verfügbaren Abbilder, Ramdisks und Kernel:
euca-describe-images
  • Instanzen kündigen
    • Finden Sie die Instanz ID (i-xxxxxx) entweder aus dem Startkommando der Lauf-Instanz oder den Euca-Beschreibungs-Instanzen:
euca-terminate-instances <i-xxxxxx>