it-swarm.com.de

Wie bereite ich MAAS für die Bereitstellung von Bildern auf OpenStack vor?

Ich habe Openstack fertig mit MAAS , wie bereite ich die Cloud mit Ubuntu-Images vor, damit ich sie mit Juju bereitstellen kann?

5
Jorge Castro

MAAS für Juju und OpenStack mit Simplestreams vorbereiten

Wenn Juju eine Cloud bootet, werden zwei wichtige Informationen benötigt:

  1. Die UUID des Images, die beim Starten neuer Recheninstanzen verwendet werden soll.
  2. Die URL, von der die richtige Version eines Tools-Tarballs heruntergeladen werden soll.

Diese notwendigen Informationen werden in einem JSON-Metadatenformat namens "simplestreams" gespeichert. Für unterstützte öffentliche Cloud-Dienste wie Amazon Web Services, HP Cloud, Azure usw. sind vom Endbenutzer keine Maßnahmen erforderlich. Wenn Sie jedoch eine private Cloud einrichten oder die Funktionsweise ändern möchten (z. B. ein anderes Ubuntu-Image verwenden), können Sie Ihre eigenen Metadaten erstellen, nachdem Sie sich ein wenig mit deren Funktionsweise vertraut gemacht haben.

Das simplestreams-Format wird verwendet, um verwandte Elemente strukturell zu beschreiben. Siehe das Launchpad-Projekt lp: simplestreams . Im Folgenden wird erläutert, wie Juju festlegt, welche Metadaten verwendet werden sollen, und wie Sie Ihre eigenen Bilder und Werkzeuge erstellen und Juju anstelle der Standardeinstellungen verwenden lässt.

Grundlegender Workflow

Egal ob Bilder oder Werkzeuge, Juju verwendet einen Suchpfad, um geeignete Metadaten zu finden. Die Pfadkomponenten (in der Reihenfolge der Suche) sind:

  1. Vom Benutzer angegebener Speicherort (angegeben durch tools-metadata-url oder image-metadata-url Konfigurationseinstellungen).
  2. Der Cloud-Speicher der Umgebung.
  3. Anbieterspezifische Standorte (z. B. Keystone-Endpunkt bei Openstack).
  4. Ein Web-Standort mit Metadaten für unterstützte öffentliche Clouds - https://streams.canonical.com

Metadaten können inline signiert oder nicht signiert sein. Wir weisen darauf hin, dass eine Metadatendatei mit der Erweiterung ".sjson" signiert ist. Jede Position im Pfad wird zuerst nach signierten Metadaten durchsucht. Wenn keine gefunden wird, werden nicht signierte Metadaten gesucht, bevor zur nächsten Pfadposition übergegangen wird.

Juju wird mit öffentlichen Schlüsseln ausgeliefert, mit denen die Integrität von Image- und Tool-Metadaten überprüft werden kann, die von https://streams.canonical.com . Juju "funktioniert" also sofort mit jeder unterstützten öffentlichen Cloud unter Verwendung signierter Metadaten. Für das Einrichten von Metadaten für eine private Cloud (z. B. Openstack) müssen Metadaten mit Tools generiert werden, die im Lieferumfang von Juju enthalten sind.

Inhalt der Bildmetadaten

Bildmetadaten verwenden den Inhaltstyp "Bild-IDs" von simplestreams. Die Produkt-ID wird wie folgt gebildet:

com.ubuntu.cloud:server:<series_version>:<Arch> 

Zum Beispiel:

com.ubuntu.cloud:server:14.04:AMD64 

Nicht veröffentlichte Bilder (z. B. Beta, Daily usw.) haben Produkt-IDs wie:

com.ubuntu.cloud.daily:server:13.10:AMD64

Der Metadatenindex und die Produktdateien müssen sich in der folgenden Verzeichnisstruktur befinden (relativ zur URL, die jeder Pfadkomponente zugeordnet ist):

<path_url>
  |-streams
      |-v1
         |-index.(s)json
         |-product-foo.(s)json
         |-product-bar.(s)json

Die Indexdatei muss "index. (S) json" (sjson für unterzeichnet) heißen. Die verschiedenen Produktdateien sind nach den in der Indexdatei enthaltenen Pfadwerten benannt.

Tools-Metadaten verwenden den Inhaltstyp "Content-Download" von simplestreams. Die Produkt-ID wird wie folgt gebildet:

"com.ubuntu.juju:<series_version>:<Arch>"

Zum Beispiel:

"com.ubuntu.juju:12.04:AMD64"

