On Jun 1, 2010, at 11:47 AM, Rob McBroom wrote:
> I use Augeas for `sudoers`. This allows you to manage individual entries,
> instead of replacing the entire file. For instance, this will add an entry
> for a user named “joe” unless that entry already exists.
>
> augeas { "sudojoe":
> context => "/files/etc/sudoers",
> changes => [
> "set spec[last() + 1]/user joe",
> "set spec[last()]/host_group/host ALL",
> "set spec[last()]/host_group/command ALL",
> "set spec[last()]/host_group/command/runas_user ALL",
> ],
> onlyif => "match *[user = 'joe'] size == 0",
> }
As I posted that, I thought there might be a better way (even though I've been
using the above for weeks). Here's the better way:
augeas { "sudojoe":
context => "/files/etc/sudoers",
changes => [
"set spec[user = 'joe']/user joe",
"set spec[user = 'joe']/host_group/host ALL",
"set spec[user = 'joe']/host_group/command ALL",
"set spec[user = 'joe']/host_group/command/runas_user ALL",
],
}
This creates the user's entry only if it doesn't exist, but has the added
benefit that changes to the host, command, etc. will get applied to an existing
entry. The original would create an entry, but would never modify it if it
existed.
--
Rob McBroom
<http://www.skurfer.com/>
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.