Soluzione 1:
Quale versione di sudo? La tua versione di sudo supporta l'utilizzo di #includedir
opzione per suddividere le cose in una directory di frammenti /etc/sudoers.d/
?
In tal caso, ti suggerisco di utilizzare questa funzionalità per creare la tua configurazione.
Invia il tuo file di configurazione principale a /etc/sudoers
che include tutte le impostazioni comuni a ogni host che controlli. Quindi la configurazione specifica del ruolo viene rilasciata in un file all'interno di /etc/sudoers.d/
.
Ogni sezione di classe o marionetta è responsabile dell'aggiornamento della piccola parte della configurazione sudo direttamente correlata a quella classe.
Soluzione 2:
Puoi dare un'occhiata alle risorse virtuali e realizzare:https://puppet.com/docs/puppet/latest/lang_virtual.html.
Questo fa esattamente questo:su alcuni sistemi "realizzi" la risorsa e su altri no.
Soluzione 3:
Puoi fare a meno di utilizzare i modelli Puppet... Configurazione specifica del sito con un piccolo snippet/variabile Ruby per l'utente di cui hai bisogno. (posterò un esempio più avanti)
Il modo tradizionale di gestirlo è usare le definizioni di gruppo invece di named-users nel tuo /etc/sudoers
. Potrebbe essere meno complicato da gestire.