私はシステムからUbuntuの環境変数を利用するために探していますシェフのレシピを持っています。しかし、同じマシンからEG echo $AWS_ACCESS_ID
を実行すると、期待通りの結果が返されます。シェフレシピ使用Ubuntuの環境変数は
私はこのシェフのレシピでルビーENVの構文を使用すると何か問題がありますか?またはENVの範囲が必要な特性を持たない別の理由はありますか?
私はシステムからUbuntuの環境変数を利用するために探していますシェフのレシピを持っています。しかし、同じマシンからEG echo $AWS_ACCESS_ID
を実行すると、期待通りの結果が返されます。シェフレシピ使用Ubuntuの環境変数は
私はこのシェフのレシピでルビーENVの構文を使用すると何か問題がありますか?またはENVの範囲が必要な特性を持たない別の理由はありますか?
あなたはchef-client
の環境からのものを得ることを意味するので、ENV
を直接使用しています。 chef-client
は一般にSSH(シェルなし)またはサービス(やはりシェルなし)で直接実行されるので、すべてのシェル初期化ファイルはロードされません。 Unixには、「グローバル環境変数」や「システム環境変数」という概念はありません。代わりに何らかの種類の設定ファイルを使用したい(または必要とする)でしょう。
hmですが、シェフのレシピbashコマンドがレシピに定義された 'user'として実行されていることが分かりました。これは環境スコープが必要でした。 – cars
Bashは含まれていません。あなたは 'ENV'と文字列補間を使用しています。これはレシピがコンパイルされたときにchef-clientによって評価されます。 – coderanger
私の文脈では、この実装はAWSサーバー向けです。
http://docs.aws.amazon.com/opsworks/latest/userguide/data-bag-json-app.html
あなたがIRB行うと確認することができます 'ENV'値:
AWSは、レシピaws_opsworks_app経由シェフとopsworksを経由して管理対象マシンの環境変数へのインタフェースを提供していますか? – AnkitG
はい、値はirb – cars