Gerenciamento de configuração via pacotes com versão

6

Para os hosts que gerenciamos, meu chefe tem uma visão de gerenciamento de configuração via pacotes versionados (em nosso caso particular, pacotes debian construídos pelo fpm). Isso é para fazer:

  • implantação de host mais fácil
  • mais fácil acompanhar as alterações locais
  • facilita o rastreamento de bugs, pois, na maioria dos casos, podemos codificar uma versão do software para um bug, seja um bug funcional ou de configuração.

A outra alternativa é o gerenciamento de configuração via Ansible, com seu layout recomendado como em seu manual, que estamos usando atualmente. Instalamos pacotes versionados de software (praticamente todos os serviços da web), que seriam responsáveis por sua própria configuração específica de pacote e deixariam Ansible para a configuração de todo o sistema. Atualizar o software dos hosts é simplesmente uma questão de aumentar os números de versão e executar novamente os scripts. Dependemos muito da funcionalidade "var_prompts" do Ansible para garantir que mantemos informações confidenciais separadas da configuração.

No caso "Gerenciamento de configuração via pacotes com versão":

Para a implantação, apenas exibimos um servidor mínimo (proxies etc) e usamos um gerenciador de pacotes (apt no nosso caso) para instalar um único pacote guarda-chuva, que instalaria todos os pacotes dependentes. Fazer uma alteração em qualquer um dos pacotes dependentes simplesmente aumentaria a versão máxima do pacote, facilitando a atualização das implantações existentes.

Para a configuração, cada pacote de software teria um pacote "config" acompanhante, para permitir alterações apenas na configuração. Cada pacote teria arquivos de configuração independentes, para evitar conflitos entre pacotes quando verificamos mudanças locais no host. Em vez de executar comandos que geram a configuração, garantiríamos que teríamos os arquivos gerados como parte do pacote, mas ainda permitiríamos a execução de comandos por meio dos scripts de pré / pós-instalação. AFAIK, não há um grande número de casos em que temos pacotes que dependem do mesmo arquivo de configração, mas se for esse o caso (o que seria o caso da configuração do sistema), teríamos outro pacote que teria um dependência de ambos. Eu posso ver esse caso particular ficando fora de controle, mas isso pode ser controlado sempre garantindo arquivos de configuração independentes. No final, cada host teria seu próprio pacote de configuração exclusivo. Obviamente, todos esses arquivos estariam sob controle de origem, e podemos criar nosso próprio sistema de templates simples, para que também possamos ter a flexibilidade de funções Ansible.

Estou curioso porque não consigo encontrar nenhuma informação / análise sobre esse tipo de fluxo de trabalho para configurar e implantar hosts. Estou faltando algo fundamentalmente defeituoso com tal abordagem, em comparação com as ferramentas de gerenciamento de configuração existentes?

    
por chuckus 22.12.2014 / 05:08

1 resposta

1

Os gerenciadores de pacotes não são realmente eficazes para gerenciamento de configuração por alguns motivos:

  1. A maioria dos pacotes contém uma configuração quando instalada, por isso você precisa criar pacotes personalizados para removê-los.
  2. Os gerenciadores de pacotes trabalham sob a suposição de que o pacote instala uma configuração básica que pode ser alterada no sistema. Portanto, se um pacote for reinstalado / atualizado, ele geralmente avisa o usuário sobre o que fazer com o arquivo modificado (que não é um comportamento ideal para um gerenciador de configuração).
  3. O gerenciador de pacotes não testa o sistema normalmente em relação ao conteúdo do pacote e, embora alguns tenham essa opção, ele não é eficiente, pois não é um recurso usado com frequência.
  4. Um ciclo de vida de pacote é mais complexo e mais longo que a maioria das ferramentas de configuração automatizadas, por isso é mais trabalhoso manter essa configuração.
  5. Os gerenciadores de pacotes não se importam com a ordem de instalação, portanto se você tiver um caso de dependência de pacote a->b->c e já tiver o pacote c instalado e instalar o pacote a, o pacote c não será reinstalado e os pacotes a e / ou b pode sobrescrever a configuração de c.

Se você insistir em usar gerenciadores de pacotes para manter as configurações, sugiro que verifique a opção de usar um sistema de gerenciamento de configuração autônomo, como fantoche ou chef, no modo autônomo, com um pacote para a configuração deles. Você terá toda a sua configuração em um único pacote de versões, mas de uma maneira que não exija que o gerenciador de pacotes gerencie as configurações no disco, o que pode levar a problemas, conforme listado e provavelmente um pouco mais.

Para esclarecer, deve ser possível fazer o que você planejou, apenas o gerenciador de pacotes não é a ferramenta ideal para isso.

    
por 01.01.2015 / 16:33