首先,我是一个红宝石菜鸟,我有点过头了,请你是异教徒。
我在这个文件的第14行得到了一个例外,(由别人写的)。
https://github.com/theforeman/kafo/blob/master/modules/kafo_configure/manifests/yaml_to_class.pp
if is_hash($kafo_configure::params[$name]) {
# The quotes around $classname seem to matter to puppet's parser...
$params = { "${classname}" => $kafo_configure::params[$name] }
create_resources( 'class', $params )
我需要添加一个调试来确定' create_resources'函数调用正在崩溃。
exception object expected at /usr/local/var/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems\
/kafo-0.6.0/modules/kafo_configure/manifests/yaml_to_class.pp:14 on node foo.bar
当我尝试打印出$ name的值时,我遇到了一个错误,即“放置'是一个未知的功能。
if is_hash($kafo_configure::params[$name]) {
puts "debugging name is #{name}"
# The quotes around $classname seem to matter to puppet's parser...
$params = { "${classname}" => $kafo_configure::params[$name] }
create_resources( 'class', $params )
我还尝试了以下语法:
puts "debugging name is #{name}"
print "debugging name is #{name}"
puts "debugging name is $name"
print "debugging name is $name"
puts "debugging name is #{$name}"
任何人都可以解释:
1.为什么此功能无法打印/放置?
2.有没有其他方法来显示该$ name变量的值是什么?
更新
正如所指出的,我还使用了这种语法puts "debugging name is #{$name}"
答案 0 :(得分:2)
您可以使用notice
功能打印调试信息。
您指出的fail
函数将打印消息,但也会破坏清单执行。
答案 1 :(得分:1)
想出来。由于puppet是用ruby编写的,我错误地认为我可以在puppet文件中使用ruby。
我能够使用木偶内置的“失败”功能打印出我需要的debuging声明
fail("if the value of name is ${name}")
工作解决方案
if is_hash($kafo_configure::params[$name]) {
# The quotes around $classname seem to matter to puppet's parser...
fail("if the value of name is ${name}")
$params = { "${classname}" => $kafo_configure::params[$name] }
create_resources( 'class', $params )
答案 2 :(得分:1)
要在代理端显示调试消息,可以使用notify { }
资源类型。