我想通过Ansible向API端点发出POST请求,其中post数据中的一些项是动态的,这是我尝试失败的内容:
我的body_content.json:
{ apiKey: '{{ KEY_FROM_VARS }}',data1: 'foo',data2: 'bar' }
这是我的Ansible任务:
# Create an item via API - uri: url="http://www.myapi.com/create" method=POST return_content=yes HEADER_Content-Type="application/json" body="{{ lookup('file','create_body.json') | to_json }}"
可悲的是,这不起作用:
Failed: [localhost] => {"Failed": true} msg: this module requires key=value arguments .... FATAL: all hosts have already Failed -- aborting
我的ansible版本是1.9.1
解决方法
你不能在yaml中使用这样的换行符.试试这个(“>”表示下一行要连接):
# Create an item via API - uri: > url="http://www.myapi.com/create" method=POST return_content=yes HEADER_Content-Type="application/json" body="{{ lookup('file','create_body.json') | to_json }}"
但我发现这更好:
# Create an item via API - uri: url: "http://www.myapi.com/create" method: POST return_content: yes HEADER_Content-Type: "application/json" body: "{{ lookup('file','create_body.json') | to_json }}"