我正在尝试使用基于检查的日志path来configuration日志configuration,以查看该日志文件是否存在。 但是,if语句总是返回true,即使我知道/var/log/hermes/hermes.log不存在。 我已经testing了exec {“service_log_check”onlyif正在工作,所以这与if语句有关。 我曾想过在每个exec中添加像environment => [“FOO = true”的内容,然后将if语句更改为if FOO == true,但似乎在exec环境中设置的variables只能在exec中访问,而不是整个类。 这让我疯狂!!! 我们正在使用木偶v3.7
class hermes :: fluentd($ service_name ='hermes',$ logs ='/ var / log / test / test.log'){
exec {"service_log_check": command => '/bin/true', onlyif => '/usr/bin/test -e /var/log/hermes/hermes.log', } exec {"service_log_json_check": command => '/bin/true', onlyif => '/usr/bin/test -e /var/log/hermes/hermes-json.log', } exec {"request_log_check": command => '/bin/true', onlyif => '/usr/bin/test -e /var/log/hermes/request.log', } if service_log_check { $service_logs = "/var/log/${service_name}/${service_name}.log" } else { $service_logs = [] } if service_log_json_check { $service_json_logs = "/var/log/${service_name}/${service_name}-json.log" } else { $service_json_logs = [] } if request_log_check { $service_request_logs = "/var/log/${service_name}/request.log" } else { $service_request_logs = [] } $logs_to_tail = [$logs, $service_logs, $service_json_logs, $service_request_logs] file { "/etc/td-agent/config.d/${service_name}_service_logs.conf": ensure => present, content => template('service_logs.conf.erb'), owner => td-agent, group => td-agent, mode => '0775' }
}
不幸的是,这不是木偶的作品。 Exec资源不能设置puppet清单中的其他代码可以引用的值。 这里有一些你需要理解的概念:
如果您需要从节点获取信息以决定您所需的状态(即将.conf文件放入什么值),则需要编写一个自定义事实(请参阅https://docs.puppet.com/ facter / 3.7 / custom_facts.html )