Puppet 代理无法识别 r10k 拉取的模块
puppet agent not recognizing r10k pulled modules
请帮我配置来自 github 的自定义人偶模块。模块在 master 中正确拉取,但在代理节点上根本无法识别。
人偶文件
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'
}
}
site.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
有人可以告诉我我做错了什么吗?提前致谢!
您的 class 名称必须与模块名称匹配才能遵守自动加载限制。在您的例子中,您已将模块命名为 lamp
,并将模块命名为 class apache
。这里更简单的方法是重命名 class lamp
,因为根据您的问题,它在其他任何地方都被引用为 lamp
。
另一个自动加载限制是您的 class 名称必须与模块名称和清单名称相匹配。在这种情况下,您的清单被命名为 apache.pp
,这意味着 class 在定义和声明中都必须是 lamp::apache
。这里更简单的方法是将清单从 apache.pp
重命名为 init.pp
,这样 class 名称就必须与模块名称匹配。
鉴于您的自动加载存在这两个命名空间问题,最容易让您工作的两个步骤是:
- 将清单中对
apache
的定义和引用重命名为 lamp
(例如 class lamp
和 include lamp
)。
- 将您的
apache.pp
清单重命名为 init.pp
。
有关更多信息,您可以参考 Puppet documentation 您正在使用的 Puppet 版本。
请帮我配置来自 github 的自定义人偶模块。模块在 master 中正确拉取,但在代理节点上根本无法识别。
人偶文件
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'
}
}
site.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
有人可以告诉我我做错了什么吗?提前致谢!
您的 class 名称必须与模块名称匹配才能遵守自动加载限制。在您的例子中,您已将模块命名为 lamp
,并将模块命名为 class apache
。这里更简单的方法是重命名 class lamp
,因为根据您的问题,它在其他任何地方都被引用为 lamp
。
另一个自动加载限制是您的 class 名称必须与模块名称和清单名称相匹配。在这种情况下,您的清单被命名为 apache.pp
,这意味着 class 在定义和声明中都必须是 lamp::apache
。这里更简单的方法是将清单从 apache.pp
重命名为 init.pp
,这样 class 名称就必须与模块名称匹配。
鉴于您的自动加载存在这两个命名空间问题,最容易让您工作的两个步骤是:
- 将清单中对
apache
的定义和引用重命名为lamp
(例如class lamp
和include lamp
)。 - 将您的
apache.pp
清单重命名为init.pp
。
有关更多信息,您可以参考 Puppet documentation 您正在使用的 Puppet 版本。