我对 Puppet 还是很陌生,但是我正在用它编写一些部署。
我遇到了一个问题,我无法获得正确的符号链接(symbolic link),因为出于某种原因,我发现现有系统文件夹与 puppet ${architecture} 变量不匹配。
我需要以下代码才能按如下方式工作:
在 Ubuntu 12.04 x86_64 上,我会得到一个从 /usr/lib/libz.so
到 /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 从哪里获取事实?
最佳答案
Facter 文档现在包括关于 how core facts are resolved 的文档.
- architecture使用硬件模型,调用
uname -m
然后在 Debian 上将x86_64
转换为amd64
- hardwareisa调用
uname -p
$hardwaremodel
可能是您在这里想要的,但是我认为如果您使用具有 32 位用户区的 64 位内核,它会返回 x86_64,这可能不适合您的使用-案例。
关于linux - Puppet 和 Facter 默认系统事实,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12693359/