On Mon, 2010-02-22 at 16:23 +0000, Paul Elliott wrote: > I'm just starting to look at using Augeas with Puppet to manage some of > our configuration files. I thought I would start with a simple task of > removing an entry from the /etc/hosts file. I'm not finding it simple > though! > > We have a number of hosts with entries in the /etc/hosts file like this: > > 127.0.1.1 hostname > > We would like to remove these lines. Now I know this can be done with a > simple exec of sed but if possible I would like to use it as a good test > exercise with Augeas. Now, it's pretty easy to do this with augtool, as > follows: > > r...@miscreant:/home/pre500# augtool > augtool> match /files/etc/hosts/*/ipaddr 127.0.1.1 > /files/etc/hosts/4/ipaddr
You can do this by looking for the entries with a single path expression: augtool> match /files/etc/hosts/*[ipaddr = '127.0.1.1'] gives you all entries in /etc/hosts with that IP. To remove them, just do 'rm' instead of 'match'. From your post, I wasn't sure if you had multiple such entries in /etc/hosts. If you do, and you want to delete all of them except the one that has 'host.example.com' as a canonical name, you can say augtool> rm /files/etc/hosts/*[ipaddr = '127.0.1.1'][canonical != 'host.example.com] or, to delete all but the first one: augtool> rm /files/etc/hosts/*[ipaddr = '127.0.1.1'][position() > 1] Some docs about this notation is on the Augeas Wiki[1] David [1] http://augeas.net/page/Path_expressions -- 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.