当我通过 ssh 进入远程服务器并运行时,env我返回以下路径:
PATH=/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/myusername/bin
Run Code Online (Sandbox Code Playgroud)
相反,当我执行 ansible 命令时ansible -a "env",我得到以下路径:
PATH=/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin
Run Code Online (Sandbox Code Playgroud)
可以想象,试图运行时,这会导致问题
sbin类似的命令service,ntpdate等等,因为它需要打字的完整路径sbin目录命令。(是的,我知道有 ansible 模块可以做到这一点,但我正在尝试解决 PATH 被缩短/截断的原因。)
有谁知道为什么会这样?
编辑:我问这个的原因是我正在按照书中的例子进行操作,Ansible for DevOps并且由于这个原因,一些例子不起作用。
我试图开始工作的例子来自本书的第 28 页:
$ ansible multi -s -a "service ntpd stop"
$ ansible multi -s -a "ntpdate -q 0.rhel.pool.ntp.org"
$ ansible multi -s -a "service ntpd start"
Run Code Online (Sandbox Code Playgroud)
这些命令总是会引发错误。但是如果我将它们更改为包含完整路径,它们就可以工作。
$ ansible multi -s -a "/sbin/service ntpd stop"
$ ansible multi -s -a "/usr/sbin/ntpdate -q 0.rhel.pool.ntp.org"
$ ansible multi -s -a …Run Code Online (Sandbox Code Playgroud)