Hi Marcel,
On Mon, 2009-06-01 at 21:11 +0200, [email protected] wrote:
> I tried the following:
>
> augeas { "logrotate":
> context => "/files/etc/logrotate.d/httpd/rule",
> changes => 'set file "/var/log/httpd/*log /var/www/vhosts/*/logs/*log"',
> onlyif => 'get file != "/var/log/httpd/*log
> /var/www/vhosts/*/logs/*log"'
> }
>
> (side note: is the onlyif now implicit by the changes?)
The Puppet type won't automatically derive any onlyif conditions, but
Augeas won't touch a file of your tree changes don't change the contents
of the file (e.g., because you set a node to a value it already has)
> this fails as augeas fails to save the change. The same if I try it in
> augtool:
>
> augtool> set /files/etc/logrotate.d/httpd/rule/file "/var/log/httpd/*log
> /var/www/vhosts/*/logs/*log"
> augtool> save
> Saving failed
>
> however if I have only one filepath I can change to whatever I'd like
> and it works as assumed.
>
> I looked a bit at the lense and thought that the problem might be (if I
> interpreted the lense correctly) that only one word is allowed for file.
> Am I right?
The lens splits multiple files into multiple file nodes, i.e. what you
need to create is a structure like this:
/files/etc/logrotate.d/httpd/rule
file/ = /var/log/httpd/*log
file/ = /var/www/vhosts/*/logs/*log
...
In augtool, the following commands accomplish that:
# Set R as a convenience
defvar r /files/etc/logrotate.d/httpd/rule
print $r
## Use this as the changes in your puppet type
# Remove existing file entries
rm $r/file
# Create two new empty file nodes as the first children of R
ins file before $r/*[1]
ins file before $r/*[1]
# Set them to some value
set $r/file[1] f1
set $r/file[2] f2
print $r
save
print /augeas//error
David
_______________________________________________
augeas-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/augeas-devel