我正在尝试是否可以使用bundle
检查localhost中ansible-playbook local.yml
的版本,如下面的local.yml
所示。
local.yml
---
- hosts: local
remote_user: someuser
tasks:
- name: Check bundle version
shell: "{{ansible_user_shell}} -l -c 'bundle --version'"
args:
chdir: "/path/to/rails/dir"
库存文件如下:
主机
[local]
127.0.0.1
[local:vars]
ansible_ssh_user=someuser
但是我收到错误说,
stderr:zsh:1:找不到命令:bundle`
我不知道为什么我收到此错误,因为我确认在localhost上安装了bundle。另外我发现shell模块不使用登录shell,因此没有加载.zshrc中的环境变量,因此我使用-l
(使用登录shell)选项运行zsh。但它不起作用。有什么我想念的吗?
答案 0 :(得分:4)
我自己想出了问题。问题是zsh的配置。我以为.zshrc是在每次登录时执行的。这是不准确的,因为.zshrc仅在登录和交互式 shell上加载。在上面的例子中,命令是 NOT 在交互式shell上运行,因此没有加载.zshrc。
要在每次使用登录shell时加载.zshrc,我创建了.zprofile
,它在登录shell上加载,如下所示:
# include .zshrc if it exists
if [ -f "$HOME/.zshrc" ]; then
. "$HOME/.zshrc"
fi
另一个解决方案可能是添加-i(交互式shell)选项:)