Ansible : Test pour charger un module via modprobe

Résolu
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 11 oct. 2023 à 13:37
mamiemando Messages postés 33129 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 mai 2024 - 5 janv. 2024 à 17:27

Bonjour,

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


6 réponses

pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
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

1
mamiemando Messages postés 33129 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 mai 2024 7 755
5 janv. 2024 à 17:27

Merci pour ton retour :-)

0
mamiemando Messages postés 33129 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 mai 2024 7 755
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

0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
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é!


0
mamiemando Messages postés 33129 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 mai 2024 7 755
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

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
Modifié 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": []}


0
mamiemando Messages postés 33129 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 mai 2024 7 755
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 == ""
0