Mar 10 2021

Pourquoi Ansible Met à Jour les Paquets en Hold et Comment y Remédier

Publié par à 9:15 sous Ansible

J’écrivais un nouveau rôle Ansible pour mettre à jour toutes mes VMs pour réaliser un apt update suivi d’un apt upgrade. J’utilise toujours une vieille version de Rancher qui ne fonctionne qu’avec la version 18.06 du paquet docker-ce sur lequel j’aimerais appliquer un apt hold.

Une première tâche met le paquet en hold c’est-à-dire en interdit la mise à jour avec le module Ansible Dpkg, comme recommandé sur de nombreux sites web.
Une deuxième et troisième étapes exécutent un apt update et apt full upgrade de mon système avec le module Ansible apt.

- name: keep docker from being updated on Rancher nodes
  dpkg_selections:
    name: docker-ce
    selection: hold
- name: apt update cache
  apt:
    update_cache: yes
  changed_when: False

- name: apt full-upgrade
  apt:
    upgrade: full


J’ai ensuite lancé mon playbook plein de confiance et, constaté que docker-ce avait été mis à jour! Bizarrement, les distributions Ubuntu semblent impactées, alors que ca fonctionne bien sur la famille Debian.


La page du module Ansible apt mentionne « Option full, lance une full-upgrade aptitude ».
Vérifions le paquet en hold après la 1re étape:

$ dpkg -l | grep docker
hi  docker-ce 18.06.3~ce~3-0~ubuntu. amd64. Docker: the open-source application container engine


La même chose avec aptitude:

$ aptitude search ~i | grep docker
i  docker-ce - Docker: the open-source application container engine

h pour hold est MANQUANT!


apt-get et aptitude semblent reposer sur des fonctions hold différentes, d’où « dpkg –selections » qui ne permet pas de s’assurer qu’aptitude (la commande qui se charge des upgrades) ne touchera pas aux paquets « holdés ».


Et maintenant?
Nous avons de la chance, le module Ansible apt propose un moyen de forcer la mise à jour avec apt-get au lieu d’aptitude

- name: apt full-upgrade
  apt:
    upgrade: full
    force_apt_get: yes


Problème résolu !


No responses yet

Comments RSS

Leave a Reply