Open i1tech opened 7 years ago
Hi @i1tech, thanks for rising this issue. I am not sure if I 100% understand it. The zabbix::agent class passes all params to the defined resource, so the variables are known to the defined resource: https://github.com/voxpupuli/puppet-zabbix/blob/master/manifests/agent.pp#L347
Do you run in any error message?
I have the same issue, @bastelfreak here is the error message I got:
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Resource Statement, Zabbix::Startup[zabbix-agent]:
parameter 'agent_configfile_path' expects a Resource value, got String
parameter 'pidfile' expects a Resource value, got String at /etc/puppetlabs/code/environments/prd/modules/zabbix/manifests/agent.pp:348 on node node1
My feeling is there is an incompatibility with sdtlib. I try to upgrade to stdlib v2.24 but still the same issue, basically, I got this error with all the defined variables type: Optional[Stdlib::Absolutepath]
David
@davidius81 thanks for the bug report. Can you paste the code you used to call this module? On which operatingsystem/puppet version are you? Which version of the module? Have you tried our master branch as well?
Affected Puppet, Ruby, OS and module versions/distributions
How to reproduce (e.g Puppet code you use)
Use the module to setup server or client on a CentOS 7.x system (most likely any system that uses systemd, but only have CentOS 7.x in our environmen).
What are you seeing
The service file is created with appropriate paths for PIDFile= and the configuration file option.
What behaviour did you expect instead
The appropriate values to be in the service file.
Output log
Any additional information you'd like to impart
The problem is lack of scope for the variables. Templates are put in place by the zabbix::startup define, which has no knowledge of the variables available to zabbix::agent or zabbix::server classes.
Variables are defined as <%= @agent_configfile_path %> and <%= @pidfile %> respectively, which are not defined within the scope of the define. Variables should be defined as <%= scope.lookupvar('zabbix::agent::agent_configfile_path') %> or <%= scope.lookupvar('zabbix::server::server_configfile_path') %> for the agent and server templates resepctively. Of course the pidfile would be defined with <%= scope.lookupvar('zabbix::agent::pidfile') %> or <%= scope.lookupvar('zabbix::server::pidfile') %>
I did not dig further to see if there were other instances where this would also be the case, as this is the only scenario that affects my install.
Regards,
John