Comment installer Ansible AWX sur CentOS 8

AWX signifie « Ansible Web eXecutable » est un projet libre et open-source qui te permet de gérer et de contrôler facilement ton projet Ansible. Il fournit une interface utilisateur basée sur le Web et un moteur de tâches construit au-dessus d’Ansible. Il fournit une puissante API REST et te permet de gérer ou de synchroniser l’inventaire avec d’autres sources de cloud, de contrôler l’accès et de l’intégrer à LDAP.

Dans ce tutoriel, nous allons te montrer comment installer Ansible AWX avec Docker sur CentOS 8.

Conditions préalables

  • Un serveur exécutant CentOS 8 avec au moins 4 Go de RAM.
  • Un mot de passe root est configuré sur ton serveur.

Pour commencer

Avant de commencer, tu dois installer le référentiel EPEL dans ton système. Tu peux l’installer avec la commande suivante :

dnf install epel-release -y

Ensuite, tu devras installer certains paquets supplémentaires nécessaires pour exécuter AWX sur ton système. Tu peux les installer tous avec la commande suivante :

dnf install git gcc gcc-c++ ansible nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip -y

Une fois que tous les paquets sont installés, tu peux passer à l’étape suivante.

Installe Docker et Docker Compose

Ensuite, tu devras installer Docker pour exécuter AWX dans un conteneur Docker. Par défaut, la dernière version de Docker n’est pas disponible dans le référentiel par défaut de CentOS 8. Tu devras donc ajouter le dépôt Docker dans ton système. Tu peux ajouter le dépôt Docker avec la commande suivante :

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Une fois ajouté, installe la dernière version stable de Docker avec la commande suivante :

dnf install docker-ce-3:18.09.1-3.el7 -y

Une fois que Docker a été installé, vérifie la version installée de Docker avec la commande suivante :

docker --version

Tu devrais obtenir la sortie suivante :

Docker version 19.03.7, build 7141c199a2

Ensuite, démarre le service Docker et active-le pour qu’il démarre après le redémarrage du système avec la commande suivante :

systemctl start docker
systemctl enable docker

Tu peux vérifier l’état du service Docker avec la commande suivante :

systemctl status docker

Tu devrais obtenir la sortie suivante :

? docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-03-11 02:36:04 EDT; 23min ago
     Docs: https://docs.docker.com
 Main PID: 5882 (dockerd)
    Tasks: 101
   Memory: 2.6G
   CGroup: /system.slice/docker.service
           ??5882 /usr/bin/dockerd -H fd://
           ??5899 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
           ??8815 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/4b91575d64b1b>
           ??8847 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/0f36c9784f748>
           ??8894 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.5 -container-port 8052
           ??8899 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/47300ec1c26ff>
           ??8923 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/9827b9831fa5b>
           ??9631 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/166b153faa275>

Ensuite, installe la composition Docker à l’aide de la commande suivante :

pip3 install docker-compose

Une fois installé, vérifie la version de Docker compose à l’aide de la commande suivante :

docker-compose --version

Tu devrais voir la sortie suivante :

docker-compose version 1.25.4, build unknown

Enfin, exécute la commande suivante pour définir la commande python afin d’utiliser python 3 :

alternatives --set python /usr/bin/python3

Installer Ansible AWX

Tout d’abord, télécharge la dernière version d’Ansible AWX depuis le dépôt Git Hub à l’aide de la commande suivante :

git clone https://github.com/ansible/awx.git

Ensuite, génère une clé secrète pour le chiffrement du fichier d’inventaire à l’aide de la commande suivante :

openssl rand -base64 30

Tu devrais obtenir le résultat suivant :

R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgp

Remarque : Souviens-toi de la clé secrète ci-dessus, tu devras la coller dans le fichier d’inventaire.

Ensuite, change le répertoire en awx/installer/ et modifie le fichier d’inventaire :

cd awx/installer/
nano inventory

Change les lignes suivantes :

[all:vars]
dockerhub_base=ansible
awx_task_hostname=awx
awx_web_hostname=awxweb
postgres_data_dir="/var/lib/pgdocker"
host_port=80
host_port_ssl=443
docker_compose_dir="~/.awx/awxcompose"
pg_username=awx
pg_password=awxpass
pg_database=awx
pg_port=5432
pg_admin_password=password
rabbitmq_password=awxpass
rabbitmq_erlang_cookie=cookiemonster
admin_user=admin
admin_password=password
create_preload_data=True
secret_key=R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgp
awx_official=true
awx_alternate_dns_servers="8.8.8.8,8.8.4.4"
project_data_dir=/var/lib/awx/projects

