Solución 1:
¿Qué versión de sudo? ¿Su versión de sudo es compatible con #includedir
? opción para dividir las cosas en un directorio de fragmentos /etc/sudoers.d/
?
Si es así, le sugiero que use esa funcionalidad para crear su configuración.
Haga que su archivo de configuración principal se entregue a /etc/sudoers
que incluye todas las configuraciones que son comunes a cada host que controla. Luego, haga que la configuración específica del rol se suelte en un archivo dentro de /etc/sudoers.d/
.
Cada clase o sección de marionetas es responsable de actualizar la pequeña parte de la configuración de sudo directamente relacionada con esa clase.
Solución 2:
Puede echar un vistazo a los recursos virtuales y darse cuenta:https://puppet.com/docs/puppet/latest/lang_virtual.html.
Esto hace exactamente eso:en algunos sistemas "se da cuenta" del recurso y en otros no.
Solución 3:
Puede hacerlo con el uso de plantillas de Puppet... Configuración específica del sitio con un pequeño fragmento/variable de Ruby para el usuario que necesita. (Publicaré un ejemplo más tarde)
La forma tradicional de manejar esto es usando definiciones de grupo en lugar de usuarios designados en su /etc/sudoers
. Puede ser menos complicado de administrar.