La CLI Ansible AWX dans vos pipelines Gitlab CI/CD
Nous continuons l’exploration d’Ansible AWX avec au menu du jour l’utilisation de CLI Ansible Tower. Cette CLI peut être utilisé au sein de vos pipelines de CI/CD comme Gitlab-CI. C’est ce que je vous propose de voir dans ce billet.
Pour ceux qui non pas encore installé Ansible AWX, c’est par là que ça se passe.
Installation de la CLI Ansible TOWER
La CLI Ansible Tower est comme tous les autres produits Ansible écrit en
python et donc l’installation se fait avec pip
:
Une fois installée cette CLI est invoquée par la commande awx
:
Utilisation de la CLI Ansible TOWER
La première chose à faire est de s’authentifier sur Ansible TOWER ou AWX avant de pouvoir lancer d’autres actions :
Il suffit d’utiliser la commande suivante login
:
- L’option -k est utilisé pour autoriser les connexions à l’API d’AWX sans la couche SSL.
- L’option -f human génère une sortie qui peut être utilisé directement pour lancer les autres commandes.
Utilisation d’un jeton d’accès personnel
Je vais vous montrer comment générer un token dans l’interface d’AWX. Il suffit
de cliquer sur son compte utilisation puis détails de l'erreur
(oups mauvaise
traduction.)
Ensuite cliquez sur l’onglet [Jetons], [Ajouter] :
- Champ d’application : Lecture ou Écriture
Pour finir, cliquer sur [Enregistrer]. Copiez le token dans un lieu sûr. Il est valide 1000 ans, vous avez le temps avant qu’il expire.
Comme pour le token OAUTH il suffit d’exporter la variable
TOWER_OAUTH_TOKEN
avec ce token avant d’utiliser les autres commandes de la
CLI :
Accéder aux ressources d’AWX
Maintenant que nous savons nous identifier nous allons pouvoir accéder aux ressources que nous avons créées dans AWX.
Pour simplifier les commandes nous utiliser la variable d’environnement
TOWER_HOST
:
Par exemple, nous pouvons demander à lister les jobs (j’ai tout supprimé dans l’interface d’AWX) :
On pourrait aussi lancer le modèle de job que nous avons créé dans le billet précédent qui remontait la liste des pods avec le status running :
L’option monitor
permet à la commande de renvoyer des codes de sortie. C’est
cette option qui permet d’utiliser la CLI d’Ansible Tower dans Gitlab.
Allez dans l’interface de votre serveur AWX dans le menu affichages / Jobs, vous devriez retrouver l’exécution de votre modèle de Job.
Je ne vais pas vous expliquer toutes les autres commandes. La documentation complète de la CLI se trouve ICI ↗.
Intégration de la CLI Ansible Tower dans vos pipelines
Vous aurez compris finalement, c’est assez simple à mettre en place. Il suffit de :
- Créer dans les paramètres CI/CD de votre projet Gitlab une variable
TOWER_OAUTH_TOKEN
masquée et protégée contenant le TOKEN généré dans AWX. - Créer une seconde variable
TOWER_HOST
avec l’url de votre serveur AWX
- D’utiliser ensuite une image de container (ex ci-dessous) contenant la CLI dans un des stages de votre pipeline.
Il y a moyen d’optimiser la taille de l’image.
Et comme fichier .gitlab-ci.yml
.
Pour obtenir le code de retour lors de l’exécution d’un modèle de job par exemple, il faudra absolument ajouter l’option —monitor. Sinon votre stage sera toujours en successfull.
Conclusion
Cette méthode est transposable à tous les outils de CI/CD comme travis-ci, github actions, jenkins, … Cela ouvre la porte à plein de possibilités, comme provisionné une infra de test avec du terrafrom sur le cloud, puis de configurer le tout avec de l’ansible.