Puppet 傀儡代理无法识别r10k拉入模块

Puppet 傀儡代理无法识别r10k拉入模块,puppet,r10k,Puppet,R10k,请帮助我从github配置自定义木偶模块。模块在主节点中被正确拉入,但在代理节点上根本无法识别 木偶文件 mod "puppet-lamp", :git => "https://github.com/blablabla/puppet_lamp.git", :ref => "659fe4056060426d3a1449sdfgbc290571f5714f" environment.conf modulepath = modules:$basemodulepath r

请帮助我从github配置自定义木偶模块。模块在主节点中被正确拉入,但在代理节点上根本无法识别

木偶文件

mod "puppet-lamp",
    :git => "https://github.com/blablabla/puppet_lamp.git",
    :ref => "659fe4056060426d3a1449sdfgbc290571f5714f"
environment.conf

modulepath = modules:$basemodulepath
r10k从github正确拉出模块

.
└── production
    ├── environment.conf
    ├── modules
    │   └── lamp
    │       └── manifests
    │           ├── apache.pp
    │           └── test.pp
    └── Puppetfile

4 directories, 4 files
apache.pp

class apache {

  package { 'httpd':
    ensure => installed,
  }

  service { 'httpd':
    enable => true,
    ensure => 'running'
  }

}
include apache
site.pp

class apache {

  package { 'httpd':
    ensure => installed,
  }

  service { 'httpd':
    enable => true,
    ensure => 'running'
  }

}
include apache
但是当我运行代理时,没有任何应用程序

Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Applying configuration version '1549348460'
Notice: Applied catalog in 0.01 seconds
尝试使用节点定义,没有更改

node 'default' {
  include 'apache'
}
在这里使用最新的木偶

[root@puppetmaster environments]# puppetserver --version
puppetserver version: 6.2.0

[root@node01 ~]# puppet -V
6.2.0

有人能告诉我我做错了什么吗?提前谢谢

类名必须与模块名匹配才能遵守自动加载限制。在本例中,您将模块命名为
lamp
,并将类命名为
apache
。这里更简单的方法是重命名类
lamp
,因为根据您的问题,它在其他任何地方都被引用为
lamp

另一个自动加载限制是类名必须与模块名和清单名匹配。在本例中,您的清单名为
apache.pp
,这意味着该类在定义和声明中都必须是
lamp::apache
。这里更简单的方法是将清单从
apache.pp
重命名为
init.pp
,这样类名只需与模块名匹配即可

考虑到自动加载中的这两个名称空间问题,最容易让您工作的两个步骤是:

  • 将清单中对
    apache
    的定义和引用重命名为
    lamp
    (例如
    class-lamp
    include-lamp
  • 将您的
    apache.pp
    清单重命名为
    init.pp

有关更多信息,您可以咨询以获取正在使用的Puppet版本。

您的类名必须与模块名匹配才能遵守自动加载限制。在本例中,您将模块命名为
lamp
,并将类命名为
apache
。这里更简单的方法是重命名类
lamp
,因为根据您的问题,它在其他任何地方都被引用为
lamp

另一个自动加载限制是类名必须与模块名和清单名匹配。在本例中,您的清单名为
apache.pp
,这意味着该类在定义和声明中都必须是
lamp::apache
。这里更简单的方法是将清单从
apache.pp
重命名为
init.pp
,这样类名只需与模块名匹配即可

考虑到自动加载中的这两个名称空间问题,最容易让您工作的两个步骤是:

  • 将清单中对
    apache
    的定义和引用重命名为
    lamp
    (例如
    class-lamp
    include-lamp
  • 将您的
    apache.pp
    清单重命名为
    init.pp

有关更多信息,您可以咨询正在使用的Puppet版本。

非常感谢您的详细解释。我现在明白了。删除了init.pp,将apache.pp重命名为init.pp,类名与模块名相同。工作起来很有魅力:-)而且文档链接也很有帮助。非常感谢你解释清楚。我现在明白了。删除了init.pp,将apache.pp重命名为init.pp,类名与模块名相同。工作起来很有魅力:-)文档链接也很有用。