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 installieren

Beispielhafter Playbook-Lauf

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

#install some basic software
apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common dirmngr git python-pip

#add stretch-backports
echo "deb http://ftp.debian.org/debian stretch-backports main contrib non-free" > /etc/apt/sources.list.d/stretch-backports.list

#add Docker CE Repository
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

#update package lists
apt update

#install Ansible and docker
apt install -y ansible -t stretch-backports docker-ce docker-compose

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

#configure installer
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 kann es mit der Installation weiter gehen:

#changes parameters
sed -i "s|/tmp/pgdocker|/var/pgdocker|g" inventory
sed -i "s|# use_docker_compose=false|use_docker_compose=true|g" inventory
sed -i "s|#project_data_dir=/var/lib/awx/projects|project_data_dir=/var/awx_projects|g" inventory
#install awx
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.

AWX und seine Komponenten updaten

Ein Update ist dank docker-compose sehr einfach (jetzt wisst ihr auch, warum wir docker-compose weiter oben aktiviert haben):

cd /var/lib/awx/
docker-compose stop
docker-compose pull && docker-compose up --force-recreate