2016-10-17 10 views
2

私は、AnOSを使用してcoreOSボックスをプロビジョニングしようとしています。まず、ブートストラップされたボックスhttps://github.com/defunctzombie/ansible-coreos-bootstrapCoreOSをプロビジョニングできる可能性があります。

これは、パス(/ home/core/binにある)以外のすべての広告が動作するように見えます。次のステップでは、私はドッキングウィンドウ-PYをインストールタスクを実行しようとしています:

- name: Install docker-py 
    pip: name=docker-py 

ピップのフォルダがパスではないので、私はそれがansible使用しなかった:私は実行しようとしている場合は

environment: 
    PATH: /home/core/bin:$PATH 

をこのタスクでは、次のエラーが表示されます。

致命的:[192.168.0.160]:FAILED! \ n "stderr:/ home/core/bin"、​​ "失敗"、 "失敗":true、 "msg": "/pip:行2:basename:コマンドが見つかりません\ n/home/core/bin/pip:行2:/ root/pypy/bin /:いいえそのようなファイルまたはディレクトリ\ n "}

/root/pypy/bin/はどこから来たのか、これは問題だと思われます。何か案が?

+0

エラーメッセージを見るだけで、おそらく '/ root/pypy/bin /'の原因となっている根本的な問題は 'basename:command not found'のようです。 –

+0

私が箱に入れて 'home/core/bin/pip install docker-py'を実行すると面白い事実があります。コマンドは問題なく実行されます。私がAnsibleからそれを実行した場合にのみ障害が発生します。 – john84

答えて

1

可変変数を設定するときにシェルスタイルの変数展開を使用することはできません。この文では...

environment: 
    PATH: /home/core/bin:$PATH 

...あなたはリテラル/home/core/bin:$PATHにごPATH環境変数を設定しています。つまり、既存の値$PATHを吹き飛ばしているため、basenameのような基本的なものに対して「コマンドが見つかりません」というエラーが表示されます。

ansible呼び出し、またはシェルからpipを呼び出す前$PATHを変更し、あなたが$PATHを既存のどこかにpipをインストールすることを検討してはCRIPT:

- name: install something with pip 
    shell: | 
    PATH="/home/core/bin:$PATH" 
    pip install some_module 
+0

あなたの応答をありがとう、残念ながら同じエラーを作成する可能性のあるシェルスクリプトを使用してピップを呼び出します。 – john84

+0

あなたはもうAnsibleでPATHを設定しようとしていませんか?あなたの新しいプレイブックであなたの質問を更新するかもしれません。牧場主サーバ REMOTE_USER:coreos gather_facts:真 になる:はい become_method:sudoの タスク: - 名前: - ホスト を ':次のように – larsks

+0

ねえ、かなりSHUREはい、私のYMLに見えるピップで何かをインストールし シェル:| PATH = "/ホーム/コア/ binに:$ PATHに" ピップsome_moduleをインストール ' – john84

0

問題が存在する場合はその/ホーム/コア/ binに/ピップスクリプトました文字どおり:

#!/bin/bash 
LD_LIBRARY_PATH=$HOME/pypy/lib:$LD_LIBRARY_PATH $HOME/pypy/bin/$(basename $0) [email protected] 

$HOME変数が、/rootであり、/ home/coreではありません。 $HOME/home/coreに変更するとうまくいくはずです。

関連する問題