企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 输出调试信息 真理会使你获得自由。在调试问题时,若能输出配置清单某一个点上的信息将会对问题解决有很大帮助。 这是一种很好的报告问题的方式,例如,如果一个变量没有定义或者定义了一个非法的值。 有时,获知一个特定的代码片段已经被执行也是很有用的。 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 ```