Ein Kunde benötigte kürzlich Unterstützung bei der Automatisierung seiner PostgreSQL-Installation mit Ansible. EDBs edb-ansible Collection bietet alle erforderlichen Funktionen und wurde von mir verwendet, um die benötigten Playbooks bereitzustellen. Zunächst musste ich mich mit einem Problem auseinandersetzen: Mein Notebook läuft unter Windows 10. Daher beschloss ich, mich mit einer kleinen Linux-VM zu behelfen, die mit Vagrant und Virtualbox erstellt wurde. In diesem Blogbeitrag möchte ich die Schritte zeigen, die implementiert werden, um eine sofort einsatzbereite Umgebung zu haben.

Das Vagrantfile mit dem Bootstrap-Skript ist in meinem Github Repository verfügbar.

Vagrant VM-Konfiguration

Zunächst beginne ich mit der VM und ihrer Konfiguration im Vagrantfile. Die Datei hat sich im Laufe der Zeit weiterentwickelt und bietet die Möglichkeit, mehrere VMs zu erstellen. In diesem Fall benötige ich nur eine VM, die server8 genannt wird, Ubuntu ausführt und 3 CPU-Kerne, 8 GB RAM und eine statische IP-Adresse verwendet.

Copy to Clipboard

Aus Komfortgründen werden zwei Vagrant-Plugins verwendet. vagrant-vbguest installiert automatisch die VirtualBox Guest Additions und vagrant-hostmanager modifiziert die hosts-Datei des Hosts und der VM, um die Auflösung von Multi-Machine-Umgebungen zu ermöglichen.

Copy to Clipboard

Der Rest des Skripts durchläuft alle konfigurierten VMs, in diesem Fall nur einmal, und stellt die VM bereit. Ein gemeinsamer Satz von Konfigurationsoptionen wird immer verwendet, z.B. USB deaktivieren.

Copy to Clipboard

Das Bootstrap-Skript wird am Ende der Datei aufgerufen. Es kapselt die benutzerdefinierten Anwendungen ein, die für dieses kleine Projekt installiert werden sollen.

Copy to Clipboard

Bootstrap-Skript

Lassen Sie uns die Details des Bootstrap-Skripts betrachten, das lediglich ein Bash-Skript ist. Zunächst wird die Liste aller verfügbaren Pakete aktualisiert und anschließend werden alle installierten Pakete aktualisiert.

Copy to Clipboard

Basierend auf der Docker-Dokumentation wird das Convenience-Skript ausgeführt, um Docker zu installieren. Der Benutzer vagrant wird der Gruppe docker hinzugefügt, um Container ausführen zu können.

Copy to Clipboard

Der nächste Codeblock stellt sicher, dass die neueste Version des Docker Compose Plugins installiert wird. Dies ist eine Voraussetzung, um die Tests für die edb-ansible Collection durchzuführen.

Copy to Clipboard

Schließlich werden die Pakete make, Git-Client, Pip für Python3 und Ansible installiert.

Copy to Clipboard

Führen Sie den Befehl vagrant up aus und stellen Sie die VM bereit. Verbinden Sie sich per SSH mit der VM mit dem Standard-Vagrant-SSH-Schlüssel oder verwenden Sie vagrant ssh.

Copy to Clipboard

Ansible Collection-Test

Das edb-ansible Repository enthält die Dokumentation für Entwicklung und Tests.

Die folgenden Schritte dienen nur zur Überprüfung, ob die VM funktioniert.

Copy to Clipboard

Erstellen Sie eine lokale Collection-Zip-Datei mit make.

Copy to Clipboard

Wechseln Sie in das Testverzeichnis und installieren Sie die Anforderungen mit Pip.

Copy to Clipboard

Die verschiedenen Rollen erfordern entweder ein kostenloses Konto für das EDB-Repository oder verwenden das Repository der Postgres Development Group.

In diesem Beispiel wird das EDB-Repository verwendet, um den Testfall zur Initialisierung eines Clusters auf Ubuntu 20 auszuführen. In der Testdokumentation finden Sie eine vollständige Liste der Funktionen und wie Sie testen können.

Copy to Clipboard

Überprüfen Sie die Protokollausgabe, um einen erfolgreichen Durchlauf zu bestätigen.

Copy to Clipboard

Im Falle eines Fehlers, bereinigen Sie den fehlgeschlagenen Test oder beginnen Sie mit der Fehlersuche.

Copy to Clipboard

Sie sind jetzt bereit, zur edb-ansible-Collection beizutragen.

Blog Dirk Aumüller

Dirk Aumüller

Dirk Aumueller arbeitet als Associate Partner für die Proventa AG. Sein technologischer Schwerpunkt liegt bei Datenbankarchitekturen mit PostgreSQL sowie Data Management Lösungen mit Pentaho. Zusätzlich zu seinen Datenbanktransformations-Projekteinsätzen ist er regelmäßig als PostgreSQL Trainer unterwegs und betreut Studenten bei ihren Abschlussarbeiten. Seine fachlichen Erfahrungen erstrecken sich über die Branchen Telco und Financial Services.