No contexto de desenvolvimento de software e CI/CD, gerenciamento de configuração refere-se ao registro dos detalhes de uma configuração de infraestrutura específica, para que você possa identificar quando alterações foram introduzidas.
Um pipeline de CI/CD inclui vários ambientes para teste e software de preparação antes do lançamento. Para que o pipeline e os testes operem com eficácia, os ambientes de pré-produção precisam replicar a produção o mais próximo possível e permanecer consistentes entre as passagens de testes.
Para conseguir isso, você pode configurar uma série de máquinas físicas ou virtuais para hospedar esses ambientes. Com o tempo, entretanto, conforme patches são aplicados, novos pacotes são instalados ou configurações de rede são modificadas para solucionar problemas específicos, esses servidores começam a se desviar da configuração original de diferentes maneiras.
O resultado é uma sucessão de servidores Snowflake. Pior ainda, suponha que os detalhes de cada alteração não estejam registrados em algum lugar. Nesse caso, torna-se muito mais difícil recriar o mesmo ambiente quando um servidor falha ou precisa ser replicado para dimensionar suas operações de teste. O gerenciamento de configuração procura resolver esse problema.
Armazenar detalhes de configuração no seu sistema de controle de versão fornece visibilidade de quaisquer alterações, tornando mais fácil desfazê-las se algo der errado e aplicar as mesmas alterações em outras máquinas, mantendo assim a consistência.
Se esses detalhes de configuração forem armazenados em um formato estruturado, como um arquivo YAML ou XML, você poderá levar o gerenciamento de configuração um passo adiante e automatizar a configuração de servidores .
Depois que as alterações são confirmadas para o controle de versão, elas são aplicadas automaticamente aos ambientes relevantes.
Adotar uma abordagem de infraestrutura como código torna possível desmontar e recriar máquinas virtuais automaticamente, para que você possa configurar seu pipeline de CI/CD para atualizar os ambientes entre implantações. Isso possibilita lidar com um grande número de máquinas e permite replicar ambientes facilmente quando a demanda por testes aumenta.
Se você estiver usando contêineres para implantar seu software, alguns elementos de configuração, como dependências de softwares, serão movidos para a imagem do contêiner. No entanto, permanece a necessidade de configurar os servidores que hospedam seus contêineres. Ainda há muitos benefícios a serem obtidos com a codificação e automatização da criação desses ambientes.