阻止Ansible按字母顺序重新排列URI json帖子
我尝试用ansible与zabbix API通信。它等待json输入并处理它,但是,它不工作。我的playbook任务如下所示:阻止Ansible按字母顺序重新排列URI json帖子,ansible,Ansible,我尝试用ansible与zabbix API通信。它等待json输入并处理它,但是,它不工作。我的playbook任务如下所示: - name: Login to zabbix uri: url: https://{{ zabbix_server_ip }}/api_jsonrpc.php method: POST validate_certs: false body: jsonrpc: 2.0 method: user.login
- name: Login to zabbix
uri:
url: https://{{ zabbix_server_ip }}/api_jsonrpc.php
method: POST
validate_certs: false
body:
jsonrpc: 2.0
method: user.login
params:
user: admin
password: XXX
id: 1
auth: null
body_format: json
register: zabbix_login
"body": {
"auth": null,
"id": 1,
"jsonrpc": 2.0,
"method": "user.login",
"params": {
"password": "XXX",
"user": "admin"
}
如果我使用-vvvv
运行playbook,那么我会看到ansible发布到API的内容。有趣的部分如下所示:
- name: Login to zabbix
uri:
url: https://{{ zabbix_server_ip }}/api_jsonrpc.php
method: POST
validate_certs: false
body:
jsonrpc: 2.0
method: user.login
params:
user: admin
password: XXX
id: 1
auth: null
body_format: json
register: zabbix_login
"body": {
"auth": null,
"id": 1,
"jsonrpc": 2.0,
"method": "user.login",
"params": {
"password": "XXX",
"user": "admin"
}
这是正确的,应该发布相同的消息,但是由于此错误消息(也从-vvv
解析),API回答中的zabbix_login
仍然为空:
我相信问题应该是API需要jsonrpc:2.0
参数作为请求的开始,正如它的文档所描述的那样。但似乎可以将json请求按字母顺序重新排序。我如何防止这种情况
我已经读过这个问题:还有答案,但它只是重新排列了请求的答案。我需要保持与剧本中所写请求相同的顺序。根据评论,我修改了剧本并引用了每个输入
- name: Login to zabbix
uri:
url: https://{{ zabbix_server_ip }}/api_jsonrpc.php
method: POST
validate_certs: false
body:
jsonrpc: '2.0'
method: 'user.login'
params:
user: 'admin'
password: 'XXX'
id: '1'
auth: null
body_format: json
register: zabbix_login
这似乎解决了这个问题。并不是它“一开始”想要一个json密钥,而是它想要
“jsonrpc”:“2.0”
,正如人们在给您的响应负载中看到的那样。只需引用:2.0
(作为:'2.0'
)就可以避免将其作为邮件发送number@mdaniel你说得对。奇怪的是,它以前工作过,我认为zabbix更新使它更加严格。根据您的评论,我检查了PHP升级是否破坏了它。无论如何,谢谢你的观点。:)