找不到 Ansible shell 命令`pod2man`
Ansible shell command `pod2man` not found
我正在尝试通过 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
script module的free-form
参数期望
path to the local script file followed by optional arguments.
所以 ansible 192.168.1.2 -m script -a "https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh"
应该行不通。如果您在 Ansible 控制主机上下载脚本并将自由格式参数设置为脚本的本地路径,它应该可以工作。
如评论中所述,问题是切换用户时 sudo
会清理 PATH
(有关详细信息,请参阅 this ServerFault question)。
将本地 PATH
导出到我建议的主机的临时命令似乎有点老套,但它有效(它使用 ansible
命令的 --extra-vars
选项以及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
。
我正在尝试通过 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
script module的free-form
参数期望
path to the local script file followed by optional arguments.
所以 ansible 192.168.1.2 -m script -a "https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh"
应该行不通。如果您在 Ansible 控制主机上下载脚本并将自由格式参数设置为脚本的本地路径,它应该可以工作。
如评论中所述,问题是切换用户时 sudo
会清理 PATH
(有关详细信息,请参阅 this ServerFault question)。
将本地 PATH
导出到我建议的主机的临时命令似乎有点老套,但它有效(它使用 ansible
命令的 --extra-vars
选项以及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
。