Puppet : 如何执行单个 class?

Puppet : How to execute a single class?

我在主 -> 代理模型中使用 Puppet。我的清单存储在 master 上,作为快速测试,我在代理上执行 puppet agent -t 以触发 Puppet 运行。

随着时间的推移,我的清单变得非常大,我正在寻找只执行单个 class say mycompany.someclass.class

的能力

我尝试了一些基于 google 搜索的变体,但 none 奏效了

puppet agent --tags mycompany.someclass.class
puppet agent --tags "mycompany.someclass.class"

puppet agent --tags Mycompany.Someclass.Class
puppet agent -t --tags "Mycompany.Someclass.Class"

puppet agent -t --tags Mycompany.Someclass.Class
puppet agent --tags Mycompany.Someclass.Class

puppet apply --tags mycompany.someclass.class
puppet apply --tags Mycompany.Someclass.Class

您可以使用 --tags 参数执行资源子集,就像您在问题中提到的那样。但是,您首先必须在要为该标签执行的资源中设置关联标签。如果你只想执行一个 class,那么你可以为那个 class 设置一个标签,并将该标签指定为 --tags 的参数以只执行那个 class.

https://docs.puppet.com/puppet/4.10/lang_tags.html

在这种情况下,标记函数对您来说会比元参数有用得多。

https://docs.puppet.com/puppet/4.10/lang_tags.html#the-tag-function

# You can use the tag function inside a class definition or defined type to assign tags to the surrounding container and all of the resources it contains
class myClass {
  tag 'mytag'
  ...
}

然后您只能执行 myClass:

# execute agent with tags
puppet agent -t --tags mytag

https://docs.puppet.com/puppet/4.10/lang_tags.html#restricting-catalog-runs

如果您不想标记所有资源,您也可以 运行 使用 class 名称作为标记的代理。

外行注意事项:这不是一张逃脱卡.