Как получить 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.

Другие вопросы по тегам