[ English | Indonesia | 한국어 (대한민국) | español (México) | English (United Kingdom) | Deutsch | 中文 (简体, 中国) ]

Änderungen mit DevStack testen

Ein wichtiger Teil der Entwicklung ist natürlich die Möglichkeit, von Ihnen entwickelte Änderungen zu testen und sicherzustellen, dass sie ordnungsgemäß funktionieren. In einem komplizierten Ökosystem wie OpenStack ist es notwendig, auch die Interoperabilität Ihres Codes überprüfen zu können. Sie können eine Änderung an Cinder vornehmen, aber diese Änderung kann sich auch auf die Art und Weise auswirken, wie Nova mit den APIs von Cinder interagiert.

Entwickler benötigen eine einfache Möglichkeit, eine OpenStack-Cloud bereitzustellen, um Funktions- und Interoperabilitätstests von Änderungen durchzuführen. Dies ist der Zweck von DevStack.

Was ist DevStack?

DevStack ist ein modularer Satz von Skripten, die ausgeführt werden können, um eine grundlegende OpenStack-Cloud für die Verwendung als Demo- oder Testumgebung bereitzustellen. Die Skripte können auf einem einzelnen Knoten ausgeführt werden, der baremetal oder eine virtuelle Maschine ist. Es kann auch für die Bereitstellung auf mehreren Knoten konfiguriert werden. Die DevStack-Bereitstellung übernimmt lästige Aufgaben wie die Konfiguration des Datenbank- und Nachrichtenwarteschlangensystems und ermöglicht es Entwicklern, eine OpenStack-Cloud schnell und einfach bereitzustellen.

Standardmäßig sind die Kerndienste für OpenStack installiert, aber Benutzer können zusätzliche Dienste für die Bereitstellung konfigurieren. Alle Dienste werden von der Quelle aus installiert. DevStack zieht die Dienste vom Git-Master, es sei denn, es ist konfiguriert, um von einem stabilen Zweig (z.B. stable/pike) zu klonen.

Bemerkung

Die vollständige Dokumentation von DevStack finden Sie hier.

Holen und Konfigurieren von DevStack

Um DevStack zu erhalten, müssen Sie es aus dem devstack``Repository unter ``openstack kopieren.

git clone https://opendev.org/openstack/devstack

Es wird empfohlen, bevor Sie mit der Einrichtung von Passwörtern und IP-Adressen für die Umgebung, in der Sie DevStack ausführen, fortfahren. Dies geschieht durch die Konfiguration der Datei local.conf in DevStack.

cd ./devstack
cp ./samples/local.conf local.conf
vi ./local.conf

Um die zukünftige Interaktion mit Ihrer Bereitstellung zu vereinfachen, sollten Sie die folgenden Variablen festlegen:

  • ADMIN_PASSWORD

  • DATABASE_PASSWORD

  • RABBIT_PASSWORD

Bei einigen Distributionen müssen Sie möglicherweise auch das HOST_IP setzen. Ob dies notwendig ist, hängt davon ab, welche Namenskonvention für Netzwerkschnittstellen in Ihrem Betriebssystem verwendet wird.

Weiter unten in der Datei befindet sich der Abschnitt Using milestone-proposed branche. Dies sind die Variablen, die geändert werden können, wenn Sie einen anderen Zweig als den Master für ein oder mehrere Projekte klonen möchten.

Sobald Ihre Änderungen in local.conf gespeichert wurden, können Sie eine OpenStack-Cloud mit DevStack bereitstellen.

Bereitstellung von DevStack

Sobald Sie Ihre local.conf Datei konfiguriert haben, ist es ganz einfach, DevStack auszuführen.

Bemerkung

Der folgende Befehl muss als Benutzer mit sudo-Zugriff und NOPASSWD-Konfiguration ausgeführt werden.

./stack.sh

Bemerkung

Der obige Befehl und die nachfolgenden Befehlsbeispiele gehen davon aus, dass Sie sich noch im Stammverzeichnis Ihres DevStack-Klons befinden.

An dieser Stelle übernimmt DevStack die Vorbereitung Ihres Knotens auf die Funktion als OpenStack-Cloud. Folgendes wird durchgeführt:

  • Erforderliche Pakete (wie mysql und rabbitmq) werden installiert.

  • mysql und rabbitmq sind konfiguriert.

  • Die OpenStack-Projekte werden in /opt/stack/ geklont.

  • Alle temporären Sicherungsdateien, die zur Simulation eines Systems benötigt werden, werden in /opt/stack/data erstellt.

  • Die Datenbank jedes Projekts wird erstellt und ausgefüllt.

  • Die OpenStack-Dienste sind registriert und werden gestartet.

