AWX
AWX

AWX Installation & Configuration

AWX est un projet open source conçu par RedHat. Il fournit une interface web pour la gestion de vos projets et vos playbook Ansible. Il permet de gérer les inventaires des serveurs, de définir des stratégies de déploiement et de déclencher des exécutions de tâches ansible à partir d’une interface conviviale.

Bien que pouvez gérer vos projet en éxécutant les playbooks directement au niveau du serveur, AWX vous facilite telement la tâche avec une Simple interface.

Dans cet article nous allons voir comment Installer AWX sur CentOS et exécuter les playbook avec.

AWX

Prérequis

Le serveur dont AWX est installé doit avoir les prerequis ci-dessous :

La Mémoire RAM : au moins 4GO

CPU : au moins 2 cpu core

HDD : au moins 20Go d’espace libre.

Docker, Kubernetes ou openshift : Dans cet article je vais utiliser Docker.

Installation des dépendances requis pour AWX

Désactivation de SElinux

après avoir les prerequis nécessaire, Editer par la suite le fichier /etc/selinux/config et remplacer « enforcing » par « disabled » :

[root@awx ~]# vi /etc/selinux/config

D’une manière alternative, vous pouvez simplement taper la commande ci-dessous qui remplace le mot enforcing par « disabled » :

[root@awx ~]# sed -i 's|SELINUX=enforcing|SELINUX=disabled|g' /etc/selinux/config

Installation de ansible

Pour commencer, ajouter le repos epel-release et ensuite installer ansible :

[root@awx ~]# yum -y install epel-release
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.airenetworks.es
 * extras: mirror.airenetworks.es
 * updates: mirror.airenetworks.es
base                                                                                                                                                                                       | 3.6 kB  00:00:00
extras                                                                                                                                                                                     | 2.9 kB  00:00:00
updates                                                                                                                                                                                    | 2.9 kB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-11 will be installed
--> Finished Dependency Resolution
[root@awx ~]# yum repolist | grep ^epel
epel/x86_64           Extra Packages for Enterprise Linux 7 - x86_64      13,731
[root@awx ~]# yum install ansible
[root@awx ~]# ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Jun 28 2022, 15:30:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]

Installation des dépendances

Ensuite Installer les packages ci-dessous :

[root@awx ~]# yum -y install git gcc gcc-c++ lvm2 bzip2 gettext nodejs yum-utils device-mapper-persistent-data python3-pip

Installation de Docker-ce et docker-compose

Aucune version de docker ne doit être installé, Cependant si vous n’êtes pas sûr vous pouvez taper la commande ci-dessous pour en être certain :

[root@awx ~]# yum -y remove docker docker-common docker-selinux docker-engine
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-common
No Match for argument: docker-selinux
No Match for argument: docker-engine
No Packages marked for removal

Ensuite ajouter le repôt Docker avec la commande ci-dessous :

