Lösung 1:
Welche Sudo-Version? Unterstützt Ihre Version von sudo die Verwendung von #includedir
Option, Dinge in ein Fragmentverzeichnis aufzuteilen /etc/sudoers.d/
?
Wenn ja, dann schlage ich vor, dass Sie diese Funktionalität verwenden, um Ihre Konfiguration zu erstellen.
Lassen Sie Ihre Hauptkonfigurationsdatei an /etc/sudoers
liefern Dazu gehören alle Einstellungen, die für jeden Host gelten, den Sie steuern. Lassen Sie dann die rollenspezifische Konfiguration in einer Datei in /etc/sudoers.d/
ablegen .
Jeder Klassen- oder Puppet-Abschnitt ist dafür verantwortlich, den kleinen Teil der sudo-Konfiguration zu aktualisieren, der direkt mit dieser Klasse zusammenhängt.
Lösung 2:
Sie können sich virtuelle Ressourcen ansehen und feststellen:https://puppet.com/docs/puppet/latest/lang_virtual.html.
Dies bewirkt genau das:Auf manchen Systemen „erkennt“ man die Ressource und auf manchen nicht.
Lösung 3:
Sie können Puppet-Vorlagen verwenden ... Site-spezifische Konfiguration mit einem kleinen Ruby-Snippet / einer Variablen für den Benutzer, den Sie benötigen. (Ich werde später ein Beispiel posten)
Der traditionelle Weg, dies zu handhaben, ist die Verwendung von Gruppendefinitionen anstelle von benannten Benutzern in Ihrem /etc/sudoers
. Es ist möglicherweise weniger mühsam zu verwalten.