puppet master – 编译将错误logging到stdout

我看到一个关于这个被接受,然后在一年前closures的错误: http ://projects.puppetlabs.com/issues/3670,但我使用puppet 2.7.14,并得到同样的问题。

我试图用“傀儡独奏”(即只运行configuration在每个服务器上的木偶),因为我在这个项目中只有2或3个服务器,并且添加另一台服务器作为傀儡大师是完全矫枉过正的。 除非我误解了,手动将节点应用到服务器的最好方法是:

puppet master --compile=mynode > catalog.json puppet apply --catalog catalog.json 

puppet master命令会输出一些警告和通知给标准输出,混入所需的json内容。 它使用彩色的输出,所以我不能通过egrep -v '^warning:'pipe道egrep -v '^warning:'

编辑:我想这是不是太大的处理使用grep – 因为傀儡2.7漂亮 – 打印的实际内容和警告永远不会以空格开始,通过egrep '^( |{|})'pipe道输出egrep '^( |{|})'作品

所以我的问题基本上是:

  • 如果不使用傀儡大师来应用傀儡节点,有没有比这更好的方法? 如果没有傀儡大师,我真的不能在网上find任何好的参考资料,尽pipe对于一个小项目来说这似乎是一个完全合理的事情。
  • 有没有一个设置或标志,我错过了会让puppet master停止作为一个混蛋,并将其错误发送到stderr而不是标准输出?
  • 或者我真的必须closures颜色logging,然后grep排除警告:并注意:行?

要在无主模式下运行,只需使用puppet apply而不需要单独的puppet master编译步骤。 这是完成它的正常方式,并且可以避免您在目录中使用日志消息时遇到的问题(尽pipe这确实应该被修复,票据仍然打开)。

你需要两个填充path来使用puppet apply

  1. 清单path:Puppet将读取的第一个清单,通常称为site.pp
  2. 模块path:包含标准布局中的一组模块的目录

site.pp清单通常位于/etc/puppet/manifests/site.pp ,可能只是一个类的列表,包括:

include module1::class, module2::class

然后你可以运行puppet apply --modulepath=/foo/modules site.pp ,甚至只需要puppet apply --modulepath=/foo/modules -e "include module1::class"