Como posso documentar e automatizar a configuração de um sistema?

4

Ter uma configuração do sistema representada por seu estado atual é arriscado, ineficiente e opaco. Em algum momento você pode ficar com um sistema não suportado e nenhum caminho de atualização. Em seguida, configurar um novo sistema compatível com o antigo é um processo ou tentativa e erro. Além disso, se em algum momento o sistema estiver danificado, a única opção é voltar para o backup completo mais recente e tentar lembrar quais alterações seguiram a partir desse ponto. Além disso, a única maneira de criar um sistema compatível com o original é através de um completo despejo / restauração. Finalmente, em tal configuração não há como saber como você resolveu um problema em particular; a única coisa que você pode fazer é verificar os arquivos de configuração correspondentes e tentar adivinhar o que você alterou para obter o efeito desejado.

Atualmente, para cada sistema que mantenho, mantenho um arquivo de log onde registro toda a atividade de administração do sistema, começando pela instalação: opções de instalação, pacotes adicionados, alterações nos arquivos de configuração, atualizações, correções de problemas, etc. para (manualmente) repetir todas as alterações para chegar ao estado atual ou para desenrolar uma alteração incorreta executando os comandos reversos. No entanto, esse processo também é ineficiente, propenso a erros e depende do julgamento humano.

Outra coisa que eu tentei é colocar os arquivos de configuração do / etc sob controle de versão com git. Isso me ajuda a documentar as alterações automaticamente e também aplicá-las em uma configuração limpa. Mas não é sem problemas: git tem que rodar sob sudo, senhas e chaves privadas podem ser armazenadas no repositório, pacotes instalados não podem ser rastreados de maneira significativa, e git terá um ajuste se eu tentar estender esta abordagem para todos os sistemas diretórios.

Eu também pensei em realizar todas as alterações através de scripts de shell ou makefiles, mas acho que esse processo exigirá muito esforço e será frágil.

Existem alguns métodos ou ferramentas melhores que estão faltando?

    
por Diomidis Spinellis 30.03.2012 / 20:44

3 respostas

5

Faça um favor a si mesmo (e aos seus entes queridos) e saia da configuração manual do sistema o mais rápido possível!

Você deve começar a usar o software de gerenciamento de configuração do sistema. O caso de uso original desse software era o gerenciamento de um grande número de hosts (para alguma definição de "grande"). No entanto, as premissas subjacentes são válidas para o gerenciamento de até mesmo um único host. Embora o esforço necessário possa não ser imediatamente justificável, para qualquer um que planeje a longo prazo, realmente faz sentido.

Os grandes nomes no campo são (em ordem cronológica):

Eu mencionei as linguagens de programação não apenas para o caso remoto que você precisa para se aprofundar no código de implementação. Embora não seja um requisito absoluto, a familiaridade com a linguagem subjacente pode ajudar no uso de cada ferramenta, pois sua configuração é influenciada pelo idioma.

Minha escolha pessoal tem sido CFengine, por causa da ... idade, linguagem e beleza da teoria subjacente . Mas qualquer um desses (e outros) pode definitivamente ajudá-lo.

A configuração inicial pode ser um pouco assustadora ... especialmente para pessoas como nós, que passaram anos fazendo o caminho manual. Mas definitivamente vale a pena no final!

    
por 31.03.2012 / 13:15
3

Em termos de ferramentas, você pode dar uma olhada em esta página que é sobre como automatizar a administração do sistema usando o gerenciamento de configuração de código aberto ferramentas (conferência USENIX 2010 em Boston que hospedou o primeiro Summit do Configuration Management):

A página relacionada à wikipedia também é útil.

Espero que isso ajude

    
por 30.03.2012 / 21:05
0

Grandes recursos mencionados acima!

Netdisco - para gerenciamento e descoberta de redes baseadas em SNMP, CDP, LLDP, back-end do Postgres link

e

Nedi, novamente aproveitando SNMP, CDP ... link

    
por 31.03.2012 / 19:09