2016-09-21 2 views
2

Ich verwende nvm (https://github.com/creationix/nvm), was im Wesentlichen ein Shell-Skript ist, das Sie in Ihre Shell eingeben und dann zum Beispiel nvm install [version] aufrufen. Aber egal, wie ich versuche, diese Funktion zu nennen, ich kann es anscheinend nicht finden.Wie eine Shell-Funktion als ein Befehl in Ansible ausführen?

Ich habe versucht, die command und shell Module zu verwenden. Ich habe versucht, become und become_user zu verwenden. Ich habe versucht mit sudo -iu wie in https://github.com/leonidas/ansible-nvm/blob/master/tasks/main.yml, aber es funktioniert nicht für mich. Es muss jedoch möglich sein, da es in dieser Datei funktioniert.

Wie kann ich irgendeine Shell-Funktion in Ansible ausführen? In diesem Fall habe ich eine source nvm.sh in meiner .zshrc, die es mir ermöglicht, nvm Befehle aus dem interaktiven Shell-Fine auszuführen.

Antwort

5

Sie müssen das shell-Modul verwenden, da Sie Shell-Befehle ausführen möchten, und Sie müssen das Skript nvm in diese Umgebung eingeben. Etwas wie:

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

Ob Sie become verwenden, hängt davon ab, ob Sie nicht wollen, die Befehle als root (oder einem anderen Benutzer) laufen zu lassen.

Verwandte Themen