Ansible : Test pour charger un module via modprobe
Résolu/Fermémamiemando Messages postés 33459 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 janvier 2025 - 5 janv. 2024 à 17:27
6 réponses
5 janv. 2024 à 16:49
Bon ma réponse est tardive mais c'est mieux tard que jamais!
Voici comment j'ai fait si cela peut aider d'autres personnes.
- name: Rassembler les infos sur les packages installés
package_facts:
manager: auto
- name: Install xfsprogs pour mkfs.xfs s'il n'est pas installé
package:
name: xfsprogs
state: present
when: '"xfsprogs" not in ansible_facts.packages'
- name: charge module xfs
community.general.modprobe:
name: xfs
state: present
persistent: present
when: ansible_facts.mounts | selectattr('fstype', '!=', 'xfs') | length == 0
11 oct. 2023 à 16:18
Bonjour,
J'ai l'impression que le module community.general.modprobe est précisément fait pour ça.
Bonne chance
11 oct. 2023 à 16:37
Ce module comme je l'indique et que j'utilise dans mon playbook permet de charger un module mais il ne permet pas de vérifier qu'il est bien chargé!
Modifié le 11 oct. 2023 à 17:10
Bonjour pcsystemd,
Il y a quelque chose qui m'échappe dans ce que tu dis. Reprenons cet exemple de la documentation.
- name: Add the dummy module and make sure it is loaded after reboots
community.general.modprobe:
name: dummy
state: present
params: 'numdummies=2'
persistent: present
Si je comprends bien ce qui est écrit, cela garantit que le module est chargé, il n'y a donc rien à vérifier. Si le module ne peut pas être chargé (par exemple parce qu'il n'existe pas), le workflow va planter, non ?
En adaptant cet exemple à ton cas, je dirais qu'on obtient :
- name: Add the xfs module and make sure it is loaded after reboots
community.general.modprobe:
name: xfs
state: present
persistent: present
Si ça n'est pas ce que tu cherches à faire, tu peux t'inspirer de cette réponse. Si on l'adapte, on obtient :
- name: Add the xfs module if not yet loaded
community.general.modprobe:
name: xfs
state: present
when: modulexfs.stdout | length == 0
Bonne chance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionModifié le 16 oct. 2023 à 13:36
Merci.
J'avais déjà testé cette méthode mais j'ai toujours l'erreur.
Playbook :
- name: Ckeck si le module existe
shell:
cmd: lsmod | grep xfs
register: modulexfs
- name: Add xfs module si il n'est pas chargé
community.general.modprobe:
name: xfs
state: present
persistent: present
when: modulexfs.stdout | length == 0
Erreur :
TASK [filesysdatas : Ckeck si le module existe] **********************************************************************************************************************************************
task path: main.yml:14
fatal: []: FAILED! => {"changed": true, "cmd": "lsmod | grep xfs", "delta": "0:00:00.007166", "end": "2023-10-16 13:12:07.320674", "msg": "non-zero return code", "rc": 1, "start": "2023-10-16 13:12:07.313508", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
16 oct. 2023 à 17:15
Bonjour,
N'utilisant pas ansible, je ne peux pas exactement te dire. Personnellement j'aurais juste utilisé community.general.modprobe. Concernant le test que tu veux mettre en place, peut-être (en se basant sur cette réponse) :
- hosts: myhosts
tasks:
- name: echo hello
command: lsmod | grep xfs
register: result
- command: modprobe xfs
when: result.stdout == ""
5 janv. 2024 à 17:27
Merci pour ton retour :-)