找不到Ansible shell命令`pod2man`

时间:2016-09-30 16:32:34

标签: shell ansible archlinux pacman

我试图通过Ansible使用脚本安装pacaur:

curl -s https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh | bash

使用ansible命令

ansible 192.168.1.2 -m shell -a "curl -s https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh | bash" 

但我pacman抱怨pod2man失踪。这似乎是ansible命令的PATH的一个问题。

使用ssh直接在机器上运行命令可以正常工作。

以下是ansible -m all shell -a 'echo $PATH'

的输出
localhost | SUCCESS | rc=0 >>
/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl

192.168.1.2| SUCCESS | rc=0 >>
/usr/bin:/bin:/usr/sbin:/sbin

2 个答案:

答案 0 :(得分:1)

script modulefree-form参数需要

  

本地脚本文件的路径,后跟可选参数。

所以ansible 192.168.1.2 -m script -a "https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh"应该不起作用。如果您在Ansible控制主机上下载脚本并将自由格式参数设置为脚本的本地路径,它应该可以工作。

答案 1 :(得分:0)

正如评论中所述,问题在于切换用户时sudo清理PATH(有关详细信息,请参阅this ServerFault question)。

将本地PATH导出到我建议的主机的ad-hoc命令似乎有点hacky但是它有效(它使用--extra-vars ansible命令与Jinja的变量一起使用注射)

ansible all -m shell -a "export PATH={{path}}; curl -s https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh | bash" -e path=$PATH

您还可以使用{{ lookup('env', 'PATH') }}转发PATH