2016-03-04 56 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 –