具有子模块的人偶运行阶段

时间:2019-08-20 18:48:41

标签: puppet

我正在学习Puppet,并参加了“ Puppet入门”课程,但是该课程没有涵盖Run Stages,并且有关Run Stages的文档很薄。

我需要确保在Puppet做其他任何事情之前先发生两件事。 “ Puppet入门”课程的讲师建议我看一下Run Stages。

在我对运行阶段的调查中,我了解到puppetlabs-stdlib类设置了一些“标准”运行阶段。其中之一是“设置”。如下面的代码片段所示,我已经按照https://puppet.com/docs/puppet/5.5/lang_run_stages.html实现了stage => 'setup'。但是,我从Puppet中收到错误消息:

root@server:~# puppet agent -t
Info: Using configured environment 'dev_branch'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: 
Server Error: Evaluation Error: Error while evaluating a Resource Statement, Could not find stage setup specified by 
Class[Vpn::Roles::Vpn::Client] (file: 

/etc/puppetlabs/code/environments/wal_prod1910_dev/modules/bh/manifests/roles/snaplocker.pp,行:5,列:3)在节点服务器上     警告:在失败的目录上不使用缓存     错误:无法检索目录。跳过运行

查看错误消息和Puppet文档,我在各种字符串值周围添加了引号,并用正确的->替换了初始的=>,但仍然遇到相同的错误。

class bh::roles::snaplocker()
{
  # stage => setup takes advantage of the setup run stage introduced by
  #  puppetlabs-stdlib which is pulled in by puppet-control-bh/Puppetfile
  class { 'vpn::roles::vpn::client': stage => 'setup' }

  class { 'bh::profiles::move_archives': stage => 'setup' }

  #...
}

更仔细地查看错误消息,我相信原因是puppetlabs-stdlibPuppetfile在调用我正在处理的模块的类中引入的ID。我一直在努力避免尝试在我正在研究的课程中加入puppetlabs-stdlib以避免重复。但是显然我需要它。我正在使用的模块没有Puppetfile,我需要在子模块中以某种方式包含puppetlabs-stdlib吗?如果是这样,我该怎么做?如果没有,如何告诉子模块使用在父模块的Puppetfile中声明的实例?

1 个答案:

答案 0 :(得分:2)

通常,如果您具有正确的类/资源依赖项,则不需要stage

来自"Run stages" documentation

  

警告:由于这些限制,请仅在绝对必要时使用具有最简单类的阶段。一个有效的用例是像软件包存储库这样的大量依赖项。

在您的情况下,如果您确实想要阶段,则应添加include stdlib::stages 1或明确添加阶段,例如stage { 'setup': }