AWX est un frontend pour piloter Ansible. Il s’agit de la version opensource de Tower qui lui, est stabilisé avec mise à disposition d’un support.

A propos de cet article

Je vous donne ici les instructions pour installer Ansible et AWX sur une debian buster 64 bits.

Pour information, j’ai utilisé un container LXC (Proxmox 6). L’utilisation de docker dans un container « non-privilégié » est possible en ajoutant les lignes suivantes dans la config /etc/pve/lxc/XXXXX.conf :

unprivileged: 1
lxc.apparmor.profile: unconfined
lxc.cgroup.devices.allow: a
lxc.cap.drop:

Toutes les commandes si dessous se font en root.

Ansible

Prérequis

Installons le nécessaire pour ajouter une clé et l’usage de https dans les dépôts.

apt update
apt dist-upgrade
apt -y install gnupg2 apt-transport-https

Installation

Ajoutons le dépôt de chez launchpad et installons ansible. La version installée devrait correspondre sensible à la 2.8.6 (au 2019-10-25)

echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu bionic main" | tee /etc/apt/sources.list.d/ansible.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
apt update
apt install -y ansible
ansible --version

AWX

Pre-requis

On ajoute le dépot et on install docker-ce. La version installée devrait correspondre sensible à la 19.03.4 (au 2019-10-25)

echo "deb [arch=amd64] https://download.docker.com/linux/debian buster stable" | tee /etc/apt/sources.list.d/docker-ce.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8
apt update
apt install -y docker-ce
docker --version

Je désactive l’IPV6 afin d’être sûr que AWX écoutera sur l’interface IPV4 (et je ne m’en sert pas entre mes VM).

cat <<EOF > /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.default.autoconf = 0
EOF
sysctl -p

Installons un générateur de mot de passe et docker-compose (Ce sera celui des dépôt debian officiels)

apt -y git pwgen docker-compose

AWX

Récupérons AWX

cd ~
git clone --depth 50 https://github.com/ansible/awx.git

Configurons quelques valeurs

cd awx/installer
sed -i "s|docker_compose_dir=.*$|docker_compose_dir=/var/lib/awx|g" inventory
sed -i "s|^#project_data_dir=.*$|project_data_dir=/var/awx_projects|g" inventory
sed -i "s|^postgres_data_dir=.*$|postgres_data_dir=/var/pgdocker|g" inventory
sed -i "s|^secret_key=.*$|secret_key=$(pwgen -N 1 -s 30)|g" inventory
sed -i "s|^pg_admin_password=.*$|pg_admin_password=$(pwgen -N 1 -s 30)|g" inventory
sed -i "s|^pg_password=.*$|pg_password=$(pwgen -N 1 -s 30)|g" inventory
sed -i "s|^rabbitmq_password=.*$|rabbitmq_password=$(pwgen -N 1 -s 30)|g" inventory

Lonçons la création des containers AWX

ansible-playbook -i inventory install.yml

Note : Pour ma part, j’ai du relancer cette commande 2 fois car j’ai eu un timeout, je n’ai pas noté si il venais de mon système trop lent ou de ma connexion internet.

Comptez 24Go pour AWX, il va occuper pas mal d’espace docker (/var/lib/docker) pour ses 5 VM :

root@ansible:/var/lib/awx# docker-compose ps
     Name                   Command               State                               Ports
 awx_memcached   docker-entrypoint.sh memcached   Up      11211/tcp
 awx_postgres    docker-entrypoint.sh postgres    Up      5432/tcp
 awx_rabbitmq    docker-entrypoint.sh /bin/ …   Up      15671/tcp, 15672/tcp, 25672/tcp, 4369/tcp, 5671/tcp, 5672/tcp
 awx_task        /tini -- /bin/sh -c /usr/b …   Up      8052/tcp
 awx_web         /tini -- /bin/sh -c /usr/b …   Up      0.0.0.0:80->8052/tcp

Voilà, à partir de là, vous pouvez vous y connecter avec votre navigateur sur le port 80 et les identifiants à changer de suite : admin / password

Pour les mises à jour

Les mises à de Ansible se feront par le gestionnaire de paquet Debian.

Pour AWX, il faudra lancer ces commandes :

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