2017-05-26 6 views
0

私は1.9を使用していますが、2つのコマンドを実行します。私はいくつかのバリエーションを試してみました:いくつかのコマンドを実行するには

- name: npm build 
    command: npm run build 
    args: 
    chdir: "{{ app_dir }}" 

- name: clean up 
    shell: sed_index.sh 
    args: 
    chdir: "{{ app_dir }}" 

私は次のエラーを取得する実行している場合:

"stderr": "/bin/sh: 1: npm: not found" 

しかし

npm run build 
私は、サーバーにログインし、それを実行すると正常に動作します

app_dir。

私も試してみました:

再び
- name: npm install and clean 
    command: "{{ item }} chdir={{ app_dir }}" 
    with_items: 
     - npm run build 
     - sed_index.sh 

私はNPMが見つからないエラーが発生します。

私はNPMの実行ビルドコマンドをコメントアウトした場合、以下の「CDのdistの」コマンドでsed_indexスクリプトを実行しているとき、私は「distの」が見つかりませんと言って、エラーが発生します。

sed_index.sh

#!/usr/bin/env bash 
cd dist 
sed -i 's|=static/css/font-awesome.min.css rel=stylesheet>|=/app/static/css/font-awesome.min.css rel=stylesheet>|g' index.html 

任意のアイデアは?

答えて

1

実行可能ファイルは、おそらく/ usr/bin/npmのような標準的な場所にはありません。おそらく/ usr/local/bin/npmですが、インストール先を見つけて完全修飾パスを使用するのはあなた次第です。 npmコマンドを実行できるログインから、 'which npm'を実行します。出力はちょうどnpmの代わりに使いたいものになります。

FYI - 私がプレイブックを書く時間をかけたくない、単発的なやり方をしているときは、簡単なライナーではない場合、私は小さなスクリプトを書くスクリプトモジュールを介して実行します。これらのスクリプトの最初のコマンドの1つは、コマンドの一部が非標準の場所にあることが分かっている場合にPATHを設定することです。

1

npm実行可能ファイルへのフルパスを使用してください。非対話型シェルセッションでAnsibleが実行され、rcファイルで設定された環境は読み込まれません。

「dist 'not found」エラーが発生した場合は、distディレクトリが存在しないか、間違ったディレクトリから呼び出されたことを意味します。あなたが提供した情報があれば教えてもらえません。

+0

私は、サーバー上でスクリプトをシェルにNPMの実行ビルドを追加しましたが、その後のコマンドでそれを実行しました:「{{}} APP_DIR/npm_build.sh」私は、NPM取得:コマンドが見つからないエラーが発生しました。 npmはサーバにグローバルにインストールされていますので、なぜそれが – proximacentauri

+0

になるのかわかりません。私はすでにその質問に回答しています。 – techraf

+0

@techrat、申し訳ありませんが、私はあなたが私の質問に答えてくれたことを理解していませんか? npmはサーバー上に存在し、私はどのディレクトリからでも実行できるはずです。 sed_indexについて。shのdistディレクトリは存在しますが、サーバ上のスクリプトの代わりに、すべてのコマンドを実行する必要があるかもしれません。なぜなら、スクリプトが現在サーバ上のディレクトリを認識する方法を知りません。 – proximacentauri

0

@techraf答えはこの問題を解決するのに役立ちます。あなたが別の方法を探している場合、ansibleコマンドで以下のように試してみる何らかの理由で

ansible -m shell -a "/bin/bash -c 'cd {{app_dir}} && npm run build && ./sed_index.sh'" -e "app_dir=/path/to/app_dir" <host/group name> 

あなたはそれを実行している得れば戻ってあなたの脚本にそれを変換することができるはずです。

関連する問題