eval命令如何在ansible playbook中工作

Jon*_*use 4 python ansible ansible-playbook

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

 - name: enable ssh-agent
   command: eval $(ssh-agent)
Run Code Online (Sandbox Code Playgroud)

我试过这本剧本.

$ ansible-playbook -i hosts site.yml
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误.

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

FATAL: all hosts have already failed -- aborting
Run Code Online (Sandbox Code Playgroud)

eval命令如何在ansible playbook中工作?提前致谢.

Kas*_*yap 5

command module期望可执行文件作为参数.

eval $(ssh-agent)是一个unix shell可以理解不是ansible 的表达式.

正如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)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,ansible将整个字符串传递给shell,shell将对其进行评估.