puppet - 木偶代理无法识别 r10k 拉取模块
问题描述
请帮我从 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
有人可以告诉我我做错了什么吗?提前致谢!
解决方案
您的类名必须与模块名匹配以遵守自动加载限制。在您的情况下,您已经命名了 module lamp
,并且已经命名了 class apache
。这里更简单的方法是重命名该类,因为根据您的问题,lamp
它在其他任何地方都被引用。lamp
另一个自动加载限制是你的类名必须匹配模块名和清单名。在这种情况下,您的清单名为apache.pp
,这意味着该类必须同时lamp::apache
在定义和声明中。这里更简单的方法是将清单从 重命名为apache.pp
,init.pp
以便类名只需与模块名匹配。
考虑到自动加载的这两个命名空间问题,最容易让您工作的两个步骤是:
apache
将清单中的定义和引用重命名为lamp
(例如class lamp
和include lamp
)。- 将您的
apache.pp
清单重命名为init.pp
.
有关更多信息,您可以查阅有关您正在使用的 Puppet 版本的Puppet 文档。
推荐阅读
- css - 如何使下拉选项与选择元素的样式相同?
- java - ClassNotFoundException 与 javadoc doclet 的自定义 xml 序列化程序
- ms-access - 如何从 MS Access 中的外部网页连接导入数据,如 excel 有 Data-WebPage
- laravel - 具有旧输入和默认值的 Laravel 复选框无法正常工作
- python - 如何使用 Scrapy 获取用于项目中每个请求的代理?
- lua - 在 Lua 中为 ESP8266 发出 HTTPS 请求的问题
- c++ - 如果变量的使用取决于决策者,那么初始化变量是一种好习惯吗
- swift - 当应用程序进入后台时,计时器 swift 3 停止运行
- widget - 在内页上移动小部件区域
- typescript - Promise 的打字稿类型