我想在远程主机上运行 a.sh 并获取所有输出文件。输出带有时间戳的文件。我写了下面的代码,但失败并出现错误

我想在远程主机上运行 a.sh 并获取所有输出文件。输出带有时间戳的文件。我写了下面的代码,但失败并出现错误

我想在远程主机上运行 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——限制

错误!冲突的操作语句: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 }}'

相关内容