我有一个项目要求我从远程服务器获取多个文件的内容并传入文件。
这是我为完成目标而创建的任务:
- 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\
我知道如何编写第二个任务来完成第一个任务的目标吗?
答案 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