【问题标题】:Puppet Could not find dependency ClassPuppet 找不到依赖类
【发布时间】:2014-08-04 01:33:11
【问题描述】:

我正在尝试将内容提取到角色和个人资料中,但遇到了问题。我正在使用 puppet 申请所有这些,因为我正在使用它来完成我的 Puppet Master 的设置。如果我在 site.pp 中定义我的节点,如下所示:

[root@puppet puppetdbsetup]# cat manifests/site.pp
node 'puppet' {
  include ::roles::puppetmaster
}

我收到此错误:

[root@puppet puppetdbsetup]# puppet apply manifests/site.pp --environmentpath /etc/puppet/environments --environment puppetdbsetup --noop
Notice: Compiled catalog for puppet.belkin in environment puppetdbsetup in 1.29 seconds
Error: Could not find dependency Class[Puppet::Install] for File[/etc/puppet/hiera.yaml] at /etc/puppet/environments/puppetdbsetup/modules/p
uppet/manifests/master.pp:31

如果我直接使用 puppet apply 运行 puppetmaster.pp(如下所示),它不会引发相同的错误。

[root@puppet puppetdbsetup]# cat modules/roles/manifests/puppetmaster.pp
class roles::puppetmaster {
  #include profiles::base
  include profiles::puppet::master
}

谁能告诉我这是为什么以及如何解决它?附带说明一下,这里引用的所有三个模块都是手写的……没有一个是 Forge 模块。

更新 1 这是我的 puppet::install 类:

[root@puppet puppetdbsetup]# cat modules/puppet/manifests/install.pp
class puppet::install {

  package { 'puppet':
    ensure   => present,
  }
}

【问题讨论】:

    标签: puppet configuration-management


    【解决方案1】:

    在清单的某处,您声明了一个依赖于 Class[Puppet::Install]File[/etc/puppet/hiera.yaml],例如

    file { '/etc/puppet/hiera.yaml': require => Class['puppet::install'] }
    

    差不多

    Class['puppet::install'] -> file { '/etc/puppet/hiera.yaml': ... }
    

    或类似的东西。

    你所缺少的是类的实际声明或者通过

    include puppet::install # nice!
    

    class { 'puppet::install': } # please don't
    

    如有疑问,请在 file 声明附近添加包含行。多次包含一个类通常是安全的。

    【讨论】:

    • 谢谢!我在该清单中有include puppet,但似乎我需要同时包含puppet::installpuppet::service
    【解决方案2】:

    如果你直接应用 puppetmaster.pp,你只是在定义类而不应用它。

    你需要做puppet apply -e 'include ::roles::puppetmaster'才能比较。

    另一个错误可能是modules/puppet/manifests/install.pp不存在,或者文件中的类定义不是以

    开头的
    class puppet::install (
        ....
        ....
    ) {
    

    【讨论】:

    • 运行puppet apply -e 'include ::roles::puppetmaster' --environmentpath /etc/puppet/environments --environment puppetdbsetup --noop 没有抛出任何错误。
    • 我还在上面的原始 q 中添加了我的 puppet::install 类......还有其他想法吗?感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 2017-04-10
    • 2017-10-28
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多