2016-09-21 3 views
2

Я использую nvm (https://github.com/creationix/nvm), который по сути является сценарием оболочки, который вы используете в своей оболочке, а затем вызываете, например, nvm install [version]. Но независимо от того, как я пытаюсь назвать эту функцию, невозможно, чтобы она не могла найти ее.Как запустить функцию оболочки как команду в Ansible?

Я пробовал использовать модули command и shell. Я пробовал использовать become и become_user. Я пробовал использовать sudo -iu, как в https://github.com/leonidas/ansible-nvm/blob/master/tasks/main.yml, но он не работает для меня. Это должно быть возможно, так как оно работает в этом файле.

Как я могу запустить любую функцию оболочки в Ansible? В этом случае у меня есть source nvm.sh в моем .zshrc, который позволяет мне выполнять команды nvm из оболочки интерактивной оболочки.

ответ

5

Вам необходимо использовать модуль shell, потому что вы хотите запускать команды оболочки, и вам нужно будет использовать исходный код в сценарии nvm в этой среде. Что-то вроде:

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

ли или не использовать вы become зависит от того, хотите ли вы запускать команды, как root (или другого пользователя).

Смежные вопросы