我正在使用 nvm
( https://github.com/creationix/nvm ),它本质上是一个 shell 脚本,您可以将其源代码放入 shell 然后调用,例如,nvm install [version]
。但无论我如何尝试调用该函数,ansible 似乎都找不到它。
我试过使用 command
和 shell
模块。我试过使用 become
和 become_user
。我试过像 https://github.com/leonidas/ansible-nvm/blob/master/tasks/main.yml 中那样使用 sudo -iu
,但这对我不起作用。它必须是可能的,因为它在那个文件中工作。
如何在 Ansible 中运行任何 shell 函数?在这种情况下,我的 .zshrc 中有一个 source nvm.sh
,它允许我从交互式 shell 执行 nvm
命令。
最佳答案
您需要使用 shell
模块,因为您想要运行 shell 命令,并且您需要将 nvm
脚本导入该环境。像这样的东西:
- shell: |
source /path/to/nvm
nvm install ...
是否使用 become
取决于您是否希望以 root
(或其他用户)身份运行命令。
关于bash - 如何在 Ansible 中将 shell 函数作为命令运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39622463/