用ansible playbook执行curl -X

Asi*_*mez 21 ansible ansible-playbook ansible-2.x

我想使用ansible playbook执行下一个命令:

curl -X POST -d@mesos-consul.json -H "Content-Type: application/json" http://marathon.service.consul:8080/v2/apps
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?

如果我跑:

- name: post to consul
  uri:
    url: http://marathon.service.consul:8080/v2/apps/
    method: POST
    body: "{{ lookup('file','mesos-consul.json') }}"
    body_format: json
    HEADER_Content-Type: "application/json"
Run Code Online (Sandbox Code Playgroud)

我有下一个失败:

fatal: [172.16.8.231]: FAILED! => {"failed": true, "msg": "ERROR! the file_name '/home/ikerlan/Ik4-Data-Platform/ansible/playbooks/Z_PONER_EN_MARCHA/dns-consul/mesos-consul.j2' does not exist, or is not readable"}

Mil*_*eek 35

最好的方法是使用URI模块:

tasks:
- name: post to consul
  uri:
    url: http://marathon.service.consul:8080/v2/apps/
    method: POST
    body: "{{ lookup('file','mesos-consul.json') }}"
    body_format: json
    headers:
      Content-Type: "application/json"
Run Code Online (Sandbox Code Playgroud)

由于您的json文件位于远程计算机上,因此最简单的执行方法可能是使用shell模块:

- name: post to consul
  shell: 'curl -X POST -d@/full/path/to/mesos-consul.json -H "Content-Type: application/json" http://marathon.service.consul:8080/v2/apps'
Run Code Online (Sandbox Code Playgroud)