bash - 如何在 Ansible 中将 shell 函数作为命令运行?

标签 bash shell ansible nvm

我正在使用 nvm ( https://github.com/creationix/nvm ),它本质上是一个 shell 脚本,您可以将其源代码放入 shell 然后调用,例如,nvm install [version]。但无论我如何尝试调用该函数,ansible 似乎都找不到它。

我试过使用 commandshell 模块。我试过使用 becomebecome_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/

相关文章:

windows - Ansible WinRM : Bails out with "[Errno 111] Connection refused"

amazon-ec2 - 使用 Ansible 禁用 ec2 实例终止保护

python - bash 脚本可能有语法错误不确定尝试直到循环

java - 从 Java 运行 shell 脚本以通过 USB 发送数据

vba - 调用 Shell - VBA 中的资源管理器搜索 - 解决方法

ansible - Ansible 中的角色和任务(和标签)有什么区别?

bash - 从通配符中删除每个文件的第一行?

bash - 如何从 GHC/Cabal/Stack 获取错误和警告计数?

bash - unix命令从单词的第一次出现和最后一次出现之间获取行并写入文件

c++ - 在MinGW的Shell中编译libtcod时出现 “Error 1”