Parece que você quer alguma forma de gerenciamento de configuração, como Salt Stack (possivelmente sem mestre ou Assistente ou um dos vários outros.
Essas ferramentas podem demorar um pouco, mas resolvem o problema exato que você está enfrentando: como provisionar uma nova máquina exatamente para as especificações. Com essas ferramentas você pode colocar sua configuração e configuração em um repositório git em algum lugar, em seguida, em uma nova máquina ou vm você simplesmente precisa inicializar a instalação de salt ou ansible e deixar fazer o resto seguindo as regras em seu repositório.
Ansible pode ser o que você quer - permite que você escreva 'playbooks' de arquivos e comandos de configurações para executá-los remotamente através do ssh. Assim, quando você cria um novo servidor, basta executar um ansioso playbook para configurá-lo completamente.
Eu tenho mais experiência com o saltstack, então posso dar exemplos mais detalhados de como usá-lo em uma configuração sem master. No repositório que contém dois arquivos:
wheel.sls
que garante que o sudo esteja instalado e
desativa o tempo limite da senha
sudo:
pkg.installed
/etc/sudoers.d/wheel:
file.managed:
- user: root
- group: root
- mode: 440
- contents: |
%wheel ALL=(ALL) ALL
Defaults passwd_timeout=0
e top.sls
- o que o salt usa para decidir quais estados executar em quais máquinas, nesse caso, tudo rodará roda.sls
base:
'*':
- wheel
Em seguida, basta instalar o sal-minion no servidor-alvo / vm e dar a configuração semelhante à seguinte em /etc/salt/minion
file_client: local
fileserver_backend:
- git
gitfs_remotes:
- [email protected]:user/repo.git:
- pubkey: /etc/salt/ssh/github.pub
- privkey: /etc/salt/ssh/github
Substituindo o URL do github pelo de seu repositório e pelas chaves públicas / privadas por aqueles que têm acesso a esse repositório. Naturalmente, você pode estender isso para fazer mais, em seguida, instalar um único pacote e escrever um único arquivo, para um exemplo mais completo de check-out este repo que contém a metade pública da minha configuração (naturalmente a maior parte da configuração está em um repositório privado, mas deve ser suficiente para lhe dar algumas idéias).
Para configurações mais complicadas, você pode executar um mestre dedicado - ou até mesmo executar salt sobre o ssh.