Puppet (ou similaire) est-il une technologie appropriée pour prendre en charge les changements de masse fondamentaux mais critiques?
Oui, il peut être utilisé de cette façon. Je l'utilise pour prendre en charge les systèmes de clients externes.
Je ne veux pas qu'un serveur puisse voir une configuration qu'il ne devrait pas
Si vous utilisez une marionnette, vous ne devez alors pas activer la signature automatique. La signature automatique permet aux hôtes de demander automatiquement un certificat. Votre configuration et vos autorisations seront certainement liées directement au CN dans le certificat. Vous ne voulez pas qu'un ordinateur aléatoire soit mis en ligne et puisse prétendre qu'il s'agit en fait du système avec tous les éléments secrets de haute sécurité.
Si vous êtes vraiment paranoïaque, vous pouvez ajuster les paramètres du serveur de fichiers des marionnettes pour créer des partages auxquels seuls certains systèmes peuvent accéder. L'accès au serveur de fichiers est basé sur les certificats.
Je ne veux pas que Puppet fasse des changements qu'il ne devrait pas faire, ni annuler les changements manuels effectués sur le serveur.
Il existe deux approches différentes pour permettre des changements locaux.
Une méthode que j'utilise fréquemment est ci-dessous. Fondamentalement, si vous passez une liste à un source
, la marionnette essaie chaque élément de la liste. J'ajoute donc le premier élément de la liste pour pointer vers un fichier local.
file { '/etc/ssh/sshd_config':
ensure => present,
source => ["/etc/ssh/sshd_config_local",
"puppet:///modules/ssh/$ssh_config_file"],
...
}
Une autre option serait d'utiliser des liens symboliques. Si quelqu'un veut utiliser la version marionnette, il crée un lien symbolique vers la version marionnette d'un fichier. S'ils veulent conserver leur configuration localement, ils ne créent pas de lien symbolique.
file { '/etc/ssh/sshd_config_puppet':
ensure => present,
source => "puppet:///modules/ssh/$ssh_config_file",
...
}
L'autre possibilité consiste à utiliser augeas pour effectuer des modifications au niveau ligne au lieu de modifier des fichiers entiers. Soyez très conservateur sur ce que vous changez.