您将如何将此curl请求转换为ansible uri模块?
curl -G http://localhost:8086/query?u=admin&p=password \
--data-urlencode "q=SHOW databases"
Run Code Online (Sandbox Code Playgroud)
我不知道该如何或该如何放置--data-urlencode零件
这是我到目前为止(不起作用)的内容:
- name: Create influx users with POST
uri:
url: "http://localhost:8086/query/?u=admin&p=password"
method: GET
body: "q=SHOW databases"
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
“错误”:“缺少必需的参数\” q \“”
但是,以下方法有效:
- name: Create influx users with POST
uri:
url: "http://localhost:8086/ping"
method: GET
status_code: 204
Run Code Online (Sandbox Code Playgroud)
编辑:最终的工作解决方案
这个工作示例将向您显示influxdb的当前用户
- name: Create influx users with POST
uri:
url: "http://localhost:8086/query?q={{'SHOW USERS '|urlencode}}"
method: GET
user: admin
password: password
Run Code Online (Sandbox Code Playgroud)
Jinja中有一个urlencode过滤器...但是还有另一个问题。甲GET请求不具有主体; 当您运行时:
curl -G 'http://localhost:8086/query?u=admin&p=password' --data-urlencode "q=SHOW databases"
Run Code Online (Sandbox Code Playgroud)
实际发生的是:
GET /query?u=admin&p=password&q=SHOW%20databases
Run Code Online (Sandbox Code Playgroud)
因此,您需要像这样重写您的任务:
- name: Create influx users with POST
uri:
url: "http://localhost:8086/query/?u=admin&p=password?{{ 'q=SHOW databases'|urlencode }}"
method: GET
Run Code Online (Sandbox Code Playgroud)