输出调试信息
优质
小牛编辑
132浏览
2023-12-01
真理会使你获得自由。在调试问题时,若能输出配置清单某一个点上的信息将会对问题解决有很大帮助。 这是一种很好的报告问题的方式,例如,如果一个变量没有定义或者定义了一个非法的值。 有时,获知一个特定的代码片段已经被执行也是很有用的。 Puppet 的 notify
资源可以让你显示出调试信息。
操作步骤
在你的配置清单中要被调研的检查点上定义 notify
资源:
notify { "Got this far!": }
工作原理
当这个资源被编译时,Puppet 就会显示如下的信息:
notice: Got this far!
更多用法
如果你有颗勇敢的心,喜欢尝试,当然我也希望你是那样的一个人, 你或许会从自己的调试信息中发现大量的代码不能工作的原因。 所以知道如何获得更多的 Puppet 调试特性将非常有用。 下面将解释其中的一些用法。
输出变量的值
你可以在消息中引用变量:
notify { "operatingsystem is $operatingsystem": }
Puppet 会在输出中引用变量的值:
notice: operatingsystem is Ubuntu
输出资源的完整路径
对于更高级的调试, 你可以使用 withpath
参数显示哪个类的 notify
消息被执行了:
notify { "operatingsystem is $operatingsystem": withpath => true, }
现在 notify 消息将显示类似如下的完整资源路径前缀:
notice: /Stage[main]/Nagios::Target/Notify[operatingsystem is Ubuntu]/ message: operatingsystem is Ubuntu
将调试信息记录到 Puppetmaster
有时你仅仅想要在 Puppetmaster 上记录日志消息,而不在客户端生成额外的输出。 你可以使用 notice
函数实现:
notice("I am running on node $fqdn")
现在,当你运行 Puppet 时,就不会在客户端看到任何输出,但在 Puppetmaster 上会有一条如下的消息被记录到 syslog 系统日志:
Jan 31 11:51:38 cookbook puppet-master[22640]: (Scope(Node[cookbook])) I am running on node cookbook.bitfieldconsulting.com