Translate curl——数据urlencode到Ansible uri模块
您将如何将此Translate curl——数据urlencode到Ansible uri模块,curl,ansible,Curl,Ansible,您将如何将此curl请求转换为ansible uri模块 curl -G http://localhost:8086/query?u=admin&p=password \ --data-urlencode "q=SHOW databases" 我不知道如何或将如何放置--data urlencode部分 这就是我目前所拥有的(不工作): 我得到的错误是: “错误”:“缺少必需的参数\”q“ 但是,以下方法可行: - name: Create influx users with PO
curl
请求转换为ansible uri模块
curl -G http://localhost:8086/query?u=admin&p=password \
--data-urlencode "q=SHOW databases"
我不知道如何或将如何放置--data urlencode
部分
这就是我目前所拥有的(不工作):
我得到的错误是:
“错误”:“缺少必需的参数\”q“
但是,以下方法可行:
- name: Create influx users with POST
uri:
url: "http://localhost:8086/ping"
method: GET
status_code: 204
编辑:最终工作解决方案
这个工作示例将向您展示XDB的当前用户
- name: Create influx users with POST
uri:
url: "http://localhost:8086/query?q={{'SHOW USERS '|urlencode}}"
method: GET
user: admin
password: password
Jinja有一个过滤器…但还有另一个问题。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
您可以使用方法POST将
uri
的body\u格式设置为formurlencoded
- name: Show Databases
uri:
url: "http://localhost:8086/query"
user: admin
password: password
method: POST
body:
q: SHOW DATABASES
body_format: form-urlencoded
这只会将主体更改为“body”:“q%3DSHOW%20databases”,而不是“body”:“q=show databases”,并且我仍然得到:“error”:“缺少必需的参数\“q\”。结果是,-G
+--data urlencode
最终只是将“body”添加为附加查询参数。请参阅答案中的更新。当我使用uri:'http://localhost:8086/query?q=HELP“
,我得到了正确的响应,但当我使用url:http://localhost:8086/query?{{'q=SHOW databases'| urlencode}}
我仍然得到'缺少的参数\q
Nginx日志:“GET/query?q%3DSHOW%20数据库
但是通过curl正确的一个看起来像:”GET/query?p=%5编辑的%5D&q=show+databases&u=admin
url:“-如果我将空间硬编码为“%20”,这是可行的,但是如果你将q=
移到{…}
块之外,它会起作用吗?url:”http://localhost:8086/query/?u=admin&p=password?q={{‘显示数据库’| urlencode}}“
- name: Show Databases
uri:
url: "http://localhost:8086/query"
user: admin
password: password
method: POST
body:
q: SHOW DATABASES
body_format: form-urlencoded