Le module APT de ansible, un indispensable

Print Friendly, PDF & Email

Continuons notre formation ansible en apprenant petit à petit les rudiments de ce formidable outil. Bien sûr nous avons encore quelques fondamentaux à découvrir avant de nous lancer dans notre premier TP utile. Celui-ci sera orienté monitoring avec l’installation d’une stack prometheus/grafana et de node-exporter pour aller avec. Simple, pratique et vous le verrez pas besoin d’y passer des heures à coder pour avoir un résultat sympathique.

Mais avant cela, il faut procéder de manière un peu itérative avec les principaux modules ansible. Là encore pas besoin de savoir faire des choses complexes mais un minimum.

Aujourd’hui, penchons-nous sur le module apt (le manager de paquets sous debian, il existe bien sûr la même chose sous Redhat/Centos avec yum). Si votre infrastructure est basée sur cette OS, je vous conseille de bien le retenir et de se familiariser avec ses principales options/paramètres.

Justement débutons avec les principaux paramètres de ce module ansible.

Les paramètres du module APT

Voici une liste assez exhaustive de ses paramètres. Nous verrons leur principales utilisation juste après.

  • allow_unauthenticated : autoriser l’installation de paquets non authentifiés
  • autoclean : effacement des anciennes versions des paquets
  • cache_valid_time : durée durant laquelle ne pas remettre à jour le cache apt
  • deb : lien vers une source de paquet .deb
  • default_release : version par défaut
  • dpkg_options : option d’installation dpkg
  • force : équivaut à –force-yes, désactive la signature et certificats de paquets
  • force_apt_get : force l’utilisation de apt-get
  • install_recommends : activer ou désactiver les paquets recommandés (dépend des OS)
  • name : nom du paquet
  • only_upgrade : met à jour uniquement les paquets installés
  • policy_rc_d : règle de déclenchement automatique à l’installation d’un paquet
  • purge : purge les fichiers de configurations (–purge)
  • state : present / absent / latest / fixed / build-dep
  • update_cache : réaliser un update avant l’installation
  • update_cache_retries : nombre de tentatives de l’update
  • update_cache_retry_max_delay : délai de chaque retry
  • upgrade : yes / no / safe / dist / full
Découvrez  [Ansible] : commençons simplement : copie de fichiers, modification/écriture avec copy et lineinfile

Voilà, la liste n’est finalement pas si longue que cela. Mais voyons un peu son utilisation avec quelques exemples pour la mise en pratique.

Utilisation du module APT ansible

A savoir que l’on peut combiner certains paramètres alors que dans la pratique il s’agit de lignes de commandes APT distinctes.

Par exemple, si nous voulons simplement mettre à jour le cache APT local, voici ce que nous pouvons utiliser :

  - name:
    apt:
      update_cache: yes
      cache_valid_time: 3600

Dans ce cas de figure, nous mettons à jour le cache et nous lui donnons une durée de vie de 3600 secondes. Cela évite tout simplement de remettre à jour le cache après chaque passage.

Mais nous pouvons combiner la mise à jour du cache et l’installation d’un paquet (par exemple HaProxy)

  - name:
    apt:
      name: haproxy
      default_release: stretch-backports
      update_cache: yes
      cache_valid_time: 60

Là nous précisons éventuellement la release utilisée pour l’installation.

Par défaut et sans précision, le paramètre state est à « present ». Nous souhaitons donc que le paquet soit installé. Mais nous pouvons préciser un state à latest. L’impact ? En cas de run ansible et de la présence d’une nouvelle version du paquet, l’applicatif sera mis à jour. Pas forcément une bonne idée pour la stabilité des versions et de votre infrastructure.

Par exemple :

  - name:
    apt:
      name: haproxy,nginx
      update_cache: yes
      cache_valid_time: 60
      state: latest

Bien sûr vous l’avez deviné, pour supprimer un paquet, on va utiliser un state absent.

  - name:
    apt:
      name: haproxy
      state: absent

Ou encore pour une suppression totale des anciennes versions avec autoremove et –purge pour les fichiés liés :

  - name:
    apt:
      name: haproxy
      state: absent
      purge: yes
      autoremove: yes

Nous pouvons aussi réaliser un dist-upgrade pour monter de version notre distribution (par exemple passer de stretch à buster). Attention sous réserve de mise à jour des fichiers de configurations des dépôts au préalable.

  - name:
    apt:
      upgrade: dist

Voilà finalement un module utile et simple, tout ce que l’on aime. Nous verrons aussi que l’on peut associer à ce module, le module de gestion des reboots, très pratique pour les mises à jour.

Découvrez  Ansible - Comment créer un user et une base mysql ?