0

我对 puppet 还是很陌生,但是我正在用它编写一些部署。

我遇到了一个问题,我无法正确获取符号链接,因为由于某种原因,我发现现有系统文件夹和 puppet ${architecture} 变量不匹配。

我需要以下代码才能按以下方式工作:

在 Ubuntu 12.04 x86_64 上,我应该得到一个来自/usr/lib/libz.soto的链接,/usr/lib/x86_64-linux-gnu/libz.so但是,我正在安装/usr/lib/amd64-linux-gnu/libz.so一个不存在的链接,而不是一个断开的链接。

file {"/usr/lib/libz.so":
    ensure => link,
    target => "/usr/lib/${architecture}-linux-gnu/libz.so",
}

Puppet 使用 Facter 获取系统事实,并在我的命令行上运行 facter 我得到以下信息:

root@somehost:/root# facter
architecture => amd64
facterversion => 1.6.5
hardwareisa => x86_64
(....)

运行lscpu我得到:

root@tsomehost:/root# lscpu 
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
(....)

我的问题是,Facter 从哪里得到它的事实?

4

2 回答 2

2

Facter 文档现在包括有关如何解决核心事实的文档。

  • 架构使用 hardwaremodel,它调用uname -m然后在 Debian 上转换x86_64amd64
  • 硬件调用uname -p

$hardwaremodel可能是您想要的,但是我认为如果您使用具有 32 位用户空间的 64 位内核,它将返回 x86_64,这可能不适合您的用例。

于 2012-10-02T19:18:48.010 回答
0

你的 Puppet 和 Facter 版本是什么?

也许你有一个 < 1.6.5 Facter 版本,因此有这个错误:http ://projects.puppetlabs.com/issues/11511

如果可以,请尝试升级。

于 2012-10-02T15:32:02.547 回答