Este es un ejemplo de libro de texto de orquestación de servidores y es algo que Chef inherentemente no tiene la intención de hacer. Como señaló Tensibai, un servidor que ejecuta Chef es un sistema convergente que logra su propio estado deseado en función de los ajustes de configuración establecidos por recetas, atributos, bolsas de datos, etc. Sin entrar en detalles específicos sobre su infraestructura, algunos enfoques que podría poder tomar son:
Crear operaciones idempotentes independientes
Como indicó en su pregunta, crear un estado de operación en el que sus nodos puedan ejecutarse repetidamente hasta que se hayan completado todas las tareas no escala bien. Sin embargo, puede ser posible rediseñar sus nodos para que no importe. Si los nodos a y b ejecutan tareas para generar sus registros en paralelo, yb completa antes de a, podría ejecutar la tarea que normalmente ejecutaría el nodo a y viceversa.
Use un orquestador externo para la delegación
El uso de un nodo delegador definitivamente se escalará mucho mejor si pretende tener muchos nodos para orquestar. Sin embargo, esto podría crear conflictos con las ejecuciones de su cliente chef en los nodos que administra el delegador. Sería muy difícil verificar que las configuraciones de su nodo y las tareas del nodo delegador no entren en conflicto entre sí. Una forma inteligente de gestionar esto podría ser incorporar las tareas en la configuración de cada nodo y hacer que el delegador establezca un valor en una bolsa de datos o un atributo del servidor para indicar cómo debe configurarse (es decir, qué tareas debe realizar) )
Combina tu infraestructura
Si cada nodo ejecuta sus tareas en serie dependiendo de los otros nodos, y no tiene costos / dependencias técnicas en la ejecución de tareas en diferentes nodos, puede considerar combinar sus configuraciones de nodo en un solo nodo. Esto eliminaría cualquier conflicto de configuración que tenga entre cualquiera de sus nodos. Me imagino que hay intenciones claras para ejecutar sus tareas en diferentes nodos, pero esta es definitivamente una opción a considerar (tal vez incluso a costa del tiempo para reescribir tareas para diferentes nodos).
Use SaltStack para orquestar las carreras de su chef.
Su lógica de orquestación de nodo cruzado va aquí https://docs.saltstack.com/en/latest/topics/orchestrate/orchestrate_runner.html#more-complex-orchestration
Y puede declarativamente https://docs.saltstack.com/en/latest/ref/states/all/salt.states.chef.html
o imperativamente https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.chef.html
conducir los nodos de Chef a su estado deseado.
fuente