Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阻止Ansible按字母顺序重新排列URI json帖子_Ansible - Fatal编程技术网

阻止Ansible按字母顺序重新排列URI json帖子

阻止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

我尝试用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
      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升级是否破坏了它。无论如何,谢谢你的观点。:)