2016-04-13 9 views
0

私はzshがインストールされたマシンを持っています。 私はいくつかのインストールを行うために、次のスクリプトを作成しました:実行可能なノードからnpmとノードを実行

インストールは

# 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 

今、私はインスタンスに接続し、次のスクリプトを開始しますansible-脚本を実行したいを作りましたsh-script.sh

npm install aws-sdk 


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

プレイバックを実行すると、次のエラーが表示されます。 行28:npm:コマンドが見つかりません - 行32:ノード:コマンドが見つかりません - 行33:ノード:コマンドが見つかりません。

インスタンスにsshを実行して「node」または「npm」を​​実行すると、有効な応答と望ましい条件が得られます。 ansible-脚本は非常に簡単です:

ansible

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

答えて

0

NPMとノードがあなたの$PATHに追加されていないので、これは可能性があります。シェルモジュールは、/bin/shを使用してコマンドを実行します。

あなたはzshの中でスクリプトを実行したい場合は、あなたのzshのインストールなどへのパスでシェバングを追加してみてください。これを解決する!#/usr/local/bin/zsh

1

最良の方法の私見をansible ENVに追加binパスを追加することです。

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

か、ノードjsのスクリプトを実行するために

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

と2つの他のタスクのネイティブansible NPMの機能を使用することができます。そうすれば、何が起こっているのかについてさらに多くの情報を得ることができます。

幸運

+0

ありがとう@nelasx魅力的な作品! ; D –

関連する問題