2016-03-04 143 views
10

我想执行使用ansible剧本的下一个命令:执行卷曲-X与ansible剧本

curl -X POST [email protected] -H "Content-Type: application/json" http://marathon.service.consul:8080/v2/apps 

如何运行呢?

如果我运行:

- 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" 

我的下一个失败:

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

回答

19

要做到这一点,最好的办法是使用URI module

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" 

由于你的JSON文件在REM德机执行的最简单的方法可能是与外壳模块:

- name: post to consul 
    shell: 'curl -X POST [email protected]/full/path/to/mesos-consul.json -H "Content-Type: application/json" http://marathon.service.consul:8080/v2/apps' 
+0

感谢@ smiller171但tryes执行剧本的文件“mesos-consul.json”,而不是远程计算机的,我有当我执行你的模块时失败,它在描述中。 –

+0

您可以使用[获取模块](http://docs.ansible.com/ansible/fetch_module.html)从远程节点检索json文件,然后使用URI模块,也可以使用“脚本“模块在远程节点上执行卷曲命令。我可以更新我的答案,以说明你喜欢哪一个。 – smiller171

+0

我认为使用脚本模块是运行命令最简单的方法,我不知道那么多,因为我没有那么多的经验,所以请我想要最简单的方法来理解。谢谢@ smiller171 –