将curl --data-urlencode转换为Ansible uri模块

vik*_*ari 3 curl ansible

您将如何将此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)

lar*_*sks 7

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)