
リモート ホストで a.sh を実行し、すべての出力ファイルを取得します。タイムスタンプ付きの出力ファイル。以下に私の Ansible タスクを示します。
---
- 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
エラー! 競合するアクション ステートメント: shell、fetch
エラーは '/home/vicheruk/report_task.yml' の 24 行目、8 列目にあったようですが、正確な構文の問題によってはファイル内の他の場所にある可能性もあります。
問題となっている行は次のようです:
state: 'absent'
- name: 'fetch'
^ here
何か案は?
答え1
プレイブックの構文が間違っています。 はfetch
モジュールであり、独自のタスクで呼び出す必要があります。
また、同じファイルにループして書き込むことにはあまり意味がありません。おそらく、パラメータ{{ item }}
にdest
も含める必要があるでしょう。
これでうまくいくはずです:
- 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 }}'