[root@awx ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo

Par la suite installer le package docker-ce :

[root@awx ~]# yum -y install docker-ce

Après avoir installé docker-ce, démarrer le service :

[root@awx ~]# systemctl enable docker && systemctl start docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

Ainsi le service est bien démarré :

[root@awx ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2023-01-08 12:30:09 +01; 46s ago
     Docs: https://docs.docker.com
 Main PID: 17422 (dockerd)
    Tasks: 9
   Memory: 28.0M
   CGroup: /system.slice/docker.service
           └─17422 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Jan 08 12:30:07 awx dockerd[17422]: time="2023-01-08T12:30:07.908317097+01:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock  <nil> 0 <nil>...>}" module=grpc
Jan 08 12:30:07 awx dockerd[17422]: time="2023-01-08T12:30:07.908326968+01:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
Jan 08 12:30:07 awx dockerd[17422]: time="2023-01-08T12:30:07.936761849+01:00" level=info msg="Loading containers: start."
Jan 08 12:30:08 awx dockerd[17422]: time="2023-01-08T12:30:08.615073241+01:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be...red IP address"
Jan 08 12:30:08 awx dockerd[17422]: time="2023-01-08T12:30:08.778716512+01:00" level=info msg="Firewalld: interface docker0 already part of docker zone, returning"
Jan 08 12:30:08 awx dockerd[17422]: time="2023-01-08T12:30:08.920452973+01:00" level=info msg="Loading containers: done."
Jan 08 12:30:09 awx dockerd[17422]: time="2023-01-08T12:30:09.000746575+01:00" level=info msg="Docker daemon" commit=42c8b31 graphdriver(s)=overlay2 version=20.10.22
Jan 08 12:30:09 awx dockerd[17422]: time="2023-01-08T12:30:09.000982563+01:00" level=info msg="Daemon has completed initialization"
Jan 08 12:30:09 awx systemd[1]: Started Docker Application Container Engine.
Jan 08 12:30:09 awx dockerd[17422]: time="2023-01-08T12:30:09.032725052+01:00" level=info msg="API listen on /var/run/docker.sock"
Hint: Some lines were ellipsized, use -l to show in full.

En dernier lieu, installer docker-compose :

[root@awx ~]# yum -y install docker-compose

Installation de AWX sur CentOS

Dépôt GitHub

Maintenant que tout est prêt, nous allons donc commencer l’installation. Pour commencer cloner le repos awx :

[root@awx ~]# git clone https://github.com/ansible/awx.git
Cloning into 'awx'...
remote: Enumerating objects: 308954, done.
remote: Counting objects: 100% (85/85), done.
remote: Compressing objects: 100% (65/65), done.
remote: Total 308954 (delta 30), reused 58 (delta 20), pack-reused 308869
Receiving objects: 100% (308954/308954), 273.43 MiB | 6.35 MiB/s, done.
Resolving deltas: 100% (238507/238507), done.

Le fichier inventory

Ensuite nous allons modifier quelques paramétres au niveau du fichier ~/awx/installer/inventory

Taper la commande ci-dessous pour afficher les paramétres qui sont activés au niveau du fichier inventory :

[root@awx installer]# grep -v '^ *#' inventory | sed '/^$/d'
localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python3"
[all:vars]
dockerhub_base=ansible
awx_task_hostname=awx
awx_web_hostname=awxweb
postgres_data_dir="/var/lib/awx/pgdocker"
host_port=80
host_port_ssl=443
docker_compose_dir="/var/lib/awx"
pg_username=awx
pg_password=awxpass
pg_database=awx
pg_port=5432
admin_user=admin
admin_password=password
create_preload_data=True
secret_key=awxsecret
awx_alternate_dns_servers="8.8.8.8,4.4.4.4"
project_data_dir=/var/lib/awx/projects

Bien qu’il y en a plusieurs, Nous n’avons besoin de modifier que quelques un.

– 1er paramétre : admin_password

C’est le mot de passe du compte admin qui vous permettra d’accéder à l’interface. Editer le fichier inventory et mettez le mot de passe de votre choix :

admin_password=password

– 2ème paramétre : pg_password

C’est le mot de passe de la base de donnée postgres. Mettez donc celui de votre choix :

pg_password=dabapassword

– 3 ème paramétre : secret_key

Taper la commande ci-dessous pour générer des caractère que vous allez mettre pour le secret_key :

[root@awx awx]# openssl rand -base64 40
58dimR8hGEzXzT56//o8cMdJAv48p6HeAYxbM3EK/BaHY9yy76fkLw==
secret_key=58dimR8hGEzXzT56//o8cMdJAv48p6HeAYxbM3EK/BaHY9yy76fkLw==

Installation de AWX

Finalement, après avoir modifé le fichier inventory, lancer le playbook installer.yml avec la commande ci-dessous :

# ansible-playbook -i inventory install.yml

Un fois que l’installation est terminé, taper la commande docker ps pour lister les conteneurs créés :

[root@awx ~]# docker ps
CONTAINER ID   IMAGE                COMMAND                  CREATED      STATUS       PORTS                                   NAMES
b817f69067ee   ansible/awx:17.1.0   "/usr/bin/tini -- /u…"   9 days ago   Up 3 hours   8052/tcp                                awx_task
fc7d4cccecb7   ansible/awx:17.1.0   "/usr/bin/tini -- /b…"   9 days ago   Up 3 hours   0.0.0.0:80->8052/tcp, :::80->8052/tcp   awx_web
91755bf1b20f   postgres:12          "docker-entrypoint.s…"   9 days ago   Up 3 hours   5432/tcp                                awx_postgres
82629ba0b3b7   redis                "docker-entrypoint.s…"   9 days ago   Up 3 hours   6379/tcp                                awx_redis

Accéder àl l’Interface

Finalement, une fois AWX est installé, ouvrez votre navigateur et taper l’adresse ip du serveur :

AWX

Taper le mod de passe admin et voilà votre interface AWX :