Solution 1 :
Quelle version de sudo ? Votre version de sudo prend-elle en charge l'utilisation de #includedir
option pour diviser les choses dans un répertoire de fragments /etc/sudoers.d/
?
Si tel est le cas, je vous suggère d'utiliser cette fonctionnalité pour créer votre configuration.
Faites livrer votre fichier de configuration principal à /etc/sudoers
qui inclut tous les paramètres communs à chaque hôte que vous contrôlez. Faites ensuite déposer la configuration spécifique au rôle dans un fichier dans /etc/sudoers.d/
.
Chaque section de classe ou de marionnette est responsable de la mise à jour de la petite partie de la configuration sudo directement liée à cette classe.
Solution 2 :
Vous pouvez jeter un œil aux ressources virtuelles et réaliser :https://puppet.com/docs/puppet/latest/lang_virtual.html.
Cela fait exactement cela :sur certains systèmes, vous «réalisez» la ressource et sur d'autres non.
Solution 3 :
Vous pouvez utiliser des modèles Puppet... Configuration spécifique au site avec un petit extrait/variable ruby pour l'utilisateur dont vous avez besoin. (Je posterai un exemple plus tard)
La manière traditionnelle de gérer cela consiste à utiliser des définitions de groupe au lieu d'utilisateurs nommés dans votre /etc/sudoers
. Cela peut être moins compliqué à gérer.