Ansible : Test pour charger un module via modprobe
RésoluBonjour,
Je me met a Ansible et j'essaie de tester si le module XFS est chargé et s'il ne l'est pas, je veux qu'il soit chargé. J'ai installé bien sur la collection community.general.
Pour cela j'essaie cela :
- name: Ckeck si le module existe
shell:
cmd: lsmod | grep xfs
register: modulexfs
- name: Check si la sortie de la commande est vide
debug:
var: modulexfs.stdout == ""
- name: Add xfs module
community.general.modprobe:
name: xfs
state: present
when: modulexfs.stdout == ""
J'ai cette erreur :
TASK [filesysdatas : Ckeck si le module existe] **********************************************************************************************************************************************
fatal: FAILED! => {"changed": true, "cmd": "lsmod | grep xfs", "delta": "0:00:00.006878", "end": "2023-10-11 13:13:53.122986", "msg": "non-zero return code", "rc": 1, "start": "2023-10-11 13:13:53.116108", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
PLAY RECAP ***********************************************************************************************************************************************************************************
Une idée?
Merci
Windows / Chrome 117.0.0.0
L'accès au savoir est la première liberté que chaque homme devrait avoir.
6 réponses
-
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
-
Bonjour,
J'ai l'impression que le module community.general.modprobe est précisément fait pour ça.
Bonne chance
-
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é!
-
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: presentSi 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: presentSi ç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 == 0Bonne chance
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 == 0Erreur :
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": []}
-
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 == ""