23.03.2020: Die Anleitung funktioniert nun mit AWX 9.3.0

Wer mit Ansible Core arbeitet, arbeitet normalerweise auf der Kommandozeile. Was bei kleinen Projekten noch ok ist, stößt in größeren Umgebungen schnell an seine Grenzen, beispielsweise wenn dynamische Inventories, automatisches Holen der Playbooks aus Repositories und so weiter und so fort gefragt sind. 

Klar, das alles kann man sich irgendwie basteln, Red Hat bietet allerdings auch eine web-basierten Aufsatz namens Ansible Tower an, der einige spannende - u.a. die oben genannten - Funktionen anbietet.

Im Herbst 2017 entschied man sich, den Ansible Tower in einem Open-Source-Projekt namens AWX zu veröffentlichen - Details kann man bei Interesse hier nachlesen - so dass man diese Funktionen nun auch ohne Kauf einer Lizenz nutzen kann.

AWX (Ansible) auf Debian 10 Buster installieren

Beispielhafter Playbook-Lauf

Der Artikel zeigt kurz die nötigen Schritte der Installation von AWX unter Debian GNU/Linux 10 "Buster".

#install required packages
apt install -y  git python3-pip docker docker-compose

#change default version of python to version 3
update-alternatives --install /usr/bin/python python /usr/bin/python3 2

#install ansible via pip3 (installing ansible from repositories would result in errors, see https://github.com/ansible/ansible/issues/37640)
apt -y remove ansible
pip3 install ansible

#clone awx repository
cd ~
git clone https://github.com/ansible/awx/
cd ~/awx/installer

Nun müssen wir das Inventory-File an unsere Gegebenheiten anpassen.

Für erste Testzwecke kann man sicher erstmal die Defaults übernehmen, sollte sicher aber bewusst sein, dass hier sehr unsichere Passwörter z.B. für die Datenbank vergeben werden. Auch ist /tmp beim "postgres_data_dir" vielleicht nicht der beste Ort.

Nach Bearbeiten des Inventory-File wird die Installation mit Ansible gestartet.

#set some parameters
sed -i "s|postgres_data_dir=\"~/.awx/pgdocker\"|postgres_data_dir=\"/awx/pg\"|g" inventory
sed -i "s|docker_compose_dir=\"~/.awx/awxcompose\"|docker_compose_dir=\"/awx/compose\"|g" inventory
sed -i "s|#project_data_dir=/var/lib/awx/projects|project_data_dir=/awx/projects|g" inventory

#start installation
ansible-playbook install.yml -i inventory

Wenn hier keine Fehler kamen, kann dann im Browser den Hostname der Maschine eingeben und sich mit dem Benutzer "admin" und dem Passwort "password" einloggen und loslegen.

Was tun bei Fehlern?

  1. Fehler:
    "TASK [local_docker : Start the containers] ....
    fatal: [localhost]: FAILED! => {"changed": false, "errors": [], "module_stderr": "", "module_stdout": "", "msg": "Error starting project 404 Client Error: Not Found (\"b'manifest for ansible/awx_web:9.3.0 not found'\")"}"

    Ursachenfindung: Auf Github die Releases prüfen, in meinem Fall war hier das Release 9.3.0 schlicht noch nicht veröffentlicht.
    Lösung: Nach dem Clonen des Repos ins Verzeichnis "awx" wechseln und in diesem Fall das 9.2.0 Release verwenden: "git checkout tags/9.2.0"