So installierst du Ansible Semaphore unter Debian 11
Ansible Semaphore ist eine Open-Source-Web-UI für Ansible-Playbooks. Sie ermöglicht die Bereitstellung mit Ansible-Automatisierung über einen Webbrowser. Ansible Semaphore ist ausschließlich in Go geschrieben und kann auf Linux, Windows und macOS ausgeführt werden. Ansible Semaphore ermöglicht das Deployment über Ansible von einem intuitiven und reaktionsschnellen Web-Administrations-Dashboard aus. Du kannst jederzeit ein Rollback durchführen, die Konfiguration wiederherstellen und Umgebungen, Geheimnisse, Inventare und Zugriffsschlüssel verwalten. Du kannst Playbooks nach Zeitplan mit detaillierten Protokollen und Benachrichtigungen ausführen.
Ansible Semaphore ermöglicht eine sichere Bereitstellung und Konfiguration. Es bietet eine Zugriffskontrolle, die zur Verwaltung von Benutzern verwendet werden kann und die Ausführung bestimmter Playbooks ermöglicht.
In diesem Tutorial wirst du Ansible Semaphore auf einem Debian 11 Server installieren. Du richtest Ansible Semaphore mit der neuesten Version von Ansible ein, verwendest den PostgreSQL-Server, um die Benutzerdaten zu speichern, und nutzt den Nginx-Webserver als Reverse-Proxy für die Ansible Semaphore-Webanwendungen.
Voraussetzungen
Um dieses Tutorial durchzuführen, brauchst du die folgenden Voraussetzungen:
- Einen Linux-Server mit Debian 11 – In diesem Beispiel wird ein Debian-Server mit dem Hostnamen„semaphore“ verwendet.
- Einen Nicht-Root-Benutzer mit sudo/root-Rechten – In diesem Beispiel wird der Nicht-Root-Benutzer„bob“ verwendet.
- Ein Domainname, der auf eine Server-IP-Adresse zeigt – Dieses Beispiel verwendet einen Domainnamen namens„ansible.hwdomain.io“.
Installieren der Abhängigkeiten
Zuerst installierst du einige Paketabhängigkeiten, die für die Installation von Ansible Semaphore benötigt werden. Du wirst die neueste Version von Ansible, den PostgreSQL-Datenbankserver und die Nginx-Webserver installieren. Alle diese Pakete sind standardmäßig im Debian-Repository verfügbar.
Gib zunächst den folgenden Befehl ein, um deinen Debian-Paketindex zu aktualisieren und aufzufrischen.
sudo apt update
Sobald der Paketindex aktualisiert ist, führe den folgenden apt-Befehl aus, um einige grundlegende Abhängigkeiten auf deinem System zu installieren. Gib y ein, wenn du dazu aufgefordert wirst, und drücke ENTER, um fortzufahren.
sudo apt install git curl wget software-properties-common
Als Nächstes musst du auch einige Paketabhängigkeiten installieren, die für die Ausführung von Ansible Semaphore benötigt werden. Dazu gehören die neueste Version von Ansible, der PostgreSQL Server und der Nginx Webserver. Alle diese Pakete sind standardmäßig im Debian-Repository verfügbar.
Gib den folgenden Befehl ein, um Ansible, PostgreSQL und Nginx zu installieren. Wenn du dazu aufgefordert wirst, gib y ein und drücke ENTER.
sudo apt install ansible postgresql nginx
Wenn Ansible, PostgreSQL und Nginx installiert sind, gib den folgenden Befehl ein, um den Status der PostgreSQL- und Nginx-Dienste zu überprüfen.
sudo systemctl is-enabled postgresql sudo systemctl status postgresql
Die folgende Ausgabe bestätigt, dass der PostgreSQL-Server aktiviert ist und beim Systemstart automatisch gestartet wird. Außerdem läuft er standardmäßig, nachdem die Installation abgeschlossen ist.
Nachfolgend findest du den Befehl zur Überprüfung des Nginx-Dienstes.
sudo systemctl is-enabled nginx sudo systemctl status nginx
Die folgende Ausgabe bestätigt, dass der Nginx-Webserver aktiviert ist und beim Systemstart automatisch gestartet wird. Außerdem wird er nach Abschluss der Installation standardmäßig ausgeführt.
Damit hast du die Paketabhängigkeiten für Ansible Semaphore installiert, zu denen die neueste Version von Ansible, der PostgreSQL-Datenbankserver und der Nginx-Webserver gehören.
Einrichten der PostgreSQL-Datenbank
Standardmäßig unterstützt Ansible Semaphore mehrere Datenbanken wie MySQL/MariaDB, BoldDB und den PostgreSQL-Server. Nach der Installation des PostgreSQL-Servers richtest du nun die PostgreSQL-Datenbank und den Benutzer ein, die von Ansible Semaphore verwendet werden sollen.
Melde dich in der PostgreSQL-Shell an, indem du den folgenden Befehl eingibst. Sobald du eingeloggt bist, sieht die PostgreSQL-Eingabeaufforderung wie ‚postgres=#‘ aus.
sudo -u postgres psql
Gib nun die folgenden Abfragen ein, um eine neue PostgreSQL-Datenbank und einen neuen Benutzer zu erstellen, die von Ansible Semaphore verwendet werden sollen. In diesem Beispiel wirst du einen neuen Benutzer namens„semaphore“ und die Datenbank„semaphoredb“ erstellen. Ändere auch das Passwort in dieser Abfrage.
CREATE USER semaphore WITH PASSWORD 'p4ssw0rdSemaphore'; CREATE DATABASE semaphoredb OWNER semaphore;
Als Nächstes gibst du die folgenden Abfragen ein, um die Liste der Benutzer und Datenbanken auf deinem PostgreSQL-Server zu überprüfen. Wenn die Datenbank erstellt ist, solltest du die Datenbank„semaphoredb“ in der Datenbankliste sehen. Und was den PostgreSQL-Benutzer angeht, solltest du den Benutzer„semaphore“ in der Benutzerliste sehen.
\du \l
Liste der Benutzer auf dem PostgreSQL-Server.
Liste der Datenbanken auf dem PostgreSQL-Server.
Jetzt hast du die Datenbank und den Benutzer für Ansible Semaphore erstellt. Gehe nun zum folgenden Abschnitt über, um die Installation von Ansible Semaphore zu starten.
Installation von Ansible Semaphore
Nachdem du die Paketabhängigkeiten installiert und die PostgreSQL-Datenbank sowie den Benutzer erstellt hast, installierst du als Nächstes das Ansible Semaphore-Paket. Es gibt mehrere Pakete für verschiedene Linux-Distributionen. Besuche die offizielle Ansible Semaphore GitHub Seite, um detaillierte Versionen zu erhalten.
Gib den folgenden Befehl ein, um die Debian-Paketdatei für Ansible Semaphore herunterzuladen. In diesem Beispiel lädst du die neueste Version von Ansible Semaphore von der offiziellen Ansible Semaphore GitHub Seite herunter.
VER=$(curl -s https://api.github.com/repos/ansible-semaphore/semaphore/releases/latest|grep tag_name | cut -d '"' -f 4|sed 's/v//g') wget -q https://github.com/ansible-semaphore/semaphore/releases/download/v${VER}/semaphore_${VER}_linux_amd64.deb
Sobald die Debian-Paketdatei heruntergeladen ist, solltest du die Datei„semaphore_2.8.77_linux_amd64.deb“ in deinem aktuellen Arbeitsverzeichnis sehen. Zum Zeitpunkt der Erstellung dieses Artikels ist die neueste Version von Ansible Semaphore 2.8.77.
Gib nun den folgenden dpkg-Befehl ein, um die Ansible Semaphore Debian-Paketdatei„semaphore_${VER}_linux_amd64.deb“ zu installieren.
sudo dpkg -i semaphore_${VER}_linux_amd64.deb
Sobald Ansible Semaphore installiert ist, wird die Binärdatei„semaphore“ im Verzeichnis „/usr/bin“ verfügbar sein.
Führe den folgenden Befehl aus, um den vollständigen Pfad der Binärdatei„semaphore“ zu überprüfen.
which semaphore
Führe dann die folgenden „semaphore“-Befehle aus, um die aktuelle Version von Ansible Semaphore, die auf deinem System installiert ist, und die Hilfeseite des „semaphore“-Befehls zu überprüfen.
semaphore version semaphore help
Damit ist die Ansible Semaphore installiert. Um weiterzukommen, kannst du auch eine Bash-Vervollständigung für den Befehl„semaphore“ einrichten.
Dazu installierst du zunächst das Paket„bash-completion“ mit dem unten stehenden apt-Befehl auf deinem Debian-System.
sudo apt install bash-completion
Sobald die„bash-completion“ installiert ist, öffne die Bash-Konfigurationsdatei„~/.bashrc“ mit dem folgenden nano-Editor-Befehl.
sudo nano ~/.bashrc
Füge die folgenden Konfigurationen am Ende der Zeile ein.
if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi
source <(semaphore completion bash)
Speichere und schließe die Datei, wenn du fertig bist.
Als Nächstes lädst du die Konfigurationsdatei „~/.bashrc“ erneut, gibst den Befehl „semaphore“ ein und drückst die TAB-Taste, um die Liste der verfügbaren Optionen/Parameter des Ansible Semaphore-Befehlsdienstprogramms anzuzeigen.
source ~/.bashrc semaphore TAB
Wenn die Autovervollständigung für Ansible Semaphore konfiguriert ist, solltest du die Liste der verfügbaren Parameter des Befehls wie folgt sehen.
In diesem Abschnitt hast du das Ansible Semaphore-Paket aus der Debian-Paketdatei installiert. Außerdem hast du eine Autovervollständigung für den Befehl„Semaphore“ konfiguriert. Im nächsten Schritt wirst du die Installation von Ansible Semaphore einrichten.
Ansible Semaphore konfigurieren
Nach der Installation von Ansible Semaphore richtest du deine Installation ein und konfigurierst sie mit dem Standard-PostgreSQL als Datenbankserver. Außerdem erstellst du die Konfiguration von Ansible Semaphore, die im Verzeichnis„/etc/semaphore“ gespeichert wird.
Als erstes erstellst du ein neues Konfigurationsverzeichnis„/etc/semaphore“ und verschiebst dein Arbeitsverzeichnis dorthin. In diesem Verzeichnis wird die Konfiguration von Ansible Semaphore gespeichert.
mkdir -p /etc/semaphore; cd /etc/semaphore
Gib nun den folgenden„semaphore„-Befehl ein, um die Ansible Semaphore-Installation einzurichten und zu konfigurieren.
semaphore setup
Nachdem der Befehl ausgeführt wurde, wirst du nach einigen Konfigurationen von Ansible Semaphore gefragt.
- Wähle zunächst Nummer 3, um Ansible Semaphore mit dem PostgreSQL-Datenbankserver einzurichten. Dann gibst du den Namen, den Benutzer und das Passwort der PostgreSQL-Datenbank ein.
- Als Pfad für das Playbook gibst du das neue Verzeichnis ein, z.B. „/opt/playbook“.
- Für die restlichen Konfigurationen drückst du ENTER, um die Standardeinstellungen zu übernehmen. Du kannst sie später nach Abschluss der Installation einrichten.
Als Nächstes wirst du aufgefordert, einen neuen Admin-Benutzer für Ansible Semaphore anzulegen. Gib deinen Benutzernamen, deine E-Mail-Adresse und dein Passwort ein. Wenn die Konfiguration abgeschlossen ist, solltest du eine ähnliche Ausgabe wie diese erhalten. Außerdem siehst du die generierte Ansible Semaphore-Konfigurationsdatei„/etc/semaphore/config.json„.
Damit hast du die Ansible Semaphore-Installation mit dem PostgreSQL-Datenbankserver konfiguriert und auch den Admin-Benutzer und das Passwort für Ansible Semaphore festgelegt. Außerdem hast du das Standardverzeichnis für den Playbookj-Pfad auf „/opt/semaphore“ gesetzt.
Jetzt bist du bereit, Ansible Semaphore zu starten. Im nächsten Schritt wirst du Ansible Semaphore über Systemd einrichten und ausführen.
Ansible Semaphore mit Systemd starten
In diesem Abschnitt erstellst du eine neue Systemd-Unit-Datei, die für die Verwaltung des Ansible Semaphore-Prozesses verwendet wird. So kannst du Ansible Semaphore ganz einfach mit dem systemctl-Befehlsdienstprogramm verwalten.
Erstelle eine neue systemd-Unit-Datei„/etc/systemd/system/semaphore.service“ mit dem folgenden nano-Editor-Befehl.
sudo nano /etc/systemd/system/semaphore.service
Füge die folgenden Zeilen in die Datei ein.
[Unit] Description=Semaphore Ansible Documentation=https://github.com/ansible-semaphore/semaphore Wants=network-online.target After=network-online.target [Service] Type=simple ExecReload=/bin/kill -HUP $MAINPID ExecStart=/usr/bin/semaphore service --config=/etc/semaphore/config.json SyslogIdentifier=semaphore Restart=always [Install] WantedBy=multi-user.target
Speichere die Datei und beende den Editor, wenn du fertig bist.
Gib nun den folgenden Befehl ein, um den systemd manager neu zu laden und die neue systemd unit-Datei anzuwenden. Damit kannst du nun den Ansible Semaphore-Dienst über den systemctl-Befehl starten.
sudo systemctl daemon-reload
Gib den folgenden„systemctl„-Befehl ein, um den„Semaphore„-Dienst zu starten und zu aktivieren. Er wird standardmäßig auf dem TCP-Port„3000“ ausgeführt.
sudo systemctl start semaphore sudo systemctl enable semaphore
Überprüfe dann den Dienst„Semaphore„, um sicherzustellen, dass der Dienst läuft und aktiviert ist.
sudo systemctl status semaphore
Die Ausgabe„aktiviert“ bestätigt, dass Ansible Semaphore beim Systemstart automatisch ausgeführt wird. Und der Status von Ansible Semaphore ist „running“.
Schließlich kannst du auch über deinen Webbrowser auf Ansible Semaphore zugreifen. Öffne den Webbrowser und rufe die IP-Adresse des Servers auf, gefolgt vom Standard-Port 3000 (d.h.: http://192.168.5.10:3000/). Wenn Ansible Semaphore läuft, solltest du die Anmeldeseite der Ansible Semaphore-Webanwendung sehen.
Jetzt läuft Ansible Semaphore im Hintergrund als systemd-Dienst und auf dem Standardport 3000. Im nächsten Schritt wirst du Nginx als Reverse Proxy für Ansible Semaphore einrichten.
Ansible Semaphore mit Nginx Reverse Proxy ausführen
Jetzt hast du die Installation von Ansible Semaphore abgeschlossen und es läuft jetzt auf dem Standard-Port 3000. In diesem Abschnitt wirst du Nginx als Reverse Proxy für Ansible Semaphore einrichten. Bevor du beginnst, solltest du sicherstellen, dass du den Domainnamen für deine Installation hast.
Erstelle eine neue Nginx-Server-Blockdatei „/etc/nginx/sites-available/semaphore.conf“ mit dem folgenden nano-Editor-Befehl.
sudo nano /etc/nginx/sites-available/semaphore.conf
Füge die folgenden Zeilen in die Datei ein und achte darauf, dass du den Parameter „server_name“ durch deinen Domainnamen ersetzt.
upstream semaphore { server 127.0.0.1:3000; } server { listen 80; server_name ansible.hwdomain.io; client_max_body_size 0; chunked_transfer_encoding on; location / { proxy_pass http://semaphore/; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_buffering off; proxy_request_buffering off; } location /api/ws { proxy_pass http://semaphore/api/ws; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Origin ""; } }
Speichere und schließe die Datei, wenn du fertig bist.
Gib als Nächstes den folgenden Befehl ein, um die Serverblockkonfiguration„semaphore.conf“ zu aktivieren. Überprüfe dann die Nginx-Konfigurationen, um sicherzustellen, dass du die richtigen Konfigurationsdateien hast. Wenn der Vorgang erfolgreich ist, solltest du eine Ausgabe wie„syntax is ok – test is successful“ sehen.
sudo ln -s /etc/nginx/sites-available/semaphore.conf /etc/nginx/sites-enabled sudo nginx -t
Starte abschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen. Jetzt ist die Ansible Semaphore-Installation über deinen Domainnamen erreichbar.
sudo systemctl restart nginx
UFW einrichten
In diesem Beispiel wirst du die Firewall auf deinem Debian-System über UFW installieren und aktivieren. Du wirst UFW verwenden, um die SSH-, HTTP- und HTTPS-Dienste zu öffnen.
Installiere zunächst das UFW-Paket mit dem unten stehenden apt-Befehl. Gib es ein und drücke ENTER, um fortzufahren.
sudo apt install ufw
Als nächstes führst du den folgenden Befehl aus, um die Anwendungen OpenSSH und „Nginx Full“ zur UFW hinzuzufügen. Die OpenSSH-Anwendung öffnet den standardmäßigen SSH-Port 22 und die„Nginx Full„-Anwendung öffnet sowohl HTTP- als auch HTTPS-Ports.
sudo ufw allow OpenSSH sudo ufw allow "Nginx Full"
Führe nun den folgenden Befehl aus, um das UFW zu starten und zu aktivieren. Gib y ein und bestätige mit ENTER.
sudo ufw enable
Überprüfe abschließend den Status von UFW mit dem folgenden Befehl. Du solltest die UFW mit dem „Status: Active‘ sehen; sowohl OpenSSH als auch „Nginx Full“ sind hinzugefügt und in der Regelliste verfügbar.
sudo ufw status
Sichern von Ansible Semaphore mit Letsencrypt
Nachdem du UFW konfiguriert hast, wirst du Ansible Semaphore mit SSL/TLS-Zertifikaten über Certbot und Letsencrypt einrichten und sichern. Du installierst Certbot mit dem Certbot-Nginx-Plugin und generierst dann SSL/TLS-Zertifikate von Letsencrypt.
Gib den folgenden Befehl ein, um Certbot und das Certbot-Nginx-Plugin zu installieren. Wenn du dazu aufgefordert wirst, gibst du zur Bestätigung y ein und drückst ENTER, um fortzufahren.
sudo apt install certbot python3-certbot-nginx
Sobald Certbot installiert ist, führe den folgenden Befehl aus, um SSL-Zertifikate für deinen Domainnamen zu generieren und die Ansible Semaphore-Installation zu sichern. Achte darauf, dass du die E-Mail-Adresse und den Domainnamen in diesem Befehl änderst.
sudo certbot --nginx --agree-tos --no-eff-email --redirect --email alice@hwdomain.io -d ansible.hwdomain.io
Wenn der Vorgang abgeschlossen ist, werden deine SSL/TLS-Zertifikate im Verzeichnis „/etc/letsencrypt/live/yourdomain.com/“ erzeugt. Außerdem ist Ansible Semaphore jetzt über eine sichere HTTPS-Verbindung erreichbar und leitet alle HTTP-Anfragen automatisch auf die sichere HTTPS-Verbindung um.
Öffne nun deinen Webbrowser und rufe den Domainnamen deiner Ansible Semaphore-Installation auf (z. B. https://ansible. hwdomain.io/auth/login). Wenn du Nginx richtig konfiguriert hast und SSL Letsencrypt funktioniert, solltest du die Ansible Semaphore Login-Seite sehen.
Gib deinen Admin-Benutzer und dein Passwort für Ansible Semaphore ein und bestätige dann mit SIGN IN.
Wenn du erfolgreich warst, wirst du aufgefordert, das erste Projekt für deine Installation zu erstellen. Gib den Projektnamen ein und klicke dann auf ERSTELLEN.
Nachdem das erste Projekt erstellt wurde, solltest du das Administrations-Dashboard von Ansible Semaphore sehen.
Fazit
In diesem Lernprogramm hast du Ansible Semaphore auf einem Debian 11 Server mit PostgreSQL als Datenbankserver und Nginx als Reverse Proxy für Ansible Semaphore installiert und konfiguriert. Du hast die grundlegende Nutzung von PostgreSQL zum Anlegen einer Datenbank und eines Benutzers sowie die Grundkonfiguration des Nginx-Serverblocks für den Reverse-Proxy gelernt.
Außerdem hast du die Ansible Semaphore-Installation mit UFW und SSL/TLS-Zertifikaten von Letsencrypt gesichert.
Jetzt kannst du dein Ansible Playbook über das Webadministrations-Dashboard in Ansible Semaphore integrieren. Du kannst auch mehrere Benachrichtigungssysteme über E-Mail, Slack und viele mehr einrichten. Weitere Informationen findest du in der offiziellen Dokumentation der Ansible Semaphore-Anwendung.