En el contexto del desarrollo de software y de CI/CD, la gestión de la configuración se refiere al registro de detalles de una determinada configuración de infraestructura para poder identificar cuándo se introdujeron cambios.
Un proceso de CI/CD incluye varios entornos para probar y poner en escena el software antes de su lanzamiento. Para que el proceso y las pruebas funcionen eficazmente, los entornos de preproducción deben replicar la producción lo más fielmente posible y mantener la coherencia entre las ejecuciones de las pruebas.
Para lograrlo, se puede configurar una serie de máquinas físicas o virtuales para alojar estos entornos. Sin embargo, con el tiempo, a medida que se aplican parches, se instalan nuevos paquetes o se modifican las configuraciones de red para solucionar problemas específicos, esos servidores comienzan a desviarse de la configuración original de diferentes maneras.
El resultado es una sucesión de servidores copo de nieve. Peor aún, supongamos que los detalles de cada uno de los cambios no se registran en alguna parte. En ese caso, resulta mucho más difícil recrear el mismo entorno cuando un servidor falla o necesita ser replicado para escalar sus operaciones de prueba. La gestión de la configuración trata de resolver este problema.
Almacenar los detalles de la configuración en su sistema de control de versiones le otorga visibilidad de cualquier cambio, lo que facilita deshacerlos si algo va mal y aplicar los mismos cambios a otras máquinas, manteniendo la coherencia.
Si esos detalles de configuración se almacenan en un formato estructurado, como un archivo YAML o XML, se puede llevar la gestión de la configuración un paso más allá y automatizar la configuración de los servidores.
Una vez que los cambios se confirman en el control de versiones, se aplican automáticamente a los entornos correspondientes.
Adoptar un enfoque de infraestructura como código permite desmontar y volver a crear máquinas virtuales automáticamente, de modo que puede configurar su proceso CI/CD para actualizar los entornos entre las implementaciones. Esto hace posible tratar con un gran número de máquinas y le permite replicar los entornos fácilmente cuando aumenta la demanda de pruebas.
Si utiliza contenedores para desplegar su software, algunos elementos de configuración, como las dependencias de software, se trasladarán a la imagen del contenedor. Sin embargo, sigue siendo necesario configurar los servidores que alojan sus contenedores. La codificación y la automatización de la creación de estos entornos sigue siendo muy beneficiosa.