¿La mejor manera de mantener los files de configuration en SVN?

¿Cuál es la mejor manera de mantener sus files de configuration (por ejemplo, httpd.conf, my.cnf, .bashrc …) bajo control de versión? Además del beneficio de control de versiones, quiero que la solución también funcione como copy de security, de modo que pueda traer un nuevo server y extraer (o exportar) los files de configuration de SVN directamente

Un buen toque será almacenar la ruta original del file de configuration también.

Yo controlo mis files de configuration, pero uso git en lugar de svn (que es más fácil cuando tienes múltiples máquinas). Tengo un script bash (llamado install.sh ), también debajo del repository, que copy o sincroniza los files a su location apropiada en una máquina.

Entonces, si tengo que configurar una máquina nueva, solo hago una clonación git del repository (que es equivalente a una verificación svn) y ejecuto mi install.sh para configurar mis files de configuration en las ubicaciones apropiadas. Tener install.sh alnetworkingedor significa que también estoy almacenando la ruta original de los files de configuration, como me indicaste que te gustaría.

Esto es lo que he implementado:

Tengo un server que hace rsync de todas las configuraciones en un directory (digamos / data / configs / hostname / {etc, httpd}).

Tengo un rsync corriendo cada hora para transferir los cambios. tan pronto como se completa rsync, hay una secuencia de commands svnautocommit que confirma automáticamente los cambios. De esta manera, puedo retroceder a cualquier cambio o cualquier versión que desee.

Es posible que deba planificar la estructura del directory SVN en function de sus requisitos.

Hago esto para varias máquinas, que van desde las antiguas 8 cajas de Solaris a Mac OS X, y tengo un layout realmente simple:

En mi repository tengo lo siguiente:

 <root>/common /.emacs.d /.bash_common /scripts # platform-independent binary tools <root>/linux .bashrc .emacs ... <root>/solaris .bashrc .emacs ... <root>/osx .bashrc .emacs ... 

Cada uno de los homedirs del sistema operativo tiene una reference svn: externals a .emacs.d, .bash_common y scripts, por lo que no están duplicates.

Además, tengo un .bash_hostconfig en los directorys de Linux y Solaris con configuration de ruta específica del host y tal, porque tengo una configuration de trabajo muy diferente a la que tengo en casa (FC5-8 y RHEL3-5, dependiendo de dónde a.m).

Entonces, entre estas cosas, tengo un process bastante simple para ponerme en funcionamiento en una máquina nueva: simplemente reviso la plataforma / $ en un directory temporal, y luego sobrescribo todo en $ HOME con esos files. No es necesario que almacene la ruta original, ya que siempre está relacionada con $ HOME de esta manera.

Usamos CVS para almacenar las configuraciones en una estructura de directory lo más plana posible. Esta técnica se extiende fácilmente a SVN.

Luego, tenemos un file Makefile configurado para usar la export de CVS a:

  1. crear una copy de la estructura de directorys de CVS sin los componentes de CVS,
  2. cree la estructura de directory requerida para la máquina de destino en su directory local como si estuviera en el directory raíz en la máquina de destino, por ejemplo ./my_cvs_dir/etc/ .. y ./my_cvs_dir/usr/local/newapp / ..,
  3. copie los files de la estructura de CVS a la estructura de directory de destino,
  4. crear un tarball para la estructura de directory de destino, y
  5. Despliega el tarball a la máquina objective.

También tenemos estos files comprimidos configurados para boost la especialización, por ejemplo, Sol10, Apache, aplicaciones específicas, etc.

HTH

aclamaciones,

Robar

Bueno, podría almacenar todos los files de configuration bajo un tree de directory específico, un subdirectory por aplicación. Dado que la mayoría de las aplicaciones deben tener una directiva para especificar la ruta de configuration, esto es lo único que se cambia (o si tiene files de configuration codificados, tal vez se admite algo como include) por server.

Y este tree podría verificarse en cualquier VCS que desee.

Para la implementación puede escribir un script de shell o algo que inicialice todo para usar su tree de files de configuration.

Como quiera que quiera una tienda central de todos modos, puede ir por algo un poco más complicado como Slack . Usted administra y la versión controla los files en un server de inserción, luego lo sincroniza con los clientes. La explicación de subroles tiene algunos ejemplos sobre cómo estructurar el tree.