chef recipe with external provisioning dependencies

In all Chef examples that I've seen autoscaling works pretty easy - you provision something like DB host, then web servers. You can create as many webservers as you like - all of them are going to use the same DB host (no changes required).

But what if my recipe/node provisioning cookbook requires configuration changes on some other backend nodes? How I can do it with Chef? For example, I have existing BGP route reflector (bird), I provision new bird edge node and, as a dependency, I have to generate new iBGP peer config and reread config file on the BGP route reflector node.

What is the best practice? Should I use chef-push-jobs to push changes to BGP route-reflector nodes?

2
задан 27 February 2017 в 21:02
1 ответ

Chef действительно не иметь систему для этого внутри. В общих чертах то, о чем вы говорите, - это «обнаружение службы», когда одна служба хочет узнать информацию о другой службе в сети. В Chef есть простая система SD через search () API, но есть также специальные системы SD, такие как Consul, Eureka и mDNS / Autoconf.

Как только у вас есть данные службы в пути что к нему можно получить доступ, следующий вопрос - как бороться с распространением обновлений по сети. Сам Chef обычно использует службу в режиме демона, выполняющую конвергенцию каждые X секунд. Это будет означать, что если вы установите X равным 60, то через 119 секунд все будет обновлено. Если вам нужно что-то более быстрое, есть такие варианты, как отправка уведомлений с одного узла на другой или использование центральной системы оркестровки для отправки как исходного изменения, так и для обработки каскадных обновлений. Теоретически здесь можно использовать Chef Push Jobs, но я бы не рекомендовал это делать. Что-то вроде Consul + Consul Templates, вероятно, то, что вам нужно для быстрой настройки конфигурации и обновления SD, или просто позвольте Chef интервальным запускам позаботиться об этом для вещей, которые меняются реже.

1
ответ дан 3 December 2019 в 12:36

Теги

Похожие вопросы