Да, я знаю, что у нас есть инструмент под названием "spiceweasel" для обработки всего этого, но мне очень любопытно, как и почему он работает таким образом в шеф-поваре.
Шеф-повар предлагает хорошую идею иметь целый репозиторий описанных вами сред, эта идея великолепна, но кажется, что узлы не работают так, как я ожидаю.
Итак, вот ситуация: у вас настроен шеф-сервер/рабочая станция, и в вашем кластере уже есть узлы bootstraped
и provisioned
. Как вы знаете, каждый узел работает chef-client
с некоторым интервалом, который я определю. Таким образом, каждая нода повторно запускает рецепты со случайным интервалом, чтобы проверить, не произошло ли ничего случайно, если изменения - они меняются обратно.
Итак, у вас есть папка nodes/
в вашем репозитории. И когда вы делаете knife upload /nodes
, конфигурация всех узлов должна быть обновлена, но теперь она заменяет состояние узла полностью. Так почему это плохо? Потому что, допустим, я отредактировал файл конфигурации ноды и загрузил его на шеф-сервер, тогда состояние ноды сбрасывается до следующей chef-client run
операции. У меня есть поваренная книга/роль, которая находится на другом узле, и она проверяет IP с определенного узла (который владеет определенной ролью). Есть большая вероятность, что когда chef-client run
будет выполняться на одном из узлов, он не найдет IP другого узла, и вся поваренная книга не запустится!
Может быть, неправильно использовать состояния узлов в кулинарной книге, но эй, это повсюду... так что теперь было бы неплохо иметь возможность просто ОБНОВИТЬ состояние узла, а не перезаписывать его.
Итак, вопрос: возможно ли обновить состояние узла вместо его уничтожения?