Как получить IP-адрес подготовленной машины с помощью обеспечения повара
Я пишу рецепт от шеф-повара, чтобы обеспечить кластер машин. Я сделал это более или менее, но теперь я хочу, чтобы файл хостов всех предоставленных машин был динамически назначаемым IP-адресами всех других хостов. Есть ли способ запросить IP-адрес выделенного хоста?
2 ответа
Не на слое ChefProvisioning, но я сделал это следующим образом:
Вы можете использовать кулинарную книгу hostsfile из супермаркета chef и пакет данных на сервере chef.
Есть возможность доступа к одному узлу IP с атрибутом node[:ipaddress]
, сохраните его в пакете данных, а затем получите доступ через цикл по всем ips, используя поваренную книгу hostsfile для создания / обновления записей с ресурсом hostsfile_entry
, что-то похожее:
node[:list_of_hosts].each do |name, ip|
hostsfile_entry ip do
hostname name
action [:create_if_missing, :update]
end
end
Предполагая, что у вас есть в хэше список IP-адресов и имен хостов из пакета данных.
Надеюсь, вы нашли это полезным.
Короткий ответ: вы не делаете, что является одной из причин, по которой вам не следует использовать chef-обеспечение. Длинный ответ: некоторые драйверы позволяют получить доступ к базовому объекту через ресурс, но то, что вы в итоге получите, не похоже на обычный код Chef. Хранить каждый machine
объект в массиве, а затем вы можете попробовать использовать это для второго прохода по вещам.
Реальный ответ заключается в том, что уровень подготовки не должен делать этого, использовать что-то вроде поиска Chef или соответствующего облачного API из рецепта на фактически подготовленных узлах, как вы это делали бы с "обычным" Chef.