Hemos configurado un servidor que ejecuta la infraestructura para una pequeña asociación. Hasta ahora, hemos tratado de administrar la configuración con Ansible, pero eso no ha sido un gran éxito. Quizás lo estamos haciendo mal.
En principio, la idea es que este servidor se quede solo la mayor parte del tiempo, con personas agregando o cambiando cosas una vez en una luna azul. Esto hace que sea crucial que todo lo que se configure y ejecute en el servidor esté bien documentado y sea claro, ya que las personas que no administran el sistema con frecuencia seguramente perderán información general (y mucho menos recordar los detalles). Además, con el tiempo, la composición del grupo de personas que administrará este servidor cambiará (a medida que las personas se vayan y se unan al 'comité').
Comenzamos con una instalación limpia, agregando roles en ansible siempre que quisiéramos configurar algo (nginx, phpfpm, postfix, firewall, sftp, munin, ..). Tal vez debido a nuestra inexperiencia, por supuesto, nunca podemos escribir un conjunto de tareas ansibles exactamente de la manera en que las necesitamos, también porque la configuración es un proceso de prueba y error. Eso significa que, en la práctica, normalmente primero configuraremos cualquier servicio que queramos ejecutar en el servidor y luego lo traduzcamos a tareas de respuesta. Puedes ver a dónde va esto. Las personas se olvidan de probar la tarea, o tienen miedo de hacerlo a riesgo de romper cosas o, lo que es peor: olvidamos o descuidamos agregar cosas a lo que se puede responder.
Hoy, tenemos muy poca confianza en que la configuración ansible realmente refleje lo que está configurado en el servidor.
Actualmente veo tres problemas principales:
- Es difícil (lea: no tenemos una buena manera de) probar tareas ansibles sin arriesgarse a romper cosas.
- Agrega trabajo extra para descubrir primero la configuración deseada y luego descubrir cómo traducir esto a tareas ansibles.
- (Idealmente), no lo usamos con la frecuencia suficiente para construir familiaridad y rutina.
Una consideración importante aquí es que, sea lo que sea que terminemos haciendo, debería ser fácil para los recién llegados aprender las cuerdas sin mucha práctica.
¿Existe una alternativa viable que aún brinde algunas garantías y comprobaciones (comparables a la combinación de archivos Ansible para algunos master
) que "no puede configurar las cosas y anotar lo que hizo"?
EDITAR: hemos considerado comprometernos /etc
con git. ¿Hay alguna manera razonable de proteger los secretos (claves privadas, etc.) de esa manera, pero aún así tener el repositorio de configuración disponible fuera del servidor de alguna manera?