2017-09-29 6 views
0

J'essaie de trouver une ligne particulière dans le cat /etc/fstab, l'enregistrer dans une variable et ensuite vouloir l'utiliser pour umount le répertoire trouvé.en utilisant le registre dans la tâche ansible

--- 
- hosts: all 
    remote_user: root 

    tasks: 
    - name: Finding if the mount point exists 
    shell: cat /etc/fstab | grep /mnt | awk '{print $2}' 
    register: mountpoint 

    - name: UMOUNT the mountpoint found in expression 
    shell: umount "{{ item }}" 
    with_items: mountpoint.stdout 

Je vois que la sortie fonctionne pour la première tâche. Cependant, dans la seconde tâche, il dit, "stderr": "umount: mountpoint.stdout: mountpoint not found", "stderr_lines": ["umount: mountpoint.stdout: mountpoint not found"]"

est-il pas la variable registre devrait travailler ici? Ai-je raté quelque chose?

C'est la sortie

{ 
    "_ansible_parsed": true, 
    "stderr_lines": [], 
    "cmd": "cat /etc/fstab | grep /mnt | awk '{print $2}'", 
    "end": "2017-09-29 15:07:12.717112", 
    "_ansible_no_log": false, 
    "stdout": "/mnt/dvd", 
    "changed": true, 

stdout se trouve ici/mnt/dvd. maintenant voudrait umount il.

Merci d'avance.

+1

Vous devriez fortement envisager d'utiliser l'action 'mount', qui est idempotente par conception. – tedder42

Répondre

0

j'ai pu contourner en utilisant le code suivant mon propre. Plus d'informations sur les valeurs de retour peuvent être obtenues à partir here.

--- 
    - hosts: all 
    remote_user: root 

    tasks: 
    - name: Finding source source drive 
     shell: cat /etc/fstab | grep /dev/sr0 | awk '{ print $2}' 
     register: dest_path 
    - name: Finding Destination path for Mount 
     shell: cat /etc/fstab | grep /dev/sr0 | awk '{ print $1}' 
     register: src_path 

    - name: Mounting the data Drives 
     mount: 
     path: "{{ dest_path.stdout }}" 
     src: "{{ src_path.stdout }}" 
     fstype: auto 
     opts: ro 
     state: unmounted