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関連で次回からも更新していこうと思います。
またよろしくお願いします。