
Ich möchte a.sh auf Remote-Hosts ausführen und alle Ausgabedateien abrufen. Ausgabedatei mit Zeitstempel. Unten sehen Sie meine Ansible-Aufgaben.
---
- name: 'abcd'
hosts: 'all'
gather_facts: 'false'
tasks:
- name : 'Copy the script to /tmp/ and set permission'
copy :
src : 'a.sh'
dest: '/tmp'
mode: '0700'
- name: 'Execute the script'
shell: >
/tmp/a.sh
register: 'results'
- name: 'Display output'
debug:
msg: '{{ results.stdout }}'
- name: 'Remove script'
file:
path: '/tmp/a.sh'
state: 'absent'
- name: 'fetch'
shell: "ls /tmp/test_Prereq_*"
register: path_files
fetch :
src : '/tmp/"{{item}}"'
dest : '/home/vj/testout'
with_items: '{{ path_files.stdout }}'
ansible-playbook report_task.yml --limit
FEHLER! widersprüchliche Aktionsanweisungen: Shell, Fetch
Der Fehler scheint in „/home/vicheruk/report_task.yml“: Zeile 24, Spalte 8 aufgetreten zu sein, kann aber je nach dem genauen Syntaxproblem auch an einer anderen Stelle in der Datei liegen.
Die anstößige Zeile scheint zu sein:
state: 'absent'
- name: 'fetch'
^ here
Irgendwelche Ideen?
Antwort1
Ihr Playbook ist syntaktisch falsch. fetch
ist ein Modul und muss in einer eigenen Aufgabe aufgerufen werden.
Außerdem macht es nicht viel Sinn, eine Schleife zu erstellen und in dieselbe Datei zu schreiben. Wahrscheinlich möchten Sie {{ item }}
den dest
Parameter ebenfalls einschließen.
Das hier sollte funktionieren:
- name: 'register files'
shell: "ls /tmp/test_Prereq_*"
register: path_files
- name: fetch
fetch:
src: '/tmp/"{{ item }}"'
dest: '/home/vj/testout-{{ item }}'
with_items: '{{ path_files.stdout }}'