I’ve got this define.
    define sudoentry ($user, $host = "ALL", $command =
"ALL", $tag = false, $runas = "ALL") {
      $sudo_changes = $tag ? {
        false => [
          "set spec[user = ''$user'']/user $user",
          "set spec[user = ''$user'']/host_group/host
$host",
          "set spec[user = ''$user'']/host_group/command
''$command''",
          "remove spec[user =
''$user'']/host_group/command/tag",
          "set spec[user =
''$user'']/host_group/command/runas_user $runas",
        ],
        # this isn''t a real tag, but a sneaky hack to remove entries
        DELETE => "remove spec[user = ''$user'']",
        default => [
          "set spec[user = ''$user'']/user $user",
          "set spec[user = ''$user'']/host_group/host
$host",
          "set spec[user = ''$user'']/host_group/command
''$command''",
          "set spec[user =
''$user'']/host_group/command/tag $tag",
          "set spec[user =
''$user'']/host_group/command/runas_user $runas",
        ],
      }
      augeas { "sudo-$user":
        context => "/files/etc/sudoers",
        changes => $sudo_changes,
      }
    }
And I see the following.
If the entry isn’t in `sudoers` at all, this will add it:
    sudoentry { "rob":
      user => "rmcbroom”,
    }
If the entry is already there, this will add the “tag” to it:
    sudoentry { "rob":
      user => "rmcbroom",
      tag => "NOPASSWD",
    }
But if the user doesn’t exist and you try to add the entry with “tag” set to
something, it fails:
    err: //Sudoentry[rob]/Augeas[sudo-rmcbroom]/returns: change from need_to_run
to 0 failed: Save failed with return code false
Any guesses? Am I missing something?
(I realize with the define as written, there are potential uniqueness problems
for users with multiple entries, etc. It’s a work in progress.)
-- 
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 puppet-users@googlegroups.com.
To unsubscribe from this group, send email to
puppet-users+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.