0

环境

我目前在带有 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 查找,并尝试按事实覆盖开发框中返回的kernelos和事实。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

4

0 回答 0