【发布时间】:2018-06-04 15:34:57
【问题描述】:
我有一个木偶问题。 (我用的是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'
我不确定如何修复它,因为该代码在一个月前使用相同的应用命令运行。
你能帮帮我吗?
谢谢!
【问题讨论】:
-
查找代码应该是
lookup('classes', Array[String], 'unique').include。但这并不能完全解决您的问题,因为它源于您尚未提供相关信息的 Hiera 配置和数据组织问题。 -
@MattSchuchard,OP 对
lookup()的调用很好,因为他(仍然)收到的错误消息确实支持。该函数有multiple alternative signatures,并且OP的使用匹配其中之一。 -
@JohnBollinger 我可能不清楚。我并不是要暗示它导致了错误,而是它在清晰度、类型检查等方面不是最佳的。我仍然坚持我的说法,即错误的来源来自 hiera 配置/数据组织。这个问题需要更多相关信息。