环境
我目前在带有 PDK 2.3.0 的 Ruby 2.7.4 上使用 Puppet 6.21.1(主要用于 linting 并将 Puppet 控制台作为 REPL 启动)。操作系统是 macOS 货币。如果重要的话,我在 RVM 1.29.12-next 下运行 Ruby,并带有一个特定于模块的 gemset。
客观的
我正在尝试在 macOS 机器上的模块中测试一些 Hiera 查找,并尝试按事实覆盖开发框中返回的kernel
、os
和事实。osfamily
[请参阅帖子底部有关 X/Y 问题的注释。]
我试过的
我尝试过使用FACTERLIB环境变量、各种单独设置的FACTER_环境变量以及带有facter --custom-dir
标志的自定义事实目录。虽然我使用单独的前缀环境变量设置顶级变量的成功有限FACTER_
,但我似乎无法为facter os
我从 Debian 或 Ubuntu 主机复制的返回定义的哈希,这是我目前正在尝试的出于我在下面提到的原因。
我当前的事实覆盖看起来像这样:
# ${module_repository?}/.myfacts/os.rb
Facter.add(:os) do
confine :kernal => 'Darwin'
has_weight = 1_000
setcode do
{
architecture => 'amd64',
distro => {
codename => 'focal',
description => 'Ubuntu 20.04.3 LTS',
id => 'Ubuntu',
release => {
full => '20.04',
major => '20.04',
},
},
family => 'Debian',
hardware => 'x86_64',
name => 'Ubuntu',
release => {
full => '20.04',
major => '20.04',
},
selinux => {
enabled => false,
},
}
end
end
不幸的是,facter --custom-dir=".myfacts" facter os
从模块的顶级目录中调用会导致 macOS Monterey 的标准事实(给予或获取顶级因素元素,在不运行覆盖时不会出现在输出中):
facter =>
os => {
architecture => "x86_64",
family => "Darwin",
hardware => "x86_64",
macosx => {
build => "21A559",
product => "macOS",
version => {
full => "12.0.1",
major => "12",
minor => "0",
patch => "1"
}
},
name => "Darwin",
release => {
full => "21.1.0",
major => "21",
minor => "1"
}
}
我的 X/Y 问题中的 X 和 Y
我怎样才能让 facter 将自己报告为 Debian 系列 Ubuntu 系统,以便我可以在我的非 Puppetized Darwin 开发系统上正确测试我的 Hiera v5${module_respository?}/data/os/Debian.yaml
查找PDK console
?