[AWS Opsworks]レシピを実行してない同Layerの他ノードの情報を得る

Nオガワです。Opsworks用のレシピを書く際に、クラスタ構成を構築する際等、レシピを実行していない他ノードの情報がほしいケースがあります。
そんな時便利なのがOpsworksスタックのデータバッグ。ここでは他ノードのプライベートIPを取得する一例を記載してみました。
一読いただけたら幸いです。IPを固定したくない場合に便利です!
Opsworksスタックのデータバッグとは?

ノード情報(Opsworksスタックの同Layer内)

  • node1 10.186.144.58
  • node2 10.184.143.167

    他ノードのIPを取得するメソッドを定義

    def remote_instance_ip
    instance = search("aws_opsworks_instance", "self:false").first
    instance['private_ip']
    end
    

    [補足]aws_opsworks_instanceでデータバッグからインスタンス情報を取得する。self:falseで他ノードの情報を取得。

    Opsworksのログで結果取得

    Chef::Log.info("********** remote node ip address is '#{remote_instance_ip}' **********")
    

    [補足]定義したremote_instance_ipで他ノードのIPを取得してOpsworksのログに出力。

    node1(10.186.144.58)でのsetup実行時のログ出力結果

    [2017-12-20T12:30:59+00:00] INFO: ********** remote node ip address is '10.184.143.167' **********
    

    [補足]node2のIPアドレス10.184.143.167が取得できた。

    最後に

    読んでいただきありがとうございました。メインはAWS関連で次回からも更新していこうと思います。
    またよろしくお願いします。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA