У меня есть XML-документ, который выглядит следующим образом (и содержит сотни таких записей):
<entry name="entryname">
<serial>1234567</serial>
<hostname>host1</hostname>
<ip-address>100.200.300.400</ip-address>
<mac-address>00-00-00-00</mac-address>
</entry>
ansible_hash
- это хэш, который я буду использовать в качестве основы для динамического доступа к отчетам, иимеет структуру, как на веб-сайте Ansible:
ansible_hash = {
"_meta" => {"hostvars" => {}},
"all" => {
"children" => ["ungrouped"]
},
"ungrouped" => {}
}
Я пытаюсь использовать Nokogiri для получения имени хоста из документа XML и добавления его в ansible_hash
.Я хотел бы, чтобы каждое из имен хостов добавлялось в массив под ключом "hosts"
.Как я могу этого достичь?
Когда я это делаю,
xml_doc = Nokogiri::XML(File.open("file.xml", "r"))
xml_doc.xpath("//entry//hostname").each do |entry|
ansible_hash["all"] = ansible_hash["all"].merge("hosts" => ["#{entry.inner_text}"])
end
запись под "all" => {"hosts" => []}
имеет только последний, подобный этому:
{
"_meta" => {"hostvars"=>{}},
"all" => {
"children" => ["ungrouped"],
"hosts" => ["host200"]
},
"ungrouped" => {}
}