如何将 ENV 参数传递给 puppet apply 运行?

Howto pass ENC parameters to a puppet apply run?

为了测试我的人偶模块,我通常只在虚拟机上使用 puppet apply。在该测试场景中,没有可用的 Puppet Master 或 ENC。

我的很多模块都使用参数。那么如何在不需要硬编码的情况下使用不同的参数测试模块呢?

您需要像在清单中一样包含带有参数的 class,例如

class { 'foo':
  param1 => 'value',
}

puppet apply 可以在文件中或标准输入中将清单作为 -e 的参数,因此您可以 运行:

puppet apply -e "class { 'foo': param1 => 'value', param2 => 'value2' }"

或将class { 'foo': ... }放入test.pp和运行puppet apply test.pp.

或者最后,运行 puppet apply, type/paste 将 class { 'foo': ... } 内容输入标准输入并按 Ctrl+D 结束输入并 运行 它.

假设您至少使用 Puppet 3,最简单的做法可能是在测试环境中设置 Hiera 并依靠自动数据绑定为 class 参数赋值。事实上,这 也是 将数据绑定到 master 上的 class 参数的最佳想法,并且在您的测试环境中使用相同的方法将使您有机会测试数据和一起显现。