我有一个傀儡问题。 (我正在使用5.1.0版本)
在此路径中:C:\ ProgramData \ PuppetLabs \ code \ environments \ production \ manifests 我有文件:site.pp 此文件(/etc/puppetlabs/puppet/manifests/site.pp)是代理连接到主服务器并请求更新配置时使用的主要入口点。
这是该文件的内容:
node default {
# This is where you can declare classes for all nodes.
# Example:
# class { 'my_class': }
#hiera_include('classes')
include(hiera_array("classes", ))
}
但是当我使用puppet apply命令运行puppet时:
“C:\ Program Files \ Puppet Labs \ Puppet \ bin \ puppet”应用C:\ ProgramData \ PuppetLabs \ code \ environments \ production \ manifests \ site.pp
我收到此错误:
Warning: The function 'hiera_array' is deprecated in favor of using 'lookup'. See https://docs.puppet.com/puppet/5.1/referenc e/deprecated_language.html (file & line not available) Error: Function lookup() did not find a value for the name 'classes'
所以我将site.pp代码更改为:
node default {
# This is where you can declare classes for all nodes.
# Example:
# class { 'my_class': }
#hiera_include('classes')
include(lookup('classes', {merge => unique}, ))
}
(因为我找到了这个文档:https://puppet.com/docs/puppet/5.1/hiera_migrate_functions.html)
现在我只得到这个错误:
Error: Function lookup() did not find a value for the name 'classes'
我不确定如何修复它,因为这段代码在一个月前使用相同的apply命令工作。
你能帮帮我吗?
谢谢!
答案 0 :(得分:2)
我收到此错误:
Warning: The function 'hiera_array' is deprecated in favor of using 'lookup'. See https://docs.puppet.com/puppet/5.1/referenc e/deprecated_language.html (file & line not available) Error: Function lookup() did not find a value for the name 'classes'
更正:您收到警告和错误。错误是独立的,但表明Puppet正在通过内部委派给新的lookup()
函数来处理它所警告的情况。
所以我将site.pp代码更改为:
node default { # This is where you can declare classes for all nodes. # Example: # class { 'my_class': } #hiera_include('classes') include(lookup('classes', {merge => unique}, )) }
是的,这是解决警告的完美而自然的方式,看起来它是成功的。但同样,错误是分开的。这不是关于您的清单,而是关于您的数据。正如它所说,尝试查找关键的“类”失败了。没有找到这样的钥匙。 1}}在这种情况下没有提供默认值来返回,因此发生错误。
我不确定如何修复它,因为这段代码在一个月前使用相同的apply命令工作。
如果Puppet曾经运行相同的代码而没有发出错误,那么当时和现在之间的变化就是数据。但是,这可能是因为您现在正在以不同的用户身份运行Puppet。不同的普通用户都有自己的数据(和清单)默认位置,这些都与系统运行Puppet时使用的位置不同。