¿Chef – libro de cocina solo para git / gestión de roles?

Trabajé con Opscode Chef hace un par de años, y estoy pensando en volver a usarlo en mi nueva compañía, pero me pregunto si algunos de mis problemas con Chef se han abordado mientras tanto o si debería esperar utilizar el mismas soluciones.

Aunque me encantaron muchas características del server, no me gustó el hecho de que la administración de versiones de nuestros libros de cocina y roles fuera diferente de la adición real de los elementos al server del chef. En mi opinión, tener esos 2 pasos diferentes era simplemente pedir problemas cuando alguien creó una list de ejecución de un file, y luego omitió comprometer esos cambios con el control de la versión. Eventualmente fui con chef-solo, ejecutándome en un trabajo de cron y eliminando cambios de nuestro repository, y luego ejecutando un script de shell que apuntaba a nuestra configuration node.json específica. De esta manera, la única forma de get artículos en Chef era tenerlos en Git. Para ser honesto, esta parece ser la única manera sensata de hacer las cosas: no utiliza el control de versiones para su proyecto, sino que transfiere sus files FTP a su server de producción.

¿La versión más nueva de Chef tiene la capacidad de leer solo las actualizaciones de configuration desde su repository controlado por la versión? Si no, ¿hay alguna herramienta que use commit hooks en el repository para actualizar la configuration de Chef? ¿Alguien ha tenido una preocupación similar y cómo la abordaron?

También estoy abierto a usar Puppet (o cualquier otra herramienta de extracción), simplemente no tengo ninguna experiencia con él, así que no es mi primera opción. Ansible / cualquier herramienta basada en push no funcionará. Estamos administrando máquinas detrás de firewalls, a veces con conexiones de networking impnetworkingecibles.

Echa un vistazo a chef-guardia . Es una herramienta de capa intermedia que imita a la API del chef, pero intercepta los commands del cuchillo y extrae el control de fuente en la mezcla. Por lo tanto, cuando sube una nueva list de ejecución, libro de cocina, entorno o CUALQUIER COSA, se asegura de que esté en control de fuente (y labelda en el caso de los libros de cocina) antes de reenviarla al server del chef. Debería hacer exactamente lo que está buscando.

Desafortunadamente, Chef todavía no es obstinado en ningún flujo de trabajo. Yo diría que la forma sugerida es la implementación de una canalización de entrega continua en algún lugar (por ejemplo, en Jenkins) que haga las cargas al server del chef.