2016-04-13 2 views
0

У меня есть машина, на которой установлена ​​zsh. Я создал следующий скрипт, чтобы сделать некоторые укладываетЗапуск npm и узла от ansible

Установлено сделал

# Install NVM 
sudo curl https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash 
## Reload shell to start using nvm 
. ~/.zshrc 
. ~/.nvm/nvm.sh 
nvm install 0.12 

Теперь я хочу, чтобы подключиться к экземпляру и запустить анзибль-пьесы, которая начнет следующий скрипт:

sh-script.sh

npm install aws-sdk 


node create-queue.js $machine_name 
node create-queue.js $machine_name 

При запуске playbook я получаю следующие ошибки: строка 28: npm: команда не найдена - строка 32: node: команда не найдена - строка 33: node: команда не найдена.

Когда я передаю экземпляр ssh и запускаю «узел» или «npm», я получаю действительный ответ и желаемое условие. анзибль-Playbook очень просто:

анзибль

- hosts: tag_Name_TestInstance 
    tasks: 
    - name: Run Script 
     shell: /home/ubuntu/sh-script.sh '{{ machine_name }}' 

ответ

0

Это, вероятно, потому, что НПМ и узел не был добавлен в $PATH. Модуль оболочки будет использовать команду /bin/sh для выполнения вашей команды.

Если вы хотите, чтобы запустить сценарий в Zsh, попробуйте добавить хижину на пути к вашей ЗШ установки, например: !#/usr/local/bin/zsh

1

лучший способ ИМХ для решения этой проблемы является, чтобы добавить дополнительный путь бен к анзиблю окр ,

- name: Install aws-sdk 
    command: /opt/node/bin/npm "something" 
    environment: 
     PATH: "{{ ansible_env.PATH }}:/opt/node/bin" 

или вы могли бы использовать родной анзибль функцию NPM

description: Install "aws-sdk" node.js package. 
    - npm: name=aws-sdk path=/app/location 
    environment: 
     PATH: "{{ ansible_env.PATH }}:/opt/node/bin" 

и две другие задачи, для выполнения сценария этого узла JS. Таким образом, вы могли бы также узнать больше о том, что происходит.

Удача

+0

Спасибо @nelasx Работает как шарм !! ; D –

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