Используя chef, как мне обеспечить сервер перед клиентом в зависимости от сервера?

Я развернул распределенную службу, которая использует общий ресурс NFS на нескольких узлах. В этом сценарии есть главный узел, который экспортирует общий ресурс NFS, и несколько подчиненных узлов, которые должны подключить этот экспорт.

Используя шеф-повара, я могу подготовить главный узел. Как только мастер-узел завершен, я могу параллельно подключать подчиненных. Однако, если chef-клиент запускается (примерно) в одно и то же время на всех узлах, ведомые отказывают, потому что общий ресурс NFS на сервере еще не существует.

Используя chef, как я могу убедиться, что подготовка мастера завершена до запуска подчиненных устройств? Я полагаю, было бы приемлемо, чтобы подчиненные устройства приостановили (и, возможно, через несколько минут) ожидали готовности экспорта NFS, хотя было бы лучше, если бы я мог гарантировать, что мастер был полностью подготовлен (все рецепты / роли).) прежде чем разрешить шеф-клиенту на подчиненном устройстве продолжить работу.

1 ответ

Решение

В общем, лучший подход - не обеспечивать все это. Напишите свой код рецепта так, чтобы он не работал изящно, если зависимости недоступны, а затем используйте режим демона chef-client (или запускайте из cron), чтобы он продолжал пытаться столько времени, сколько потребуется, до успеха.

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