Pregunta ¿Qué soluciones existen para permitir el uso del control de revisión para los archivos de configuración del servidor? [cerrado]


En un entorno con varios administradores de sistemas, veo algunas ventajas al agregar los archivos de configuración del servidor a un sistema de control de revisiones. Lo más notable es la capacidad de realizar un seguimiento de los cambios, quién los realizó y, por supuesto, poder revertir a las configuraciones de trabajo conocidas.

Me interesan principalmente las soluciones Unix / Linux, pero también me interesarían las implementaciones de Windows.


85
2018-05-06 17:46


origen


Parece duplicar o estar muy relacionado con esta pregunta. serverfault.com/questions/3852/… - Zoredache


Respuestas:


He probado esto en casa (~ 3 hosts) desde hace algún tiempo, probando diferentes scms (RCS, Subversion, git). La configuración que funciona perfectamente para mí en este momento es git con la setgitperms gancho.

Cosas que necesitas considerar:

Manejo de permisos y propiedad de archivos.

  • RCS: hace esto de forma nativa
  • Subversión: la última vez que lo intenté, necesitabas un envoltorio alrededor svn para hacer esto
  • git: el setgitperms gancho maneja esto de forma transparente (necesita una justa versión reciente de git con soporte para post-checkout ganchos, sin embargo)

Además, si no quieres todos tus /etc bajo control de versiones, pero solo Los archivos que realmente modificaste (como yo), necesitarás un scm que soporta este tipo de uso.

  • RCS: funciona solo en archivos individuales de todos modos.
  • Subversión: Encontré que esto es complicado.
  • git: no hay problema, pon "*"en el nivel superior .gitignore archiva y agrega solo aquellos archivos que quieres usar git add --force

Finalmente, hay algunos directorios problemáticos bajo /etc donde los paquetes pueden caer Fragmentos de configuración que luego son leídos por algún programa o demonio (/etc/cron.d, /etc/modprobe.d, etc.). Algunos de estos programas son lo suficientemente inteligentes como para ignorarlos Archivos RCS (por ejemplo, cron), algunos no (por ejemplo, modprobe). Lo mismo con .svn directorios De nuevo, una gran ventaja para git (solo crea un nivel superior .git directorio).


52
2018-05-06 18:23



Subversion necesita asvn svn.collab.net/repos/svn/trunk/contrib/client-side/asvn. Archive SVN (asvn) permitirá la grabación de tipos de archivos que normalmente no son manejados por svn. Actualmente esto incluye dispositivos, enlaces simbólicos y propiedad / permisos de archivos. - Cristian Ciupitu
¿Tiene un escrito en alguna parte que muestre cómo configurar los ganchos que usó, etc.? - GruffTech
Una breve reseña está aquí: jottit.com/jg8h7 - 8jean
Aquí hay una publicación sobre cómo configurar algo como esto en Arch Linux ARM, debería aplicarse igualmente bien aquí. zduck.com/2012/storing-your-raspberry-pi-config-in-git - silent__thought


Lo he hecho informalmente con git, pero también está el etc controlador Proyecto que es una implementación más completa y detallada.


28
2018-05-06 17:47



etckeeper es realmente bueno: maneja los permisos de restauración (no admitidos por git, hg, etc.) y es compatible con el servidor de su elección (incluidos git, hg, bazaar, etc.). También tiene integración en APT para que cada vez que realice una operación apt-get, el repositorio / etc se comprometa y realice confirmaciones durante la noche. He usado esto por un tiempo y, en general, es mucho mejor que usar un VCS de vainilla, aunque solo sea para la función de permisos. - RichVel


Otra opción es usar una herramienta de configuración de servidor automatizada como Marioneta o Cfengine para escribir las configuraciones de su servidor en un lenguaje declarativo.

Es un trabajo adicional en el front-end, pero el uso de una utilidad como Puppet le permite reconstruir y configurar automáticamente un servidor con muy poca intervención humana.


23
2018-05-06 18:03



