2015-03-25 33 views
3

我想eval命令通過ansible playbook。這是劇本。如何才能eval命令工作在劇本

- name: enable ssh-agent 
    command: eval $(ssh-agent) 

我試過這個劇本。

$ ansible-playbook -i hosts site.yml 

但是我得到了這個錯誤。

failed: [host] => {"cmd": "eval", "failed": true, "rc": 2} 
msg: [Errno 2] No such file or directory 

FATAL: all hosts have already failed -- aborting 

eval命令如何在正確的劇本中工作? 在此先感謝。

+1

eval是一個shell函數,而不是函數/二進制文件。爲Ansible設置ssh-agent也沒有什麼意義。目標是什麼?爲用戶設置或在Ansible中做些什麼? – tedder42 2015-03-25 13:46:50

回答

5

command模塊需要一個可執行文件作爲參數。

eval $(ssh-agent)是一個unix shell可以理解的無法理解的表達式。

作爲攤機說我不明白你爲什麼要設置ssh代理,但如果你這樣做,我建議你給shell模塊嘗試,而不是command。希望你已經設定ssh-agent某種適當的價值。

# Just for debugging. 
- name: enable ssh-agent 
    shell: echo "ssh-agent = $(ssh-agent)" 
- name: enable ssh-agent 
    shell: eval $(ssh-agent) 

在這種情況下,ansible會將整個字符串傳遞給shell並且shell會對其進行評估。

+0

這對於將VM設置爲一次性開發環境很有用。 – 2016-03-28 17:29:12