Der Metadatenindex und die Produktdateien müssen sich in der folgenden Verzeichnisstruktur befinden (relativ zur URL, die jeder Pfadkomponente zugeordnet ist). Außerdem werden Tools-Tarballs erwartet, die Juju herunterladen muss.

  |-streams
  |   |-v1
  |      |-index.(s)json
  |      |-product-foo.(s)json
  |      |-product-bar.(s)json
  |
  |-releases
      |-tools-abc.tar.gz
      |-tools-def.tar.gz
      |-tools-xyz.tar.gz

Die Indexdatei muss "index. (S) json" (sjson für unterzeichnet) heißen. Die Namen der Produktdatei und des Tools-Archivs stimmen mit den Angaben in den Index-/Produktdateien überein.

Aufbau

Für unterstützte öffentliche Clouds ist keine zusätzliche Konfiguration erforderlich. Dinge funktionieren sofort. Zu Testzwecken oder für nicht unterstützte Cloud-Bereitstellungen muss Juju jedoch wissen, wo sich die Tools befinden und welches Image ausgeführt werden soll. Selbst für unterstützte öffentliche Clouds, in denen alle erforderlichen Metadaten verfügbar sind, kann der Benutzer seine eigenen Metadaten in den Suchpfad einfügen, um die von der Cloud bereitgestellten Daten zu überschreiben.

Diese werden anfänglich in der .juju/environments.yaml -Datei angegeben (und anschließend in die jenv-Datei kopiert, wenn die Umgebung gebootet wird). Verwenden Sie für Bilder image-metadata-url; Verwenden Sie für Werkzeuge tools-metadata-url. Die URLs können auf einen weltweit lesbaren Container/Bucket in der Cloud, eine Adresse, die von einem HTTP-Server bereitgestellt wird, oder sogar auf ein freigegebenes Verzeichnis verweisen, auf das alle in der Cloud ausgeführten Knoteninstanzen zugreifen können.

Angenommen, ein Apache-HTTP-Server mit der Basis-URL https://juju-metadata ermöglicht den Zugriff auf Informationen unter <base>/images und <base>/tools. Die Juju-Umgebungs-Yaml-Datei könnte die folgenden Einträge enthalten (einen oder beide):

tools-metadata-url: https://juju-metadata/tools 
image-metadata-url: https://juju-metadata/images

Die erforderlichen Dateien an jedem Speicherort entsprechen dem zuvor beschriebenen Verzeichnislayout. Verwenden Sie für ein freigegebenes Verzeichnis eine URL der Form file:///sharedpath.

Wenn in der vom Benutzer angegebenen URL keine übereinstimmenden Metadaten gefunden werden, wird der Cloud-Speicher der Umgebung durchsucht. Hier ist keine Benutzerkonfiguration erforderlich. Alle Juju-Umgebungen sind mit einem Cloud-Speicher eingerichtet, in dem Statusinformationen, Charms usw. gespeichert werden. Die Einrichtung des Cloud-Speichers ist vom Anbieter abhängig. Für Amazon- und Openstack-Clouds wird der Speicher durch den Wert "control-bucket" definiert. Für Azure ist der Wert "speicherkontoname" relevant.

Die (optionale) Verzeichnisstruktur im Cloud-Speicher lautet wie folgt:

  |-tools
  |   |-streams
  |       |-v1
  |   |-releases
  |
  |-images
      |-streams
          |-v1

Wenn nur benutzerdefinierte Bildmetadaten erforderlich sind, ist das Tools-Verzeichnis natürlich nicht erforderlich und umgekehrt.

Beachten Sie, dass die Tools und Metadaten gemäß der obigen Struktur platziert werden, wenn juju bootstrap mit der Option --upload-tools ausgeführt wird. Deshalb stehen die Tools dann für Juju zur Verfügung.

Anbieter können zusätzlichen Standorten die Suche nach Metadaten und Tools ermöglichen. Für OpenStack können Keystone-Endpunkte vom Cloud-Administrator erstellt werden. Diese sind wie folgt definiert:

juju-tools der Wert wie oben in Tools Metadata Contents beschriebenproduct-streamt den Wert <path_url> wie oben in Image Metadata Contents beschrieben

Andere Anbieter können möglicherweise ebenfalls Standorte angeben, die Implementierung ist jedoch unterschiedlich.

Dies ist der Standardspeicherort für die Suche nach Bild- und Werkzeug-Metadaten. Er wird verwendet, wenn zuvor an keinem der oben genannten Speicherorte Übereinstimmungen gefunden wurden. Es ist keine Benutzerkonfiguration erforderlich.

Bei der Bereitstellung einer privaten Cloud treten zwei Hauptprobleme auf:

  1. Bild-IDs sind für die Cloud spezifisch.
  2. Oft ist der Internetzugang von außen gesperrt

