Ansible : Test pour charger un module via modprobe

Résolu
pcsystemd Messages postés 734 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -

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


L'accès au savoir est la première liberté que chaque homme devrait avoir.

6 réponses

  1. pcsystemd Messages postés 734 Statut Membre 23
     

    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
    1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
       

      Merci pour ton retour :-)

      0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     

    Bonjour,

    J'ai l'impression que le module community.general.modprobe est précisément fait pour ça.

    Bonne chance

    0
  3. pcsystemd Messages postés 734 Statut Membre 23
     

    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
  4. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     

    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pcsystemd Messages postés 734 Statut Membre 23
     

    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
  7. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     

    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