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.
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 :
Taper le mod de passe admin et voilà votre interface AWX :
Empêcher les utilisateurs sudoers d’exécuter des cmds sudo
Migrer Rocky Linux 8 vers Rocky Linux 9
nmtui : Configurer une adresse IP sous Linux
Comment installer Docker sur Rocky Linux 9
Fail2Ban : How to protect Linux services