On Jun 2, 2010, at 4:03 PM, Christopher Johnston wrote:

> Has anyone attempted to use the augeas type to add a service?  I got the 
> service to add no problem, but having some difficulties to get the match to 
> work to prevent duplicate entries from adding.  Since the service-name[*] has 
> endless number of entries I used a glob so it checks all the entries but that 
> does not seem to work.  Any ideas on how to proceed?
> 
>   augeas { app_tcp':
>     context => '/files/etc/services',
>     changes => ['insert service-name after service-name[last()]',
>                 'set service-name[last()] app_tcp',
>                 'set service-name[last()]/port 1002',
>                 'set service-name[last()]/protocol tcp'],
>     onlyif  => "match service-name[.*] != '[port = 1002][protocol = tcp]'" 
>   }

I'm no expert, but I've messed with Augeas a bit and you can make it harder 
than it needs to be without even trying. I haven't done anything in 
`/etc/services`, but I had a similar issue with `sudoers`. A trick to keep in 
mind is that if you set something on a path that doesn't exist, Augeas will 
create it. So, if you can find something that makes an item unique, you can use 
that to specify a path. In this case, the port number will probably work.

    augeas { 'app_tcp':
      context => '/files/etc/services',
      changes => [
        "set /files/etc/services/service-name[port = '1002']/port 1002"
        "set /files/etc/services/service-name[port = '1002'] app_tcp"
        "set /files/etc/services/service-name[port = '1002']/protocol tcp"
        "set /files/etc/services/service-name[port = '1002']/#comment foo"
      ],
    }

This should create the line in `/etc/services` if it doesn't exist, but if it 
does exist and nothing has changed, Puppet won't do anything to the line (which 
is generally what you want). Setting the “name” doesn't seem to work until 
after the thing exists, which is why it appears second on the list.

-- 
Rob McBroom
<http://www.skurfer.com/>

It's not that I think guns, drugs, prostitution, swimming, eating and reading 
should be legal. It's just that no one on Earth has the authority to make them 
illegal.


-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-us...@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to