0
私はopscodeシェフを使ってMySQLクラスタの配置を自動化しています。私は、希望のホストをJSONファイルに入れてシェフにそれらのホスト名を内部IPアドレスに解決させ、次にIPアドレスを変数として設定します。ルビーとシェフ:値を解決してハッシュで置換する
私はこのようになります簡単なハッシュいますし、各キー/値はその後、私を通じて価値を解析し、ハッシュグラブのすべてのキーの値を通過し、私は基本的にノードのキーをつかむしたい
[data_bag_item["dbclstr", "dbclstr",
{
"id"=>"dbclstr",
"nodes"=>{"sql1"=>"cdb1.ex.net",
"sql2"=>"cdb2.ex.net",
"mgmnt"=>"cdb1.ex.net",
"db1"=>"cdb1.ex.net",
"db2"=>"cdb2.ex.net"
}}]]
を検索機能を使用してIPアドレスを返し、そのキーに値を割り当てます。
dbclstr = search(:dbclstr).first # Loads json into hash
privip = dbclstr["nodes"] # grabs node hash from hash (turns into a mash?)
privip = privip.to_hash # turn mash to hash
privip.map { |key,value| # maps the keys and values of the hash.
item = search(:node,"name:value") #loads machine data from chef into object
value = "#{item[0][:cloud][:private_ips]}" # extracts ip address from object and sets it as value, done?
}
これはうまくいきません。
私は個別にホスト名をIPアドレスに解決できますが、各キーと値を取得して値を解決し、解決された値に置き換える方法はわかりません。 Rubyで
A)あなたは、配列が、それは、キー/値のペアのハッシュだ、そこではありませんが何をしています。 b)あなたはそれが "うまくいかない"という意味ですか? (明らかに無効なRubyであったコードのいくつかを整理しましたが、あなたが必要としたものではないと思われます) – Phrogz
この問題の解決策を見つけましたか?正しいと答えていることを忘れないでください! :) – sethvargo