Я использую opscode chef для автоматизации развертывания кластера MySQL.Я хочу поместить нужные хосты в файл JSON, затем разрешить chef разрешить эти имена хостов во внутренние 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-адреса, но я не совсем понимаю, как получить каждый ключ и значение, разрешить значение,затем замените его на разрешенное значение.