Puppet:stdlib已安装但在命名空间中不可用?

时间:2014-06-26 12:46:50

标签: namespaces include std puppet

作为木偶新手,我有一个问题,包括stdlib插件

我想使用stdlib的file_line,因此我尝试包含stdlib并将其命名为

class service_mon
{
  include stdlib
  file_line 
  {
    "${name}_services": path=> ...
  }
}

但是,我收到一条错误消息,表示无法找到stdlib

  

错误:无法从远程服务器检索目录:错误400开启   SERVER:找不到my.node.name的类stdlib   /etc/puppet/workspace/dev/src/modules/mymanifest/manifests/deploy.pp:87   在节点my.node.name

这让我很奇怪,因为应该安装stdlib(?)...或?

puppet module install puppetlabs-stdli

puppet module list
/etc/puppet/modules
└── puppetlabs-stdlib (v4.2.2)
/usr/share/puppet/modules (no modules installed)

puppet config print modulepath
/etc/puppet/modules:/usr/share/puppet/modules

所以,我猜原则上所有必要的文件都是'那里'但我怎么能说服Puppet包含stdlib?

1 个答案:

答案 0 :(得分:3)

Puppet模块不像java模块那样工作 - include stdlib只有在模块中确实有一个class stdlib做了一些有用的事情才有意义。事实并非如此。

注意:许多Puppet模块执行都有这样一个类作为中心入口点,但stdlib是一个值得注意的例外。

您可以通过调用它们来使用stdlib中的解析器函数。至于类型,那些只有Puppet可用的

  • 该模块已安装在$modulepath
  • 您的座席已启用pluginsync

您可以毫不费力地使用file_line