Sauvegarde et ferme le fichier lorsque tu as terminé. Ensuite, crée un répertoire pour Postgres :

mkdir /var/lib/pgdocker

Enfin, exécute la commande suivante pour installer AWX :

ansible-playbook -i inventory install.yml

Une fois l’installation terminée avec succès, tu devrais obtenir la sortie suivante :

skipping: [localhost]

TASK [local_docker : Load web image] **********************************************************************************************************
skipping: [localhost]

TASK [local_docker : Load task image] *********************************************************************************************************
skipping: [localhost]

TASK [local_docker : Set full image path for local install] ***********************************************************************************
skipping: [localhost]

TASK [local_docker : Set DockerHub Image Paths] ***********************************************************************************************
ok: [localhost]

TASK [local_docker : Create ~/.awx/awxcompose directory] **************************************************************************************
changed: [localhost]

TASK [local_docker : Create Docker Compose Configuration] *************************************************************************************
changed: [localhost] => (item=environment.sh)
changed: [localhost] => (item=credentials.py)
changed: [localhost] => (item=docker-compose.yml)
changed: [localhost] => (item=nginx.conf)

TASK [local_docker : Render SECRET_KEY file] **************************************************************************************************
changed: [localhost]

TASK [local_docker : Start the containers] ****************************************************************************************************
changed: [localhost]

TASK [local_docker : Update CA trust in awx_web container] ************************************************************************************
changed: [localhost]

TASK [local_docker : Update CA trust in awx_task container] ***********************************************************************************
changed: [localhost]

PLAY RECAP ************************************************************************************************************************************
localhost                  : ok=14   changed=6    unreachable=0    failed=0    skipped=95   rescued=0    ignored=0   

La commande ci-dessus créera et démarrera tous les conteneurs Docker requis pour AWX. Tu peux vérifier les conteneurs en cours d’exécution avec la commande suivante :

docker ps

Tu devrais voir la sortie suivante :

CONTAINER ID        IMAGE                        COMMAND                  CREATED              STATUS              PORTS                                                 NAMES
4b91575d64b1        ansible/awx_task:9.2.0       "/tini -- /bin/sh -c…"   About a minute ago   Up About a minute   8052/tcp                                              awx_task
9827b9831fa5        ansible/awx_web:9.2.0        "/tini -- /bin/sh -c…"   About a minute ago   Up About a minute   0.0.0.0:80->8052/tcp                                  awx_web
47300ec1c26f        postgres:10                  "docker-entrypoint.s…"   About a minute ago   Up About a minute   5432/tcp                                              awx_postgres
166b153faa27        ansible/awx_rabbitmq:3.7.4   "docker-entrypoint.s…"   About a minute ago   Up 58 seconds       4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp   awx_rabbitmq
0f36c9784f74        memcached:alpine             "docker-entrypoint.s…"   About a minute ago   Up About a minute   11211/tcp                                             awx_memcached

Configurer SELinux et le pare-feu

Par défaut, SELinux est activé dans CentOS 8. Il est recommandé de le désactiver pour faire fonctionner AWX dans l’environnement Docker. Tu peux le désactiver en modifiant le fichier suivant :

nano /etc/sysconfig/selinux

Trouve la ligne suivante :

SELINUX=enforcing

Et, remplace-la par la ligne suivante :

SELINUX=disabled

Sauvegarde et ferme le fichier lorsque tu as terminé. Ensuite, redémarre ton système pour appliquer les modifications. Ensuite, tu devras autoriser le service http et https via firewalld. Tu peux les autoriser avec la commande suivante :

firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

Ensuite, redémarre le service firewalld pour appliquer les changements :

firewall-cmd --reload

Accéder à l’interface Web de l’AWX

Maintenant, ouvre ton navigateur Web et tape l’URL http://your-server-ip. Tu seras redirigé vers la page de connexion de l’AWX :

Connexion Ansible AWX

Indique ton nom d’utilisateur et ton mot de passe admin que tu as définis dans le fichier d’inventaire et clique sur le bouton SIGN IN. Tu devrais voir le tableau de bord par défaut de l’AWX sur la page suivante :

Interface Ansible AWX

Conclusion

Félicitations ! Tu as réussi à installer AWX avec Docker sur CentOS 8. Tu peux maintenant gérer et contrôler ton projet Ansible facilement à l’aide de l’interface Web de l’AWX.

Vous aimerez aussi...