Puppet (o simile) è una tecnologia adatta per prendersi cura dei cambiamenti di massa fondamentali ma critici?
Sì, può essere utilizzato in questo modo. Lo uso per supportare sistemi client esterni.
Non voglio che nessun server sia in grado di vedere alcuna configurazione che non dovrebbe
Se stai usando un pupazzo, non devi abilitare la firma automatica. La firma automatica consente agli host di richiedere automaticamente un certificato. La configurazione e le autorizzazioni saranno quasi sicuramente legate direttamente alla CN nel certificato. Non vuoi che un computer casuale vada online e sia in grado di affermare che in realtà sono il sistema con tutte le cose segrete ad alta sicurezza.
Se sei veramente paranoico, puoi regolare le impostazioni del file server dei pupazzi per creare condivisioni a cui solo alcuni sistemi possono accedere. L'accesso al fileserver si basa sui certificati.
Non voglio che Puppet apporti modifiche che non dovrebbero, né ripristini eventuali modifiche manuali apportate sul server.
Esistono un paio di approcci diversi per consentire i cambiamenti locali.
Di seguito è riportato un metodo che utilizzo frequentemente. Fondamentalmente se passi un elenco a source
, quindi il pupazzo prova ogni elemento nell'elenco. Quindi aggiungo il primo elemento nell'elenco per puntare a un file locale.
file { '/etc/ssh/sshd_config':
ensure => present,
source => ["/etc/ssh/sshd_config_local",
"puppet:///modules/ssh/$ssh_config_file"],
...
}
Un'altra opzione sarebbe quella di utilizzare i collegamenti simbolici. Se qualcuno desidera utilizzare la versione fantoccio, si collega alla versione fantoccio di un file. Se vogliono mantenere la propria configurazione localmente, non creano un collegamento simbolico.
file { '/etc/ssh/sshd_config_puppet':
ensure => present,
source => "puppet:///modules/ssh/$ssh_config_file",
...
}
L'altra possibilità è utilizzare augeas per apportare modifiche a livello di linea anziché modificare interi file. Sii molto conservatore su ciò che cambi.