2017-03-07 23 views
0

私のCentos/7マシンでOS環境変数を設定する必要があります。シェル上で、それでもシェフ:環境変数を設定する

host = 'locahost' 
port = 9201 

ENV['LV_ES_HOST'] = host 
ENV['LV_ES_PORT'] = '#{port}' 

私は私のvariables.rbファイルを使用して、それを試してみた

$ echo $LV_ES_HOST 

$ 
  1. がどのように私はOS環境変数を設定することができますか?
  2. OS環境変数をユーザーにのみ表示することはできますか?

私のjeeアプリケーションがその値を読み取れるようにするには、OSで使用可能な環境変数が必要です。

私は自分のマシンでいくつかのjeeコンテナを実行していますが、アプリケーションはLC_ES_HOST環境変数を取得する必要があるときに実行されています。

+4

[シェフレシピを使用して環境変数を設定するにはどうすればよいですか?](http://stackoverflow.com/questions/6284517/how-can-you-use-a-chef-recipe-to-環境変数を設定) – Tensibai

+0

ユーザー環境変数はどうですか?ユーザーが利用できる環境変数を設定できることを覚えています。 – Jordi

+0

質問はOS env varで始まります。ユーザーごとに利用できるようになります。デーモンを起動する必要がある場合は、別の方法がありますが、これは通常ターゲットアプリケーションに依存します。 – Tensibai

答えて

1

もう1つの質問では、基本的な問題について実際に説明していません。 UNIX環境変数はfork()の間に親プロセスから子プロセスに継承されます。だから、あなたのシェフコードにENVで物事を設定すると、executeリソースを介して実行されるもののようにシェフの下に来るサブプロセスに影響します。しかし、SSH経由でログインすると、シェルはchef-clientのサブプロセスではないので、これらの変数は表示されません。残念ながら、Unixには地球環境変数のための汎用的なソリューションはありませんので、他の質問に列挙されているいくつかの妥協案の1つを選択する必要があります。

+0

ユーザー環境変数はどうですか?ユーザーが使用できる環境変数を設定できることを覚えました... – Jordi

+0

ホームディレクトリ内のそのユーザーのシェル初期化スクリプトで、ユーザーごとの変数を設定する必要があります。 – coderanger

+0

はい、私はそれを意味しました。それにもかかわらず、それはシェフを使用して行うことができますか? – Jordi