1

请帮我从 github 配置自定义 puppet 模块。模块在主节点中被正确拉出,但在代理节点上根本没有被识别。

木偶文件

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

环境.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'
  }

}

网站.pp

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

有人可以告诉我我做错了什么吗?提前致谢!

4

1 回答 1

0

您的类名必须与模块名匹配以遵守自动加载限制。在您的情况下,您已经命名了 module lamp,并且已经命名了 class apache。这里更简单的方法是重命名该类,因为根据您的问题,lamp它在其他任何地方都被引用。lamp

另一个自动加载限制是你的类名必​​须匹配模块名和清单名。在这种情况下,您的清单名为apache.pp,这意味着该类必须同时lamp::apache在定义和声明中。这里更简单的方法是将清单从 重命名为apache.ppinit.pp以便类名只需与模块名匹配。

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

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

有关更多信息,您可以查阅有关您正在使用的 Puppet 版本的Puppet 文档

于 2019-02-05T12:11:09.327 回答