Sorry, my statements could have been clearer. The example you listed works great in augtool. It was just the syntax I hoped for.
It seems that puppet is balking on the /dir[.='/path'] syntax though. Only on the second augeas run when the changes get applied to the filesystem as the log files correctly state that there is 1 change to apply, but fails to write the change on the second run. It also reports the invalid command error when I include the remove (or rm) statement. So it seems to now be a bug in puppet. I'm just packaging 0.24.8 for ubuntu to retest. I'm currently using: puppet-0.24.7 augeas-0.5.0 libruby-augeas-0.2.0 - Karl On Tue, Apr 7, 2009 at 10:24 PM, Bryan Kearney <bkear...@redhat.com> wrote: > > Just checking if these came out of order. Is this working or not for you? > > -- bk > > Karl Bowden wrote: >> On Tue, Apr 7, 2009 at 11:46 AM, Karl Bowden <karlbow...@gmail.com> wrote: >>> On Mon, Apr 6, 2009 at 11:59 PM, Bryan Kearney <bkear...@redhat.com> wrote: >>>> agentk wrote: >>>>> I'm not sure if I'm kicking tyres again, but first off: I like the >>>>> possibilities with puppet + augeas. >>>>> >>>>> Trying to make a working example with /etc/exports but not sure of how >>>>> to proceed. I want to be able to define exports in the following form: >>>>> >>>>> my_exports_def { >>>>> ['/home/server01', '/svr/logs']: >>>>> client => '*.example.com', >>>>> options => 'rw,sync', >>>>> '/other/export': >>>>> client => '*.example.com', >>>>> options => 'rw,sync,no_root_squash', >>>>> } >>>>> >>>> Try something like this: >>>> >>>> augeas{"test": >>>> context=>"/files/etc/exports", >>>> changes => ["set /dir[.='/home/server01'] '/home/server01'", >>>> "set /dir[.='/home/server01']/client '*.example.com'", >>>> "set >>>> /dir[.='/home/server01']/client[.='*.example.com']/option[.='rw'] rw"] >>>> >>>> } >>>> >>>> The commands work in augtool. The iteration may be an issue if you have >>>> many options. Perhaps you can set that up in a wrapper call and use >>>> conditionals? >>>> >>>> -- bk >>> Cheers! Your example did not work at first, but I just needed to >>> package the latest augeas for ubuntu. I think that is where half of my >>> trouble was. Oh well. All good now thank you. >>> >>> - Karl >>> >> >> Ok, I'm almost there. But not quite. >> >> First here is the code I'm using: >> >> templates/augeas/exports.erb: >> set /dir[.='<%= name %>'] '<%= name %>' >> set /dir[.='<%= name %>']/client[.='<%= client %>'] '<%= client %>' >> remove /dir[.='<%= name %>']/client[.='<%= client %>']/option >> <% options.each do |option| %>set /dir[.='<%= name %>']/client[.='<%= >> client %>']/option[.='<%= option %>'] '<%= option %>' >> <% end %> >> >> manifests/templates.pp: >> define augeas_nfs_export($client='*', $options=['ro','sync']) { >> augeas { >> "$name": >> context => "/files/etc/exports", >> changes => template('augeas/exports.erb'), >> } >> } >> class virt02_export { >> augeas_nfs_export { >> '/home/server01': >> client => '*.example.com', >> options => ['rw','sync','no_subtree_check']; >> } >> } >> >> Now the debug output shows that puppets is producing the right augeas >> commands and the work in augtool when I run the manually, but I have >> not been able to get puppet to save /etc/exports >> >> Trimed log output from sudo puppetd --test --debug: >> debug: >> //Node[virt02.nugan.com.au]/virt02_export/Augeas_nfs_export[/home/server01]/Augeas[/home/server01]: >> Changing returns >> debug: >> //Node[virt02.nugan.com.au]/virt02_export/Augeas_nfs_export[/home/server01]/Augeas[/home/server01]: >> 1 change(s) >> debug: Augeas[/home/server01](provider=augeas): Opening augeas with >> root /, lens path , flags 0 >> debug: Augeas[/home/server01](provider=augeas): sending command 'set' >> with params ["/files/etc/exports/dir[.='/home/server01']", >> "'/home/server01'"] >> debug: Augeas[/home/server01](provider=augeas): sending command 'set' >> with params >> ["/files/etc/exports/dir[.='/home/server01']/client[.='*.example.com']", >> "'*.example.com'"] >> debug: Augeas[/home/server01](provider=augeas): sending command >> 'remove' with params >> ["/files/etc/exports/dir[.='/home/server01']/client[.='*.example.com']/option"] >> debug: Augeas[/home/server01](provider=augeas): sending command 'set' >> with params >> ["/files/etc/exports/dir[.='/home/server01']/client[.='*.example.com']/option[.='rw']", >> "'rw'"] >> debug: Augeas[/home/server01](provider=augeas): sending command 'set' >> with params >> ["/files/etc/exports/dir[.='/home/server01']/client[.='*.example.com']/option[.='sync']", >> "'sync'"] >> debug: Augeas[/home/server01](provider=augeas): sending command 'set' >> with params >> ["/files/etc/exports/dir[.='/home/server01']/client[.='*.example.com']/option[.='no_subtree_check']", >> "'no_subtree_check'"] >> err: >> //Node[virt02.nugan.com.au]/virt02_export/Augeas_nfs_export[/home/server01]/Augeas[/home/server01]/returns: >> change from need_to_run to 0 failed: invalid command >> >> The first two lines indicate to me that puppet is seeing that on the >> test run augeas has one line to change in exports, but always fails on >> the actual run. >> Also to not is the remove command seems to produce errors on the final >> run too. if I remove the remove line the error is: >> err: >> //Node[virt02.nugan.com.au]/virt02_export/Augeas_nfs_export[/home/server01]/Augeas[/home/server01]/returns: >> change from need_to_run to 0 failed: Save failed with return code >> false >> >> I have tried putting these commands directly into an augeas statement, >> but it still produces the same errors. Where do I look next? >> >> - Karl >> >> > > > > > > --~--~---------~--~----~------------~-------~--~----~ 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+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---