2015-10-05 86 views
12

我有一種情況需要檢查本地計算機上的文件狀態(我將撥打ansible-playbook ...)。ansible - 檢查本地計算機上是否存在文件

如果存在由用戶創建的文件,則需要將其複製到遠程主機。如果它不存在,那麼遠程主機都不需要它。

我知道我做的事情,如:

- name: Check for ~/.blah/config 
    stat: path=/home/ubuntu/.blah/config 
    register: stat_blah_config 

- name: Do something with blah config 
    shell: ~/do_something_with_config.sh 
    when: stat_aws_config.stat.exists == true 

但如果文件存在於遠程只會工作。有沒有辦法有條件地執行任務(如複製)只有當文件存在本地stat在第一個任務中執行本地而不是遠程),如果它不是默默地失敗?我不確定ansible是否具有這種功能,但它會很有用。

+0

其實,我可能已經找到了答案在這裏,使用'local_action':http://stackoverflow.com/問題/ 28855236/copy-local-file-if-exists-using-ansible?rq = 1 – FrustratedWithFormsDesigner

回答

14

通過local_action聲明委派任務到本地主機應該做你想要什麼:

- name: Check for ~/.blah/config 
    local_action: stat path=/home/ubuntu/.blah/config 
    register: stat_blah_config 
+0

爲了使用'local_action',是否需要設置任何特殊權限設置?我不斷收到「權限被拒絕」的錯誤: '任務:[blah_stuff |檢查〜/ .blah/config] ************************************** 失敗: [i-34b724e0 - > 127.0.0.1] => {「failed」:true,「parsed」:false} BECOME-SUCCESS-tqbkvkywytucgnfrjbmokwelpwddzevz /bin/sh:1:/tmp/.ansible/tmp/ansible-tmp -1444157688.04-230781782204943/stat:Permission denied' 我嘗試過使用'sudo:true',但這似乎沒有幫助 – FrustratedWithFormsDesigner

+0

如果'sudo:true'失敗,那麼請確保您運行的用戶擁有無需密碼即可sudo的能力。 Ansible不會提示你輸入密碼,所以如果它不能執行任務,那麼它將會失敗。 –

相關問題