我正在尝试使用 icinga2 的 puppet 模块,它定义了一个自定义函数和一个使用它的模板。我正在使用以下(剥离的)hiera 配置:
icinga2::object::host:
host.com:
target_file_name: host.conf
display_name: host.com
ipv4_address: XXX
vars:
os: Linux
没有渲染的模板vars
完全没问题,但是当它被包含时,puppet 无法评估模板中的函数调用:
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Function Call, Failed to parse template icinga2/object_host.conf.erb:
Filepath: org/jruby/RubyKernel.java
Line: 1072
Detail: Could not autoload puppet/parser/functions/icinga2_config_value: no such file to load -- puppet/icinga2/utils
at /etc/puppetlabs/code/environments/production/modules/icinga2/manifests/object/host.pp:71:18 on node XXX
当直接在内联模板中调用时,puppet 也可以很好地找到并执行命令:
root@puppetmaster:~# /opt/puppetlabs/bin/puppet apply -e "notice(inline_template(\"<%= scope.function_icinga2_config_value([[1,2]]) %>\"))"
Notice: Scope(Class[main]): [
"1",
"2",
]
我还发现了一些朝着类似方向发展的错误(1、2),但它们在几年前就已修复,并且建议的解决方法也不起作用。我正在使用最新版本的 4.2.1。
知道如何进一步调试此问题或在 icinga2 模块中修复它吗?