多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 获得系统的环境信息 > In Paris they simply stared when I spoke to them in French. I never did succeed in making those idiots understand their language. > > — Mark Twain 当地的知识是非常有用的。通常在 Puppet 的配置清单中,你需要知道一些所在机器的本地信息。 Puppet 的发行中包含了一个 **Facter** 工具,它提供了从环境中获取系统信息('facts') 的一种标准方法,这些信息包括: * 操作系统 * 内存大小 * 体系结构 * 处理器数量 > ![注记](https://box.kancloud.cn/2016-05-12_5733eec619643.png) > 要查看关于你的系统中可用的完整的 facts 列表,请运行如下命令: > ``` > # facter > ``` > 虽然它可以方便地从命令行获得信息,但 **Facter** 的真正强大之处在于, 可以在你的 Puppet 配置清单中访问这些 facts。 #### 操作步骤 1. 在你的配置清单中可以像引用其他变量一样引用一个 Facter 的值,例如: ``` notify { "This is $operatingsystem version $operatingsystemrelease, on $architecture architecture, kernel version $kernelversion": } ``` 2. 一旦运行 Puppet,它就会为当前节点填充适当的值: ``` notice: This is Ubuntu version 10.04, on i386 architecture, kernel version 2.6.32 ``` #### 工作原理 Facter 为 Puppet 提供了一个抽象层,并在配置清单中提供了一种关于环境信息的标准方法。 当你在配置清单中引用一个 fact 值时,Puppet 就会通过查询 Facter 获得当前值, 并将其插入配置清单。 #### 更多用法 你也可以在 **ERB** 模板中使用 facts。例如,你可能会在一个文件中插入一个节点的主机名, 或者基于一个节点的内存大小改变一个应用的配置设置。 当你在模板中使用 fact 的名字时,它们不需要前导的美元符号, 因为在 **ERB** 模板中使用的是 Ruby,而不是 Puppet: ``` $KLogPath <%= case kernelversion when "2.6.31" then "/var/run/rsyslog/ kmsg" else "/proc/kmsg" end %> ``` #### 参见本书 * 第 9 章的 [创建 Facter 的自定义 fact](#ch09sec01) 一节