--- # `lock_timeout` sur CHAQUE tache apt : au premier demarrage, l'image Debian lance ses # propres mises a jour (apt-daily, unattended-upgrades) et tient le verrou dpkg par # vagues. Sans attente, la premiere tache echoue sur un verrou — pas sur une vraie # erreur — et le deploiement d'une VM neuve devient un tirage au sort. # # Attendre ici plutot que seulement avant le playbook : le verrou peut etre repris # ENTRE deux taches, ce qu'une verification ponctuelle en amont ne peut pas empecher. # DÉSARMER AVANT TOUTE OPÉRATION APT, ET NON APRÈS. # # Une tâche apt placée avant celle-ci attendrait le verrou que celle-ci doit justement # libérer — l'ordre n'est pas cosmétique. `state: stopped` en plus de `masked` : masquer # empêche un démarrage futur, pas celui qui est déjà en cours. - name: Désarmer les mises à jour automatiques de Debian (Set-OPS les applique lui-même) ansible.builtin.systemd_service: name: "{{ item }}" state: stopped enabled: false masked: true loop: "{{ common_packages_unites_maj_auto }}" when: common_packages_desarmer_maj_auto | bool failed_when: false # une unite absente n'est pas une faute : elle est desarmee - name: Mettre à jour le cache APT ansible.builtin.apt: update_cache: true cache_valid_time: 3600 lock_timeout: "{{ common_packages_lock_timeout }}" - name: Appliquer les mises à jour disponibles ansible.builtin.apt: upgrade: full lock_timeout: "{{ common_packages_lock_timeout }}" - name: Installer les paquets communs ansible.builtin.apt: name: "{{ common_packages_list }}" state: present lock_timeout: "{{ common_packages_lock_timeout }}" - name: Supprimer les dépendances devenues inutiles ansible.builtin.apt: autoremove: true lock_timeout: "{{ common_packages_lock_timeout }}"