eval命令如何在ansible playbook中工作

时间:2015-03-25 04:53:53

标签: python ansible ansible-playbook

我想通过ansible playbook来评估命令。这是剧本。

 - 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命令如何在ansible playbook中工作? 提前谢谢。

1 个答案:

答案 0 :(得分:5)

command模块期望可执行文件作为参数。

eval $(ssh-agent)是一个unix shell无法理解的表达式。

tedder说我不知道​​你为什么要设置ssh-agent,但如果你这样做,我建议你试试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会对其进行评估。