Comment installer AWX sur un environnement CentOS 8?
Tout d'abord, un petit mot sur Ansible et AWX :
- Ansible est un outil de gestion de configuration qui permet d'automatiser des tâches à partir de scripts. Il s'agit d'un outil qu'on ne présente plus vraiment ( même si je n'ai pas encore d'article sur le sujet 😂 ), et qui a largement fait ses preuves. Vous pourrez retrouver un bon nombre d'articles sur le sujet en effectuant quelques recherches sur internet.
je vous conseille les liens suivants :
https://xavki.blog/category/ansible/
Ou encore :
https://blog.zwindler.fr/?s=ansible
- AWX fournit une interface web utilisateur, mais aussi une API REST et un moteur de tâches basé sur Ansible. Il s'agit du projet à l'origine d'Ansible Tower, la "version" commerciale dérivée d'AWX.
Globalement l'outil vous offre la possibilté de centraliser et de mieux contrôler vos scripts Ansible ( journalisation, audit centralisé, etc ).
Cet outil possède une particularité : il se déploie avec l'aide d'un playbook Ansible et sur des environnements conteneurisés comme OpenShift, Kubernetes ou Docker.
Nous allons voir comment installer AWX sur CentOS 8 et avec Docker !
Pré-requis
Commençons tout d'abord par installer les pré-requis.
Je vais commencer avec l'ajout du dépôt EPEL sur ma machine afin d'installer une grande partie des paquets nécessaires à AWX :
https://fedoraproject.org/wiki/EPEL
👉 Pour information, je suis connecté à ma machine avec un compte utilisateur standard : centos
. J'ai ajouté ce compte au groupe sudo
au préalable. 👈
L'ajout du dépôt EPEL :
[centos@awx ~]# sudo dnf install epel-release -y
On installe les pré-requis, dont Ansible :
[centos@awx ~]# sudo dnf install git gcc gcc-c++ nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip python3 ansible
Nous allons ensuite pouvoir installer Docker. Afin de réaliser cette installation, on commence tout d'abord par ajouter le dépôt docker-ce
:
[centos@awx ~]# sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
On installe docker
avec le choix nobest
:
[centos@awx ~]# sudo dnf install docker-ce --nobest -y
Explication rapide sur l'installation avec l'option nobest
:
Red Hat seems to have somehow blocked the installation of containerd.io > 1.2.0-3.el7, which is a dependency of docker-ce. Because of this, simply running the sudo dnf install docker-ce command, won't work. As we will see in a minute, it's still possibile to workaround this problem; once docker-ce is installed, however, another problem becomes evident: as long as firewalld, the system firewall manager is enabled, DNS resolution inside docker containers does not work.
This is, of course a critical problem. However, if you still want to proceed with the installation, here are the possible methods that can be used to avoid the dependencies issues:
- Install a specific version of docker-ce which requires an installable version of the containerd.io package;
- Force the installation providing the --nobest option
- Install the latest available containerd.io rpm manually;
https://linuxconfig.org/how-to-install-docker-in-rhel-8
On démarre le daemon et on s'assure qu'il est configuré pour se lancer au démarrage de notre machine :
[centos@awx ~]# sudo systemctl start docker
[centos@awx ~]# sudo systemctl enable --now docker.service
Pour faciliter l'installation, j'ajoute mon compte au groupe docker
.
[centos@awx ~]# sudo usermod -aG docker centos
👉 Attention pour des raisons de sécurité, je déconseille d'ajouter le compte courant au groupe Docker en production👈
Pour ne rencontrer aucun souci d'interpréteur :
[centos@awx ~]# sudo alternatives --set python /usr/bin/python3
Et finalement j'installe docker-compose
pour mon utilisateur :
[centos@awx ~]# pip3 install --user docker-compose
Nous avons installé tout les pré-requis et nous allons pouvoir passer à l'installation d'AWX à l'aide du playbook
fourni.
AWX
Dans un premier temps, il faut cloner le dépôt Git
du projet :
[centos@awx ~]# git clone https://github.com/ansible/awx.git
Rendez-vous dans le dossier awx/installer
afin de configurer votre environnement :
[centos@awx ~]# cd awx/installer
Pour configurer votre installation, il faut modifier le fichier inventory
:
[centos@awx ~]# vi inventory
Quelques variables sont à modifier :
pg_username=awx
# pg_password should be random 10 character alphanumeric string, when postgresql is running on kubernetes
# NB: it's a limitation of the "official" postgres helm chart
pg_password=awxpass
...
# This will create or update a default admin (superuser) account in AWX, if not provided
# then these default values are used
admin_user=admin
admin_password=password
Enfin vous pouvez générer votre "secret" :
[centos@awx ~]# openssl rand -base64 30
xv3geKd4dF8XwRGRIXdLYqgU+kL9c+KWtuz/Rx3t
Et modifiez celui-ci dans le fichier inventory
:
# AWX Secret key
# It's *very* important that this stay the same between upgrades or you will lose the ability to decrypt
# your credentials
#secret_key=awxsecret
secret_key=xv3geKd4dF8XwRGRIXdLYqgU+kL9c+KWtuz/Rx3t
Sauvegardez votre fichier de configuration.
Avant de lancer l'installation, je vous conseille de modifier firewalld
avec ces quelques règles :
[centos@awx ~]# sudo firewall-cmd --zone=public --add-masquerade --permanent
[centos@awx ~]# sudo firewall-cmd --permanent --add-service=http
[centos@awx ~]# sudo firewall-cmd --reload
Lancez enfin le playbook qui va automatiquement configurer votre installation :
[centos@awx ~]# ansible-playbook -i inventory install.yml
Voici le résultat :
Enfin connectez-vous sur l'interface d'AWX http://<MONIP>/
!
🚩 Si vous tombez sur une page vous indiquant un upgrade de version d'AWX, aucune inquiétude. 🚩
L'installation n'est peut-être pas terminée. Vous pouvez vérifier ceci avec la commande suivante :
[centos@awx ~]# docker logs -f awx_task
Enfin après quelques minutes, vérifiez que tout fonctionne correctement :
Nous venons donc de voir comment installer AWX sur CentOS8. La procédure est relativement similaire sur les autres systèmes d'exploitation puisque AWX utilise OpenShift, Kubernetes ou Docker pour "s'installer".
Mais en réalité cet article n'est que le préambule à mon prochain article ! Et oui, cette installation s'est correctement déroulée mais aujourd'hui j'accède à mon interface AWX avec du ... HTTP... Il est bien sûr possible d'activer le HTTPS et de fournir un certificat généré préalablement à notre installation.
Mais si vous passez souvent sur le blog, vous avez peut-être compris mon intention ! Pour moi Docker + HTTPS + Certificat SSL = Traefik 😍
Nous verrons donc dans le prochain article, comment ajouter Traefik à notre installation d'AWX !
N'hésitez pas à permettre au blog de continuer à exister et à fournir un contenu de qualité - enfin je l'espère - au travers de vos dons sur : buymeacoff.ee/lfache
Et n'hésitez pas à m'apporter des remarques ou des commentaires sur Twitter, ou ici 👇