Sí, pero también debería revisar y controlar sus configuraciones de Puppet / CFengine. También soy un fanático de la revisión que controla la salida para que pueda responder la pregunta "qué estaba ¿la configuración en la fecha x? "así como" ¿qué debería haber sido la configuración de acuerdo con títere? ", y correlacionar las entradas con las salidas para la solución de problemas del sistema de administración de la configuración. - Rob Chanter


He estado experimentando con etc controlador que parece funcionar bastante bien. No necesito un servidor centralizado, lo que puede ser importante en algunas situaciones. Puede usar varios backends DVCS diferentes, de modo que puede elegir el que le resulte más familiar. Parece que funciona muy bien para mí, pero no he intentado que los otros técnicos en los que trabajo empiecen a usarlo todavía.


10
2018-05-06 18:10





He estado investigando Cocinero últimamente. No solo mantiene templable (.erb) configura en el control de versiones, pero le permite realizar acciones (como reiniciando un servicio después de subir las configuraciones al nodo). Chef ayuda con la gestión de paquetes para que pueda verificar dependencias con cualquier nodo con el que se conecte (es decir, tiene que tener instalado el paquete sudo). Chef parece ser fácilmente extensible en Ruby, por lo que si tiene algún proceso personalizado, puede escribirlo dentro del marco proporcionado.

Pero aún no lo he probado y tienes que instalar Ruby en el cliente y el servidor con las gemas adecuadas (esto realmente no es tan difícil). En general, parece muy fácil administrar muchos servidores a la vez.


6
2018-05-27 20:49



Usamos Chef en gran medida (más de 60 servidores) con bastante éxito. Todas las recetas y archivos de configuración están registrados en Subversion. - organicveggie


Estoy en el proceso de implementar Puppet en toda nuestra infraestructura y es muy propicio para mantener sus datos en el control de versiones.

Prefiero Mercurial ya que es solo una colección de archivos con algunos metadatos almacenados en directorios ocultos (fácil de administrar, fácil de entender, fácil de usar).

Los archivos de My Puppet están en / usr / local / etc / puppet / (FreeBSD 7.1). Todo lo que hizo falta para agregarle Mercurial:

> cd /usr/local/etc/puppet
> hg init

Todos los cambios se cometen con un simple "hg commit". Si un cambio es importante, puedo revertir cada servidor a una versión determinada del archivo (por ejemplo, sudoers) con un solo comando.

Gran introducción a Mercurial


3
2018-05-06 19:59





He estado usando Subversion en los servidores que administro. Funciona bien. También he creado una Trac instancia, por lo que tenemos una vista de línea de tiempo, sistema de venta de entradas, navegación, etc.

Al usar enlaces simbólicos, cron y subversión, también he configurado la distribución de la configuración automatizada basada en el repositorio de subversión, donde cada servidor Linux actualiza un repositorio usando svn update con scripts (por ejemplo, scripts de firewall).


3
2018-05-07 16:19





Aquí hay un caso de uso de la vida real: Se utilizó Subversion para administrar archivos de configuración en 4 servidores diferentes. Recomendaría usar el control de versiones para los archivos de configuración por la misma razón por la que los usaría con código: es una copia de seguridad y un botón para deshacer, todo en uno. Si estuviera administrando una cantidad mucho mayor de servidores y estuvieran mucho más cerca en términos de configuración, estaría usando algo como Puppet como se detalla en la respuesta de berberich.

La idea es que puede tener un repositorio en el que pueda retirar carpetas específicas en los servidores (por ejemplo, / var / named /), así que tengo un historial y una copia de seguridad de los archivos de configuración (la copia de seguridad es una ventaja si comete el error). de usar una aplicación de configuración GUI que borra las adiciones editadas a mano tos Server Admin en Mac OS X Server tos). Entonces es fácil probarlo en un servidor de prueba y posteriormente actualizar el servidor de producción con archivos que funcionan sin copiar manualmente los archivos.


2
2018-05-06 19:11