Problem 1 bedeutet, dass Image-ID-Metadaten generiert und verfügbar gemacht werden müssen.

Problem 2 bedeutet, dass Tools lokal gespiegelt werden müssen, damit sie verfügbar sind.

Juju-Tools helfen beim Generieren und Validieren von Bild- und Tool-Metadaten. Bei Werkzeugen ist es häufig am einfachsten, https://streams.canonical.com/tools zu spiegeln. Image-Metadaten können jedoch nicht einfach gespiegelt werden, da die Image-IDs vom Cloud-Speicheranbieter stammen. Daher müssen diese mithilfe der nachfolgend beschriebenen Befehle generiert und validiert werden.

Die verfügbaren Juju-Metadaten-Tools können mit dem Befehl help angezeigt werden:

juju help metadata

Der Gesamtworkflow ist:

  • Generieren Sie Bildmetadaten
  • Kopieren Sie die Bildmetadaten an eine beliebige Stelle im Metadatensuchpfad
  • Optional können Sie Tools an eine beliebige Stelle im Metadatensuchpfad spiegeln
  • Optional können Sie die Tools-Metadaten-URL und/oder die Image-Metadaten-URL konfigurieren

Generieren Sie Bildmetadaten mit

juju metadata generate-image -d <metadata_dir>

Der obige Befehl muss mindestens die zu verwendende Image-ID und ein Verzeichnis zum Schreiben der Dateien kennen.

Andere erforderliche Parameter wie Region, Serie, Architektur usw. werden aus der aktuellen Juju-Umgebung (oder einer mit der Option -e angegebenen Umgebung) übernommen. Diese Parameter können auch in der Befehlszeile überschrieben werden.

Der Image-Metadatenbefehl kann mehrmals mit unterschiedlichen Regionen, Serien und Architekturen ausgeführt werden und wird den Metadatendateien weiterhin hinzugefügt. Nachdem alle erforderlichen Bild-IDs hinzugefügt wurden, können die Index- und Produkt-JSON-Dateien an einen Speicherort im Juju-Metadatensuchpfad hochgeladen werden. Wie im Abschnitt Konfiguration angegeben, kann dies an einer Stelle durch die Einstellung image-metadata-url oder den Cloud-Speicher usw. festgelegt werden.

Beispiele:

  1. bild-Metadaten-URL

    • lade Inhalte von zu http://somelocation hoch
    • setze image-metadata-url auf http://somelocation/images
  2. Cloud-Speicher

Wenn der Befehl validation ohne Parameter ausgeführt wird, übernimmt er alle erforderlichen Details aus der aktuellen Juju-Umgebung (oder wie von -e angegeben) und gibt die Image-ID aus, die zum Hochfahren einer Instanz verwendet wird. Alternativ können in der Befehlszeile Serien, Regionen, Architekturen usw. angegeben werden, um die Werte in der Umgebungskonfiguration zu überschreiben.

Im Allgemeinen werden Tools und verwandte Metadaten von https://streams.canonical.com/tools gespiegelt. Es ist jedoch möglich, Metadaten für einen benutzerdefinierten Tools-Tarball manuell zu generieren.

Erstellen Sie zunächst ein Tarball der relevanten Tools und platzieren Sie es in einem Verzeichnis, das wie folgt aufgebaut ist:

<tools_dir>/tools/releases/

Generieren Sie jetzt relevante Metadaten für die Tools, indem Sie den Befehl ausführen:

juju generate-tools -d <tools_dir>

Schließlich kann der Inhalt von an einen Speicherort im Juju-Metadatensuchpfad hochgeladen werden. Wie im Abschnitt Konfiguration angegeben, kann dies an einer beliebigen Stelle durch die Einstellungen für Tools-Metadaten-URL oder den Speicherpfad der Cloud usw. festgelegt werden.

Beispiele:

  1. tools-Metadaten-URL

    • lade den Inhalt des Tools-Verzeichnisses zu http://somelocation hoch
    • setze tools-metadata-url auf http://somelocation/tools
  2. Cloud-Speicher

laden Sie Inhalte direkt in den Cloud-Speicher der Umgebung hoch

Wie bei Bildmetadaten wird der Validierungsbefehl verwendet, um sicherzustellen, dass Tools für Juju verfügbar sind:

juju metadata validate-tools

Die gleichen Kommentare gelten. Führen Sie das Validierungstool ohne Parameter aus, um Details aus der Juju-Umgebung zu verwenden, oder überschreiben Sie Werte, wie in der Befehlszeile erforderlich. Siehe juju help metadata validate-tools für weitere Einzelheiten.

Nächster Schritt:

9
Jorge Castro