Uma resposta tangencial à sua pergunta está relacionada ao gerenciamento da configuração do servidor, e não ao próprio estado do servidor inteiro.
Dê uma olhada em Puppet ; O Puppet permite-lhe definir o estado da sua máquina em termos de configuração, configuração, aplicações, etc. Por exemplo, pode especificar coisas como
- Crie uma pasta em / etc / xyz
- Verifique se o arquivo / opt / java tem essas permissões
- Verifique se o usuário 'jill' existe com essa chave SSH
- Verifique se esses PPAs estão sempre ativados
Os arquivos nos quais você declara a configuração acima são chamados de "Puppet manifests" e o que você pode fazer é usar o git para colocar esses manifestos em um repositório em um servidor git remoto. Isso significa que você pode executar novamente os manifestos do Puppet em uma nova instalação do Ubuntu ou desfazer as alterações retornando um commit no git.