By Walid ETTAYEB

Introduction

‌‌Dans mon article précédent, je vous ai montré comment préparer votre environnement Linux pour l'utilisation d'Ansible et l'exécution d'un test de base pour s'assurer de son bon fonctionnement. L'article d'aujourd'hui explique comment utiliser cette nouvelle configuration avec l'introduction des playbooks Ansible, que vous pouvez lire plus en détail ici.

Pour résumer, les playbooks Ansible vous permettent de regrouper diverses éléments, tels que des tâches répétitives ou la configuration/gestion d'un système, dans un template, permettant un déploiement facile autant de fois que vous le souhaitez à tout moment. Dans l'article d'aujourd'hui, nous allons commencer par voir comment utiliser Ansible pour automatiser les mises à jour de nos serveurs.  Bien que je sois conscient que cela pourrait être fait avec la fonctionnalité déjà intégrée dans de nombreuses distributions Linux.

Dans mon scénario actuel, lorsqu'il faut mettre à jour mes serveurs, je dois me connecter en SSH à chacun d'entre eux et exécuter manuellement la commande typique  "sudo apt update" puis "sudo apt upgrade". Cela est devenu un peu fastidieux avec le nombre de machines virtuelles que j'exploite à ce stade, d'où le désir de trouver un moyen d'automatiser les choses. J'aimerais que tout soit à jour afin de limiter autant que possible les failles de sécurité.

Création d'un Playbook

Maintenant que nous sommes prêts à créer notre premier playbook, il est important de noter en amont que les playbooks Ansible sont écrits en YAML, donc faites attention à vos tabulations/espaces, car YAML y est sensible.

Je tiens également à préciser que tous mes serveurs fonctionnent actuellement sous Ubuntu et que nous nous concentrerons sur le module apt fourni par Ansible.

Comme j'ai déjà créé un répertoire "playbooks" pour mes playbooks, je vais maintenant créer le fichier en exécutant la commande "touch apt.yml".  Maintenant qu'il est créé, vous pouvez l'ouvrir avec l'éditeur de texte de votre choix et remplir le fichier avec le contenu suivant :

- hosts: "*"
  become: yes
  tasks:
      - name: apt
        apt:
            update_cache: yes
            upgrade: 'yes'

Analysons un peu la situation :

Pour commencer, nous avons la première ligne qui spécifie que nous voulons que cela s'applique à tous les hôtes de notre fichier d'inventaire. Nous pourrions également remplacer l'astérisque * par l'attribut que nous avons donné à nos serveurs, nommé  ubuntu.

Ensuite, nous avons la ligne become: yes. become dans ce contexte est lié au fait que nous allons exécuter cette commande en tant que sudoer ou non. En définissant become à yes, nous indiquons à notre playbook que nous voulons exécuter cette tâche avec des privilèges élevés, ce qui est nécessaire pour exécuter notre tâche voulue.

En parlant de notre tâche, nous pouvons regarder une ligne plus bas, où nous indiquons maintenant à notre playbook ce que nous voulons faire, c'est-à-dire utiliser apt . En dessous de cette ligne, nous fournissons quelques paramètres supplémentaires, où nous lui demandons de mettre à jour le cache et de mettre à niveau tous nos modules.

Si nous regardons la documentation du module apt et plus particulièrement l'attribut upgrade, nous pouvons voir que nous avons plusieurs options différentes :

J'ai choisi l'option yes parce qu'elle est plus sûre et n'effectue pas une mise à jour complète de la distrib. Vos souhaits peuvent être différents, alors n'hésitez pas à choisir ce qui est le plus approprié pour votre configuration.

Utilisation de notre Playbook

Avec les étapes suivies ci-dessus, ainsi que notre fichier d'inventaire créé dans l'article précédent, nous sommes maintenant prêts à exécuter notre premier playbook Ansible. Pour y parvenir, nous allons maintenant exécuter la commande suivante :

ansible-playbook /root/ansible/playbooks/apt.yml --user root -i /root/ansible/hosts

Si vous n'avez pas rencontré de problèmes particuliers, vous devriez voir quelque chose de similaire à la capture d'écran ci-dessus.

Conclusion

Comme vous pouvez le constater, Ansible est un outil assez facile à apprendre et à utiliser qui vous facilite la vie en automatisant des tâches. Bien que nous n'ayons fait que survoler le potentiel d'Ansible, j'ai l'intention de vous faire découvrir d'autres façons intéressantes de mettre en œuvre Ansible dans mon environnement de production.

Walid ETTAYEB • 36 Articles

Passionné par l'informatique depuis mon plus jeune âge, je transforme ma passion en expertise.

View Articles