Login
Newsletter
Werbung

Do, 26. Januar 2017, 15:00

Mit Ansible eine WSGI-Applikation auf entfernten Rechnern aufsetzen

Software für das Konfigurationsmanagement (KM) spielt im fortschrittlichen IT-Betrieb eine wichtige Rolle und wird vielseitig eingesetzt. Hier wird eine Anwendung von Ansible präsentiert.

Moderne Werkzeuge ermöglichen es etwa, mit einem einzigen Skript per Fernwartung über SSH auf einem oder auch mehreren Rechnern automatisiert einen Apache-Webserver aufzusetzen, PHP zu installieren, eine SQL-Datenbank einzurichten und eine vorkonfigurierte Wordpress-Instanz darauf in Betrieb zu nehmen (siehe z.B. M. Heap, »Ansible – from beginner to pro«, Apress 2016).

Einzeloperationen lassen sich dabei oftmals zusammenfassen: ein bestimmter Konfigurationszustand soll auf einem bestimmten Server hergestellt werden und die Software setzt die dafür erforderlichen Einzelschritte selbstständig um (auch beispielsweise Dienste deaktivieren und Software deinstallieren). Administratoren sparen sich mit solchen Automatisierungen wiederkehrende Kleinarbeit, es lassen sich damit aber auch große komplizierte Serverlandschaften effektiv kontrollieren, in denen Rechnergruppen mit unterschiedlichen Konfigurationen für verschiedene Aufgaben betrieben werden (Stichwort: Orchestrierung).

KM-Frameworks wie Puppet, Chef und Salt/Saltstack finden sich mittlerweile als maßgebliche Bausteine in den Bereichen Cloud-Computing und »Devops« (damit ist oft zukunftsweisende IT an sich gemeint, es handelt sich aber eigentlich um eine Methode der Softwareauslieferung, bei der die Trennung zwischen Entwicklung und IT-Betrieb aufgehoben wird). Im Englischen spricht man dabei von »Provisioning«-Werzeugen, und es handelt sich um die Anwendungsklasse »Infrastructure-as-code« (IaC).

Ansible

Bei Ansible handelt es sich um ein weiteres KM-System. Es wird seit 2012 entwickelt. Die Software gewinnt zunehmend an Bedeutung gegenüber den großen etablierten Lösungen wie zum Beispiel Puppet, dem oft vorgeworfen wird, in der Zwischenzeit (es wird seit 2005 entwickelt) viel zu komplex geworden zu sein. Im Gegensatz zu Puppet arbeitet Ansible ohne Client bzw. dedizierten Agenten auf den administrierten Maschinen, was dem Aufwand zugute kommt: es muss lediglich auf dem Kontrollknoten vorhanden sein und aktuell gehalten werden. Weiterhin verfolgt Ansible einen imperativen Ansatz (»wie«), während Puppet deklarativ (»was«) auf einem gehobenen Abstraktionsgrad operiert, was als Nachteil für das Debugging angesehen wird.

Grundmerkmale

Ansible ermöglicht die Verteilung bzw. Installation von Software auf entfernten Servern, den »Hosts«, die Ausführung von Befehlen darauf, sowie das Management von Konfigurationsdateien. Die ferngesteuerten Systeme müssen lediglich eine aktuelle Python-Version verfügbar halten und per SSH erreichbar sein. Während Systembefehle auch unmittelbar über SSH ausgeführt werden können, spielt Ansible sich etwa für die Veränderung von Konfigurationsdateien zur Laufzeit auf dem Host ein und entfernt seine Komponenten nach Beendigung einer Konfigurations-Session wieder.

Installation

Ansible ist für viele Linux-Distributionen als Paket verfügbar, welches mit dem jeweiligen Paketmanager installiert werden kann. Da Ansible eine Python-Anwendung ist, ist es aber auch aus dem Python Package Index mit dem Installationswerkzeug pip systemübergreifend beziehbar.

Ansible ist eine Kommandozeilen-Anwendung, deren Werkzeuge ohne zusätzliche Konfiguration direkt nach der Installation benutzt werden können. Die Software steht unter GPL3-Lizenz und läuft zur Zeit noch auf Python 2, was für den Endbenutzer aber nur eine untergeordnete Rolle spielt. Python-Kenntnisse sind jedoch keine Voraussetzung für den Umgang mit Ansible.

Beispiel

Dieser Workshop ist eine kurz gefasste Einführung in die Arbeit mit Ansible. Als Beispiel wird gezeigt, wie mit dem KM-Werkzeug auf einem entfernten Server eine einfache WSGI-Applikation in eine Apache Webserver-Installation eingebunden und so im Netz verfügbar gemacht werden kann.

Bei der Beispiel-Applikation handelt es sich um Httpbin von Runscope. Das ist ein kleiner Testserver, der für die Entwicklung von Web-Software eine Reihe von vorgefertigten HTTP-Endpunkten bereithält: unter der URL http://<adresse>>/user-agent zum Beispiel gibt Httpbin bei Bedarf das verwendete Client-Programm zurück, etwa den verwendeten Browser. WSGI ist eine weit verbreitete Schnittstelle, mit der Python-Programme (Httpbin ist in Python implementiert) von Webservern ausgeführt werden können (siehe freiesMagazin 02/2011, »Bottle – ein WSGI-Microframework für Python«).

Als Grundlage dient eine frische Basisinstallation des aktuellen Debian GNU/Linux 8 »Jessie« (8.6) auf einem Beispiel-Host. In einem ersten Schritt muss die Installation zunächst auf den Testing-Zweig umgestellt werden, denn das Debian-Paket von Httpbin ist relativ neu und erscheint erst im kommenden Release.

Danach werden die benötigten Apache-Pakete (apache2 und libapache2-mod-wsgi) installiert und der Webserver in Betrieb genommen, dann das Paket python-httpbin installiert und der Testserver daraus eingebunden. Dafür müssen zwei Konfigurationsdateien aufgespielt und per Fernsteuerung ein paar Handgriffe vorgenommen werden. Jeder einzelne Schritt wird dabei in Ansible vorkonfiguriert, sodass der gesamte Prozess mit einem einzigen Befehl vom Kontrollrechner aus auf jedem ähnlichen Server automatisiert und reproduzierbar abgewickelt werden kann.

Kommentare (Insgesamt: 1 || Alle anzeigen )
Vielen Dank (Mike11, Fr, 27. Januar 2017)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung