O Puppet (ou similar) é uma tecnologia adequada para cuidar de mudanças de massa básicas, porém críticas?
Sim, pode ser usado dessa maneira. Eu uso isso para dar suporte a sistemas de clientes externos.
Não quero que nenhum servidor possa ver nenhuma configuração que não deveria
Se você estiver usando fantoches, não deverá ativar a assinatura automática. A assinatura automática permite que os hosts solicitem automaticamente um certificado. Sua configuração e permissões quase certamente serão vinculadas diretamente à CN no certificado. Você não quer que um computador aleatório fique online e seja capaz de afirmar que eles são realmente o sistema com todo o material secreto de alta segurança.
Se você é realmente paranóico, pode ajustar as configurações do servidor de arquivos fantoches para criar compartilhamentos que apenas alguns sistemas podem acessar. O acesso ao servidor de arquivos é baseado nos certificados.
Não quero que o Puppet faça alterações que não devam ou reverta as alterações manuais feitas no servidor.
Existem algumas abordagens diferentes para permitir mudanças locais.
Um método que eu frequentemente uso está abaixo. Basicamente, se você passar uma lista para a source
, o boneco tenta cada item da lista. Então, adiciono o primeiro item da lista para apontar para um arquivo local.
file { '/etc/ssh/sshd_config':
ensure => present,
source => ["/etc/ssh/sshd_config_local",
"puppet:///modules/ssh/$ssh_config_file"],
...
}
Outra opção seria fazer uso de links simbólicos. Se alguém quiser usar a versão fantoche, vinculará a versão fantoche de um arquivo. Se eles desejam manter sua configuração localmente, eles não criam um link simbólico.
file { '/etc/ssh/sshd_config_puppet':
ensure => present,
source => "puppet:///modules/ssh/$ssh_config_file",
...
}
A outra possibilidade é usar augeas para fazer alterações no nível da linha, em vez de alterar arquivos inteiros. Seja muito conservador sobre o que muda.