Pregunta ¿Se puede usar la gestión de configuración (Puppet / Chef) detrás de un firewall?


Tengo la tarea de diseñar e implementar la administración de configuración (Chef) para una infraestructura donde los servidores de producción están completamente segmentados y aislados detrás de un cuadro de salto.

 ---------------------------------
| Production | Staging, Test, Dev |
 ---------------------------------

La única forma de obtener archivos en producción es con una conexión sftp. Solo hay dos personas que tienen la capacidad de saltar directamente a la producción. Se podría hacer una excepción para permitir que un sistema de automatización estrechamente controlado (como jenkins) copie archivos en producción.

Normalmente, recomendaría configurar un único servidor chef en la nube, sin embargo, los servidores de producción no pueden tener acceso externo. (Sin mucho convencimiento de algunas personas muy reticentes).

Una solución que veo es usar dos servidores Chef

 ---------------------------------------
| chef-production | chef-local         |
| Production      | Staging, Test, Dev |
 ---------------------------------------

El uso de dos servidores chef tiene algunos problemas que no estoy seguro de cómo superar.

  • ¿Cómo puedo mantener la producción y los libros de cocina de los servidores locales sincronizados?
  • ¿Cómo podríamos agregar nuevos nodos de producción al servidor de chef de producción sin requerir que uno de los administradores ejecute el comando de cuchillo?
  • ¿Cómo podríamos hacer cambios a las bolsas de datos en producción?

Estoy abierto a otras sugerencias. Estoy considerando no usar un servidor chef y en su lugar usar chef-zero o chef-solo. Mi entendimiento es que no es la mejor solución cuando se usan múltiples entornos.


5
2018-04-22 22:17


origen




Respuestas:


Odio este tipo de entorno sin confianza, pero lo entiendo; Tienes que lidiar con los requisitos del negocio ...

Puede solucionar el problema de mantener los libros de cocina sincronizados con un canal de CI / CD para sus libros de cocina, de manera que se implementen en ambos servidores Chef automáticamente. Le gustaría aprovechar cosas como la fijación de libros de cocina extensivamente, pero hacer que las actualizaciones estén disponibles (incluso si no se usan activamente) no es problemático. Sous-Chef es una herramienta que mi compañía tiene de código abierto para ayudar a las personas a comenzar a automatizar las pruebas de libros de cocina y cargarlas en un Servidor Chef. Tendría que ser modificado para cumplir con un caso de múltiples Chef Servers, pero la mayoría está ahí.

Como Chef12 tiene ambas funciones para "Organizaciones" y "Control de acceso basado en roles" (RBAC) (cada una de las cuales solo estaba disponible en el producto pagado), usted podría establecer permisos para que solo las personas especificadas puedan modificar el entorno de producción. o que Producción era una Organización separada dentro del mismo servidor Chef.

Agregar nuevos nodos al servidor de Prod Chef requerirá algún tipo de arranque. Los detalles variarán ampliamente dependiendo de su entorno, pero al tener el instalador local en ese entorno, puede configurarlo como un trabajo de ejecución única cuando se inicia o implementa desde una plantilla de VM. Si tiene herramientas para hacer girar las máquinas virtuales a través de la API, no debería ser tan horrible extenderlas a la adición de los comandos de arranque. (El chef es, después de todo, un sistema basado en API).

Su pregunta sobre las bolsas de datos es demasiado amplia para aquí.

Tenga en cuenta que tener múltiples chef-servidores requerirá tener separado knifeconfiguraciones, por lo que tendrá que recordar pasar una marca de configuración para cada una, o ajustar comandos para knife asociando un archivo de configuración. A menos que, por supuesto, tenga la automatización suficiente para no necesitarla nunca. knife.

Chef-Zero está destinado a pruebas locales donde usaría Chef-Solo, pero quiero buscar. Realmente no tiene sentido para administrar sus cajas de productos.

Algunas empresas usan Chef-Solo para sus entornos no de prueba en una "manera de ejecutar como sea necesario". Personalmente, no me gusta esto. me gusta Solo para pruebas locales (como con Vagrant), o si está configurando sistemas con la intención de que sean inmutables. Si va a tener servidores de larga duración (en gran parte sin estado, y demolidos con frecuencia, el Chef-Server estándar le ayudará a evitar que las configuraciones se desvíen con el tiempo).


4
2018-04-23 00:33



Buenas ideas, no estoy seguro de cómo agregar una lista de ejecución a un nodo, cuando no puedo ejecutar el cuchillo yo mismo. ¿Podrían jenkins o algo correr un cuchillo por mí? - spuder
Si quisieras envolver cosas que de otra manera usarías knife Para en una herramienta, consideraría usar Rundeck. También puede establecer una lista de ejecución y un entorno en un nodo como parte de chef-bootstrap. - gWaldo
Me gusta especialmente Rundeck en general porque puede usar la autenticación LDAP, administrar permisos en proyectos y trabajos, y el registro http le da pistas de auditoría de "quién hizo qué, cuándo". - gWaldo