[augeas-devel] Re: Augeas and Puppet
Bryan Kearney
bkearney at redhat.com
Fri Aug 1 11:21:01 UTC 2008
Raphaël Pinson wrote:
>
>
> On Fri, Aug 1, 2008 at 12:17 AM, Kjetil Torgrim Homme
> <kjetilho at linpro.no <mailto:kjetilho at linpro.no>> wrote:
<SNIP>
>
> I'm personnaly for keeping the xpath syntax in puppet, because otherwise
> we lose a lot of functionality from augeas, so I was thinking of
> something like :
>
>
> augeas {
>
> "/files/etc/my.cnf/mysqld/query_cache_limit":
> action => set,
> value => "1048576",
> notify => Service["mysql"];
>
> "/files/etc/my.cnf/mysqld/log-slow-queries":
> action => rm,
> notify => Service["mysql"];
>
> "/files/etc/logrotate.d/apache2/rule[1]":
> action => mv,
> newnode => "/files/etc/logrotate.d/apache2/rule[2]",
> notify => Service["logrotate"];
>
> }
>
>
> I believe using an "action" parameter is better than using "set",
> "insert", "rm", etc. because using the latter would make you think that
> you can perform several actions in one puppet call, which is not
> possible (or I don't know how to do it at least :) ).
Take a look at [1]. The changes property can take a single command, or
many based on line breaks or bring an array. The thinking being that you
would want to do dependency managment on a a single unit of work which
could be more then one augeas call.
>
> Calling the object "augeas" makes it clear that it's an an editfile
> syntax like in Cfengine, but specifically an augeas syntax, and that
> this object is likely to evolve with the augeas API.
>
>
> When it comes to setting several values with one call, I think it is the
> task of specific constructed types in puppet, like :
>
> define mysql::server ( $query_cache_limit="123456", $log-slow-queries,
> other parameters...) {
>
> blah blah
> package management
> blah blah
>
>
> augeas {
> "/files/etc/mysql.cnf/query_cache_limit":
> action => set,
> value => "123456";
>
> "/files/etc/my.cnf/log-slow-queries":
> action => rm;
> }
>
> }
>
In the current implementation it would be:
$mysql_augeas_commands = [
"set /files/etc/mysql.cnf/query_cache_limit $query_cache_limit",
"rm /files/etc/my.cnf/log-slow-queries"
]
augeas {"mysql_changes":
changes => $mysql_augeas_commands
}
>
> This type could check for values, and do :
> - set the value if the value is defined
> - rm the value if the value is not defined
>
>
> Or there could be a keyword to tell the type to delete the value...
>
>
> editfile { "/etc/ssh/sshd_config":
>
> lens => 'sshd,
> match => '/sshd/AcceptEnv/*',
> rm => 'match',
> }
>
>
>
> using the xpath format directly in the action would lead to this aswell :
>
> augeas { "/files/etc/ssh/sshd_config/sshd/AcceptEnv/*":
> action => rm;
> }
>
I agree in principle, force them to understand the augeas syntax.
>
<snip>
>
> Btw, I'm forwarding this conversation to the puppet-dev group to have
> more insight/ideas from other puppet experts.
thanks.. I am hoping to push this into the common modules when it is ready.
-- bk
[1] http://git.et.redhat.com/?p=ace.git;a=blob;f=modules/augeas/test.pp
More information about the augeas-devel
mailing list