On Jun 3, 11:58 am, treydock <treyd...@gmail.com> wrote:
> I am getting the following error on about every other manual run of
> puppet... (hostnames removed)
>
> err: Could not retrieve catalog from remote server: Error 400 on
> SERVER: Failed to parse template zabbix/userparameter_mysql_conf.erb:
> Could not find value for 'zabbix_mysql_user_parameters' at /etc/puppet/
> modules/zabbix/manifests/classes/mysql.pp:7 on node
> puppetclient.domain


If runs sometimes succeed and sometimes fail for the same node then
you probably have a missing dependency somewhere.  If there were
exactly one missing dependency involved then the first-order estimate
would be that half your runs would fail.


> If I then do another puppet run, I do not receive the error.  It seems
> that just about every other manual run during testing of new module
> changes has this happen.  This is occuring on ALL my puppet clients
> that are using the zabbix::mysql module.  All systems running
> Puppet-2.6.8.  Below is the full debug log and my zabbix module.
>
> The $zabbix_mysql_user_parameters variable is optional...right now
> only one node has it defined explicitly, like so:
>
>     $zabbix_mysql_user_parameters =  {
>         item1 => { 'name' => 'mediawiki.usercount[*]', 'command' =>
> 'mysql -B -s -e "SELECT count(*) FROM user" $1'},
>     }
>
> This is the mysql class for zabbix where the empty variable is defined
> so that if no node has it defined it shouldn't fail...
>
> $zabbix_mysql_user_parameters = []
>
> class zabbix::mysql inherits zabbix::agent {
>
>     file {
>         "$zabbix_userparameter_config_dir/userparameter_mysql.conf":
>             content => template("zabbix/
> userparameter_mysql_conf.erb"),
>             group   => "zabbix",
>             owner   => "zabbix",
>             mode    => "600",
>             require => Package["zabbix-agent"];
>
>         "$zabbix_user_home_dir/.my.cnf":
>             source  => "puppet:///modules/zabbix/.my.cnf",
>             group   => "zabbix",
>             owner   => "zabbix",
>             mode    => "600",
>             require => [ Package["zabbix-agent"],
> File["$zabbix_user_home_dir"] ];
>     }
>
> }


The variable definition is at top level in the class's file?  And
you're relying on that to provide a default definition of the
variable?  Ew.  Now you have dynamic scoping thrown in.  But that
ought to be parse-order dependent, so although it could explain some
nodes succeeding but others failing, I don't think it explains
individual nodes flopping back and forth between success and failure.


> Here's the variables usage in the template...
> <% zabbix_mysql_user_parameters.each do |key, value_hash| -%>
> UserParameter=<%= value_hash['name'] %>,HOME=<%= zabbix_user_home_dir
> %> <%= value_hash['command'] %>
> <% end -%>
>
> Would the solution be to make the template call use this instead??
>
> <% if has_variable?("zabbix_mysql_user_parameters") -%>
> <% zabbix_mysql_user_parameters.each do |key, value_hash| -%>
> UserParameter=<%= value_hash['name'] %>,HOME=<%= zabbix_user_home_dir
> %> <%= value_hash['command'] %>
> <% end -%>
> <% end -%>


Maybe.  Does the node that has a customized value for the variable
ever fail?  Does it always get the userparameter_mysql.conf template
filled correctly?  If so then yes, your template change should do the
trick, and you could then also remove the default variable definition
(which isn't reliably working anyway).

Otherwise, probably not.  That solution would likely make the errors
disappear, but it wouldn't fix the actual problem.  Chances are that
nodes with customized $zabbix_mysql_user_parameters would flip flop.
In that case, the solution would probably require figuring out what
dependency is needed and putting it in.


John


-- 
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.

Reply via email to