获得系统的环境信息
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') 的一种标准方法,这些信息包括:
操作系统
内存大小
体系结构
处理器数量
要查看关于你的系统中可用的完整的 facts 列表,请运行如下命令:
# facter
虽然它可以方便地从命令行获得信息,但 Facter 的真正强大之处在于, 可以在你的 Puppet 配置清单中访问这些 facts。
操作步骤
在你的配置清单中可以像引用其他变量一样引用一个 Facter 的值,例如:
notify { "This is $operatingsystem version $operatingsystemrelease, on $architecture architecture, kernel version $kernelversion": }
一旦运行 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 一节