2016-08-25 11 views
0

nginxでは、特定のインターフェイス(デュアルホームサーバー上)でリッスンするには、IPアドレス経由でインターフェイスを宣言する必要があります。明らかに、これはシェフのレシピではスケーラブルではありません.IPを静的にすることはできませんが、代わりにサーバーのインターフェイスを指すようにします。これを達成する方法はありますか?Nginx&Chef:特定のインターフェイスでリッスンするスケーラブルなルールを作成する方法を教えてください。

答えて

0

シェフはOhaiを使用してシステムに関する情報を収集します。シンプルな形式はnode['ipaddress']です。これは、通常、デフォルトルートとのインターフェイスに対応するIPです。これは必ずしもあなたが望むものではないかもしれませんので、すべてのインターフェースのハッシュをnode['network']['interfaces']の下に置いて、それらを反復処理して、必要なインターフェースを見つけて、そのアドレスを取得してください。コマンドラインからohai | lessを実行すると、利用可能なすべてのデータが表示されます。

+0

この返答いただきありがとうございます...私は投稿した直後にこれをすべて学んだのですが、それは私の解決策ではありませんでした。私のサーバはデュアルホームであり、Joyentは従来の/ etc/network/interfacesファイルとは異なるメカニズムでNICを管理していたので、私は創造的にしなければなりませんでした。ノード[ipaddress]属性は私にeth1を取得できましたが、eth0を取得するにはシェフテンプレートとしてファイルを作成し、変数を呼び出し、レシピファイルからリンクさせなければなりませんでした。この変数は、ifconfig grep文字列を含む "shell_out"コマンドで作成されました。他の誰かが同じ問題に直面している場合: –

+0

'node ['network'] ['interfaces']'はカーネルインタフェースから直接データを収集し、 '/ etc/network/interfaces'とは何も関係ありません。 JoyentはSmartOSを意味するかもしれませんが、Ohaiがそのユーザーランドをサポートしているかどうかはわかりませんが、私はそれがうまくいくと思います。 – coderanger

関連する問題