0

我正在尝试通过 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
4

2 回答 2

1

正如评论中所报告的,问题在于切换用户时会进行sudo清理PATH(有关详细信息,请参阅此 ServerFault 问题)。

我建议的将本地导出到主机的临时命令PATH似乎有点笨拙,但它可以工作(它使用命令--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.

于 2016-10-01T17:06:36.043 回答
1

脚本模块free-form参数期望

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

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

于 2016-09-30T17:28:22.783 回答