Ein Protokoll des stack.sh-Laufs wird in /opt/stack/stack/logs/stack.sh.log geführt.

Überprüfen der DevStack-Bereitstellung

Wenn OpenStack erfolgreich von DevStack bereitgestellt wurde, sollten Sie in der Lage sein, einen Webbrowser auf die durch HOST_IP in local.conf spezifizierte IP zu zeigen und auf Horizon zuzugreifen.

../_images/horizon-login.png

Bemerkung

Das Passwort für admin wird auf den Wert gesetzt, den Sie in Ihrer local.conf Datei für ADMIN_PASSWORD eingestellt haben.

Die Projektdienste sind alle bei systemd registriert. Jedem Dienst ist ein Präfix mit devstack@ vorangestellt. Daher können Sie durch systemd überprüfen, ob der Cinder Volume Prozess mit einem Befehl wie diesem arbeitet:

systemctl status devstack@c-vol.service

Da das System Wildcards akzeptiert, kann der Status aller mit DevStack verbundenen Dienste angezeigt werden:

systemctl status devstack@*

Protokolle für die laufenden Dienste können auch über systemd eingesehen werden. Um die Protokolle für den Cinder Volume Service anzuzeigen, kann der folgende Befehl verwendet werden:

journalctl -u devstack@c-vol.service

Eine umfassendere Referenz zur Verwendung von systemd zur Interaktion mit DevStack finden Sie auf der Seite Using Systemd in DevStack.

Änderungen mit DevStack testen

Mit DevStack Änderungen zu entwickeln und zu testen ist einfach. Die Entwicklung kann in den Projektklonen unter /opt/stack/<project name> erfolgen. Da es sich bei den Projekten um Klone des Git-Repositorys des Projekts handelt, kann ein Zweig erstellt werden und die Entwicklung kann stattfinden.

DevStack verwendet den Code in diesen Verzeichnissen, um die OpenStack-Dienste auszuführen, so dass jede Änderung getestet werden kann, indem eine Code-Änderung im Projektverzeichnis vorgenommen wird und dann der Dienst des Projekts durch systemd neu gestartet wird.

Hier ist ein Beispiel dafür, wie dieser Prozess aussehen würde. In diesem Beispiel wird eine Änderung am LVM-Treiber von Cinder vorgenommen:

cd /opt/stack/cinder/cinder/volume/drivers
vi lvm.py
*Brilliant Code Improvement Implemented*
sudo systemctl restart devstack@c-vol.service

Sobald das Testen und Entwickeln Ihrer Codeänderung abgeschlossen ist, werden Sie Ihre Codeänderung zur Überprüfung an Gerrit weiterleiten wollen. Da die Projekte in /opt/stack bereits mit dem jeweiligen Git-Repository synchronisiert sind, können Sie Git Review konfigurieren, Ihre Änderung übertragen und die Änderungen in Gerrit hochladen.

Stoppen von DevStack

Um eine DevStack-Instanz, die auf einem Knoten läuft, herunterzufahren, sollte der folgende Befehl verwendet werden:

./unstack.sh

Mit diesem Befehl wird die OpenStack-Installation bereinigt, die auf dem Knoten ausgeführt wurde. Dazu gehören:

  • Einstellung der Projektdienste, mysql und rabbitmq

  • Bereinigung von iSCSI-Volumes

  • Löschen von temporären LVM-Mounts

Das Ausführen von unstack.sh ist das erste, was man versuchen sollte, falls ein DevStack-Lauf fehlschlägt. Wenn nachfolgende Läufe fehlschlagen, kann eine gründlichere Entfernung von DevStack-Komponenten mit dem folgenden Befehl durchgeführt werden:

./clean.sh

Ein clean.sh Lauf führt die Schritte für unstack.sh plus zusätzliche Reinigung durch:

  • Entfernen von Konfigurationsdateien für Projekte aus /etc

  • Protokolldateien entfernen

  • Hypervisor-Bereinigung

  • Entfernen von .pyc-Dateien

  • Datenbankbereinigung

  • /etc/glance und /var/log/glance folgen den gleichen Regeln wie ihre nova-Pendants.