将curl --data-urlencode翻译成Ansible uri模块

时间:2017-09-14 13:17:11

标签: curl ansible

您如何将此curl请求转换为ansible uri模块?

curl -G http://localhost:8086/query?u=admin&p=password \
  --data-urlencode "q=SHOW databases"

我不知道如何放置--data-urlencode部分

这是我到目前为止(不工作):

- name: Create influx users with POST
   uri:
     url: "http://localhost:8086/query/?u=admin&p=password"
     method: GET
     body: "q=SHOW databases"

我得到的错误是:

  

“错误”:“缺少必需参数\”q \“”

然而,以下工作:

- name: Create influx users with POST
  uri:
    url: "http://localhost:8086/ping"
    method: GET
    status_code: 204

编辑:最终工作解决方案

此工作示例将向您显示您的Influxdb的当前用户

- name: Create influx users with POST
   uri:
     url: "http://localhost:8086/query?q={{'SHOW USERS '|urlencode}}"
     method: GET
     user: admin
     password: password

2 个答案:

答案 0 :(得分:4)

Jinja中有一个urlencode过滤器......但还有另一个问题。 GET请求没有正文;当你跑:

curl -G 'http://localhost:8086/query?u=admin&p=password' --data-urlencode "q=SHOW databases"

实际发生的是:

GET /query?u=admin&p=password&q=SHOW%20databases

所以你需要像这样重写你的任务:

- name: Create influx users with POST
   uri:
     url: "http://localhost:8086/query/?u=admin&p=password?{{ 'q=SHOW databases'|urlencode }}"
     method: GET

答案 1 :(得分:0)

您可以使用POST方法将uri的{​​{1}}设置为body_format

form-urlencoded