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地址,但我並不真正瞭解如何獲取每個鍵和值,解決該值,然後將其替換爲已解決的值。
一)你有什麼沒有一個數組,它的鍵/值對的哈希值。 b)你是什麼意思「不起作用」? (我清理了一些顯然無效的代碼,但我懷疑這不僅僅是你需要的。) – Phrogz 2012-02-08 04:35:52
你找到了解決這個問題的辦法嗎?請不要忘記標記答案是正確的! :) – sethvargo 2014-01-02 22:53:56