2016-09-21 54 views
2

我使用的是nvmhttps://github.com/creationix/nvm),它基本上是一个shell脚本,您可以将它输入到shell然后调用,例如nvm install [version]。但无论我如何尝试并称之为功能,ansible似乎都无法找到它。如何在Ansible中将shell函数作为命令运行?

我试过使用commandshell模块。我试过使用becomebecome_user。我试过使用sudo -iu,如https://github.com/leonidas/ansible-nvm/blob/master/tasks/main.yml,但它不适用于我。它必须是可能的,但因为它在该文件中起作用。

如何在Ansible中运行任何shell函数?在这种情况下,我的.zshrc中有一个source nvm.sh,它允许我从交互式shell罚款中执行nvm命令。

回答

5

您需要使用shell模块,因为您要运行shell命令,并且您需要在nvm脚本中输入该环境。喜欢的东西:

- shell: | 
    source /path/to/nvm 
    nvm install ... 

无论你是否使用become取决于你是否愿意为root(或其他用户)运行命令。