2017-09-29 10 views
0

Ich versuche, eine bestimmte Zeile in der cat /etc/fstab zu finden, registrieren Sie es in einer Variablen und wollen dann zu umount das gefundene Verzeichnis verwenden.mit Register in Ansible Aufgabe

--- 
- 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 

Ich sehe die Ausgabe funktioniert für die erste Aufgabe. Aber in der zweiten Aufgabe heißt es, "stderr": "umount: mountpoint.stdout: mountpoint not found", "stderr_lines": ["umount: mountpoint.stdout: mountpoint not found"]"

Ist es nicht die Registervariable sollte hier arbeiten? vermisse ich etwas?

Dies ist die Ausgabe

{ 
    "_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 wird hier als/mnt/DVD gefunden. jetzt möchte umount es.

Vielen Dank im Voraus.

+1

Sie sollten die "mount" -Aktion, die vom Entwurf idempotent ist, in Betracht ziehen. – tedder42

Antwort

0

Ich war in der Lage, umgehung mit folgenden Code von meinem eigenen. Weitere Informationen zu Rückgabewerten erhalten Sie unter 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 
Verwandte Themen