AWX signifie "Ansible Web eXecutable" est un projet gratuit et open source qui vous permet de gérer et de contrôler facilement votre projet Ansible. Il fournit une interface utilisateur Web et un moteur de tâches construits sur Ansible. Il fournit une API REST puissante et vous permet de gérer ou de synchroniser l'inventaire avec d'autres sources cloud, de contrôler l'accès et de s'intégrer à LDAP.
Dans ce tutoriel, nous allons vous montrer comment installer Ansible AWX avec Docker sur CentOS 8.
Prérequis
- Un serveur exécutant CentOS 8 avec au moins 4 Go de RAM.
- Un mot de passe root est configuré sur votre serveur.
Mise en route
Avant de commencer, vous devrez installer le référentiel EPEL sur votre système. Vous pouvez l'installer avec la commande suivante :
dnf install epel-release -y
Ensuite, vous devrez installer certains packages supplémentaires nécessaires pour exécuter AWX sur votre système. Vous pouvez tous les installer avec la commande suivante :
dnf install git gcc gcc-c++ ansible nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip -y
Une fois tous les packages installés, vous pouvez passer à l'étape suivante.
Installer Docker et Docker Compose
Ensuite, vous devrez installer Docker pour exécuter AWX dans le 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. Vous devrez donc ajouter le référentiel Docker dans votre système. Vous pouvez ajouter le référentiel Docker avec la commande suivante :
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Une fois ajouté, installez la dernière version stable de Docker avec la commande suivante :
dnf install docker-ce-3:18.09.1-3.el7 -y
Une fois le Docker installé, vérifiez la version installée de Docker avec la commande suivante :
docker --version
Vous devriez obtenir le résultat suivant :
Docker version 19.03.7, compilation 7141c199a2
Ensuite, démarrez le service Docker et activez-le après le redémarrage du système avec la commande suivante :
systemctl start docker
systemctl enable docker
Vous pouvez vérifier l'état du service Docker avec la commande suivante :
menu fixe d'état systemctl
Vous devriez obtenir le résultat suivant :
? docker.service - Moteur de conteneur d'applications Docker chargé :chargé (/usr/lib/systemd/system/docker.service ; désactivé ; préréglage du fournisseur :désactivé) Actif :actif (en cours d'exécution) depuis le mer. 2020-03-11 02:36:04 EDT; Il y a 23min Docs :https://docs.docker.com PID principal :5882 (dockerd) Tâches :101 Mémoire :2,6 G 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 contiennent erd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/166b153faa275>
Ensuite, installez Docker compose à l'aide de la commande suivante :
pip3 install docker-compose
Une fois installé, vérifiez la version de Docker compose à l'aide de la commande suivante :
docker-compose --version
Vous devriez voir le résultat suivant :
docker-compose version 1.25.4, build inconnu
Enfin, exécutez la commande suivante pour définir la commande python afin qu'elle utilise python 3 :
alternatives --set python /usr/bin/python3
Installer Ansible AWX
Tout d'abord, téléchargez la dernière version d'Ansible AWX à partir du référentiel Git Hub à l'aide de la commande suivante :
cloner git https://github.com/ansible/awx.git
Ensuite, générez une clé secrète pour le chiffrement du fichier d'inventaire avec la commande suivante :
openssl rand -base64 30
Vous devriez obtenir le résultat suivant :
R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgp
Remarque :N'oubliez pas les secrets ci-dessus, vous devrez les coller dans le fichier d'inventaire.
Ensuite, changez le répertoire en awx/installer/ et modifiez le fichier d'inventaire :
cd awx/installer/
nano inventaire
Modifiez les lignes suivantes :
[all:vars]dockerhub_base=ansibleawx_task_hostname=awxawx_web_hostname=awxwebpostgres_data_dir="/var/lib/pgdocker"host_port=80host_port_ssl=443docker_compose_dir="~/.awx/awxcompose"pg_username=awxpg_password=awxpasspg_database=awxrab32pg_password=54444 awxpassrabbitmq_erlang_cookie=cookiemonsteradmin_user=adminadmin_password=passwordcreate_preload_data=Truesecret_key=R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgpawx_official=trueawx_alternate_dns_servers="8.8.8.8,8.8.4.4"project_data_dir=/var//libEnregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, créez un répertoire pour Postgres :
mkdir /var/lib/pgdockerEnfin, exécutez la commande suivante pour installer AWX :
ansible-playbook -i inventaire install.ymlUne fois l'installation terminée avec succès, vous devriez obtenir le résultat suivant :
ignorer :[localhost]TASK [local_docker :charger l'image Web] ********************************** ****************************************************** **********************en sautant :[localhost]TASK [local_docker :Charger l'image de la tâche] *************** ****************************************************** ****************************************en sautant :[localhost]TASK [local_docker :Set chemin complet de l'image pour l'installation locale] *********************************************** ****************************************en sautant :[localhost]TASK [local_docker :Set Chemins d'accès aux images DockerHub] ********************************************** *************************************************d'accord :[localhost]TASK [local_docker :Créer le répertoire ~/.awx/awxcompose] ********************************* ****************************************************** ***modifié :[localhost]TASK [local_docker :Créer une configuration Docker Compose] ********************************* ****************************************************** **modifié :[localhos t] => (item=environment.sh)modifié :[localhost] => (item=credentials.py)modifié :[localhost] => (item=docker-compose.yml)modifié :[localhost] => (item =nginx.conf)TASK [local_docker :rendre le fichier SECRET_KEY] ************************************* ****************************************************** ***********modifié :[localhost]TASK [local_docker :démarrer les conteneurs] ************************** ****************************************************** ************************modifié :[localhost]TASK [local_docker :mettre à jour l'approbation de l'autorité de certification dans le conteneur awx_web] ********** ****************************************************** ************************modifié :[localhost]TASK [local_docker :mettre à jour l'approbation de l'autorité de certification dans le conteneur awx_task] ********** ****************************************************** *********************** modifié :[localhost] PLAY RECAP ******************** ****************************************************** ****************************************************** ************localhost :ok=14 changer d=6 inaccessible=0 échoué=0 ignoré=95 sauvé=0 ignoré=0La commande ci-dessus créera et démarrera tous les conteneurs Docker requis pour AWX. Vous pouvez vérifier les conteneurs en cours d'exécution avec la commande suivante :
docker psVous devriez voir le résultat suivant :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES4b91575d64b1 ansible/awx_task:9.2.0 "/tini -- /bin/sh -c…" Il y a environ une minute Up Environ une minute 8052/tcp awx_task9827b9831fa5 ansible/awx_web:9.2.0 "/tini -- /bin/sh -c…" Il y a environ une minute Up Environ une minute 0.0.0.0:80->8052/tcp awx_web47300ec1c26f postgres:10 "docker-entrypoint.s…" Il y a environ une minute Up Environ un minute 5432/tcp awx_postgres166b153faa27 ansible/awx_rabbitmq:3.7.4 "docker-entrypoint.s…" Il y a environ une minute Jusqu'à 58 secondes 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp awx_rabbitm978f36:"docker-entrypoint.s…" Il y a environ une minute minute 11211/tcp awx_memcachedConfigurer 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. Vous pouvez le désactiver en éditant le fichier suivant :
nano /etc/sysconfig/selinuxRecherchez la ligne suivante :
SELINUX=appliquerEt remplacez-le par la ligne suivante :
SELINUX=désactivéEnregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez votre système pour mettre en œuvre les modifications. Ensuite, vous devrez autoriser les services http et https via firewalld. Vous pouvez les autoriser avec la commande suivante :
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add- service=httpsEnsuite, redémarrez le service firewalld pour appliquer les modifications :
firewall-cmd --reloadAccéder à l'interface Web AWX
Maintenant, ouvrez votre navigateur Web et tapez l'URL http://your-server-ip. Vous serez redirigé vers la page de connexion AWX :
Fournissez votre nom d'utilisateur et votre mot de passe d'administrateur que vous avez définis dans le fichier d'inventaire et cliquez sur le bouton SIGN EN bouton. Vous devriez voir le tableau de bord par défaut d'AWX sur la page suivante :
Conclusion
Toutes nos félicitations! vous avez installé avec succès AWX avec Docker sur CentOS 8. Vous pouvez désormais gérer et contrôler facilement votre projet Ansible à l'aide de l'interface Web AWX.