如何将某些节点设置为暂停/保持/noop?

c33*_*33s 5 puppet

在 puppetmaster 端,是否可以选择将节点设置为挂起(将其设置为 noop)?我正在寻找类似于下面示例中的设置。在定义中将名为 noop 的变量设置为 true 的每个节点都不会更新。

因此,在多个 puppet 客户端运行后,example1.node.com 将没有 test1 文件,但 example2.node.com 将拥有该文件。

有这样的选择吗?是否存在另一种方法?(当然我可以简单地在节点名称中添加一个“_”,它会停止匹配。我正在寻找官方方法。

node "example1.node.com"
{
    $noop = true
    file 
    {
        "/root/test1":
            content => "test",
            ensure => present,
    }
}

node "example2.node.com"
{
    file 
    {
        "/root/test1":
            content => "test",
            ensure => present,
    }
}
Run Code Online (Sandbox Code Playgroud)

c33*_*33s 0

我还没有找到在节点定义中设置 noop 的方法,以便我可以看到客户端上的更改(例如客户端代理使用 --noop 运行),但对我来说禁用节点的更快方法是:

在节点名称前面添加下划线,这样_example1.node.commake 将阻止节点与 fqdn 匹配,因此如果存在则将应用默认配置(请参阅@GargantuChet 的评论)

node "_example1.node.com"
{
    file 
    {
        "/root/test1":
            content => "test",
            ensure => present,
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这*不*启用代理的 noop 模式;它阻止 Puppet *服务器* 找到任何适用于该节点的策略(至少基于节点名称)。结果将是代理运行失败,或者服务器使用默认节点配置(如果存在)来构建目录。这些都不一定是问题,但作为学习 Puppet 的人,我花了一些时间才注意到其中的含义。 (2认同)