通过ansible中的Web服务器上的多个文件进行交互

时间:2017-06-10 22:25:40

标签: ansible

我有一个项目要求我从远程服务器获取多个文件的内容并传入文件。

这是我为完成目标而创建的任务:

- name: check content
  uri:
   url: http://172.16.2.3/file1
   method: GET
   return_content: yes
  register: file1

  - name: print content
    debug: msg={{file1.content}}

调试内容显示以下内容

ok: [172.16.2.4] => {
"changed": false,
"msg": "testcontent11111\n"

但是因为我必须遍历多个文件,所以我尝试了以下内容:

- name: check content
  uri:
   url: http://172.16.2.3/{{item.url}}
   method: GET
   return_content: yes
   register: {{item.register}}
  with_items:
  - { url: 'file1', register: 'file1' }

  - name: print content
    debug: msg={{file1.content}}

不幸的是,调试上述内容会在我的输出中产生以下内容

FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'file1' is undefined\

我知道如何编写第二个任务来完成第一个任务的目标吗?

1 个答案:

答案 0 :(得分:0)

我认为用动态名称注册var是不可能的。

http://docs.ansible.com/ansible/playbooks_loops.html#using-register-with-a-loop

- name: check content
  uri:
   url: http://172.16.2.3/{{item.url}}
   method: GET
   return_content: yes
   register: files
  with_items:
    - { url: 'file1', register: 'file1' }
    - { url: 'file2', register: 'file2' }

  - name: print content
    debug: msg={{ files.results }} # First item = content of file1 and so on