Premiers pas avec AWX et création d’un inventaire avec PHPIPAM

Ansible Web-based eXtensible

Dans le monde en constante évolution de la gestion des infrastructures informatiques, la nécessité d’automatiser les tâches récurrentes devient de plus en plus cruciale. C’est là qu’intervient AWX, une plateforme open-source puissante qui simplifie la gestion et l’automatisation des infrastructures IT grâce à Ansible, l’outil leader dans ce domaine. Dans cet article je vais partager les premières actions à faire pour utiliser cet outil et quelques configurations de bases pour lancer nos premiers jobs =).

Installation d'awx avec docker compose

Suite à plusieurs tentatives d’installation sur une VM, j’ai décidé d’opter pour une installation via Docker. Bien que ce ne soit pas l’idéal, cela fonctionne très bien pour des tests. Pour l’installation, je vous recommande vivement de suivre les instructions de l’article suivant :

https://cloudinfrastructureservices.co.uk/how-to-install-ansible-awx-using-docker-compose-awx-container-20-04/


Une fois installé AWX, lorsque nous nous connectons à AWX, nous sommes accueillis par un tableau de bord qui fournit un aperçu des tâches en cours, des travaux récemment exécutés, des erreurs et d’autres informations importantes.

création d'un utilisateur

Rien de particulier pour créer un utilisateur. Nous pouvons choisir entre trois types d’utilisateurs:

Normal user: Ce type d’utilisateur a généralement des autorisations limitées et est capable d’exécuter des tâches spécifiques assignées par les administrateurs système

System auditor: Les auditeurs système ont des privilèges supplémentaires pour surveiller et inspecter les opérations en cours sur la plateforme.

System administrator: Les administrateurs système ont les droits les plus élevés sur la plateforme AWX. Ils ont le contrôle total sur la configuration du système, la gestion des utilisateurs et des équipes, la configuration des intégrations avec d’autres outils, et d’autres tâches d’administration avancées.

Il est obligatoire de créer une organisation.

création d'un Host

Nous créons tout d’abord les groupes que nous allons associer à notre hôte dans une étape ultérieure.

L'inventaire sur AWX

La façon plus simple pour administrer nos hosts c’est d’utiliser un inventaire. L’utilisation d’un inventaire permet de centraliser la gestion des hôtes, ce qui facilite la maintenance et la mise à jour des informations sur les hôtes.

Je crée mon inventaire appelé Homelab et associer à mon organisation. 

Il existe plusieurs façons d’administrer l’inventaire. Personnellement, j’utilise PHPIPAM pour gérer mes adresses IP, car lorsque l’on commence à avoir beaucoup de VM, de conteneurs, d’IoT, etc., il est vraiment pratique d’avoir cet outil pour s’y retrouver.

Pour récupérer ces adresses IP depuis PHPIPAM, j’utilise un script qui interroge l’application via son API et me renvoie les noms d’hôte et les adresses IP dans un format acceptable pour Ansible.

Le script va demander un jeton, vérifier s’il a été généré avec succès, puis l’utiliser pour interroger l’API afin d’obtenir les adresses IP. Une fois les adresses IP récupérées, nous les formaterons dans un format compréhensible pour Ansible.

Par exemple: 

LXC-7 ansible_host=192.168.x.x
LXC-8 ansible_host=192.168.x.x

Ce fichier sera ensuite poussé vers mon projet GitLab, et AWX se connectera pour récupérer les informations du nouveau fichier et mettre à jour l’inventaire Homelab.

Vous pouvez trouver le script sur mon GitLab:

Si vous utilisez PHPIPAM comme gestionnaire d’adresses IP, vous devez absolument activer l’API. De plus, si vous ne disposez pas de certificats SSL, vous devrez désactiver la communication sécurisée.

Nous devons simplement synchroniser le projet chaque fois que le fichier inventory.ini (fichier privé sur GitLab). 

Création d'un template

Pour créer un template, il faut d’abord créer un projet qui va permettre d’aller chercher les fichier .yml sur le GitLab. 

Vous pouvez trouver quelques uns des mes playbook (testés et fonctionnels) sur:

Une fois le projet créé, nous pouvons créer le modèle. En remplissant les champs principaux comme indiqué dans l’image, j’ai ajouté la variable “user” avec une valeur nulle qui sera définie lors du lancement du travail.

Et finalement le lacement du script. 

Nous pouvons vérifier la sortie pour confirmer les actions qui ont été effectuées.

Leave a Comment

Your email address will not be published. Required fields are marked *