我试图调用一些REST API并使用Ansible对服务进行一些POST请求。由于正文(JSON)发生了变化,我试图对某些文件进行循环。这是剧本:
name_of_the_plugin:name_of_the_goal
但是当我运行剧本时,我收到了这个错误:
领域' args'具有无效值,似乎包含未定义的变量。错误是:' item'未定义
问题出在哪里?
答案 0 :(得分:2)
主要问题是with_
指令应属于任务字典(一个缩进级别)。
第二个问题是,您应该with_items
使用文件查找,或只使用"{{ item }}"
with_files
:
- name: do post requests
uri:
url: "https://XXXX.com"
method: POST
return_content: yes
body_format: json
headers:
Content-Type: "application/json"
X-Auth-Token: "XXXXXX"
body: "{{ item }}"
with_files:
- server1.json
- server2.json
- proxy.json
或
- name: do post requests
uri:
url: "https://XXXX.com"
method: POST
return_content: yes
body_format: json
headers:
Content-Type: "application/json"
X-Auth-Token: "XXXXXX"
body: "{{ lookup('file', item) }}"
with_items:
- server1.json
- server2.json
- proxy.json
此外,{{ ... }}
构造不是引用每个变量的必需方法 - 它是一个构造,打开一个Jinja2表达式,在其中使用变量。对于单个变量,它确实变为:{{ variable }}
,但是一旦打开它,您就不需要再次执行它,所以写它是完全没问题的:
body: "{{ lookup('file', item) }}"