Puppet 模块未在代理上运行,而这已在 Puppetmaster 上的 Hiera 中定义

Puppet 模块未在代理上运行,而这已在 Puppetmaster 上的 Hiera 中定义

安装 Puppet、Foreman、Hiera 和 Facter 后,如何让它们相互协作?

Foreman GUI 运行正常,可以使用浏览器查看。Hiera 已安装,根据我在网上阅读的指南,它似乎配置正确,Facter 也运行正常,但代理未从 Puppet 服务器获取模块。

我添加了一个非常简单的 MOTD 模块并将其配置为在 中运行common.yaml。但该模块未安装在代理机器上,并且没有显示任何错误。

puppet agent -t在服务器和客户端上运行有效:

[root@puppet production]# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for puppet.nj.peer39.com
Info: Applying configuration version '1425802774'
Notice: Finished catalog run in 0.05 seconds
[root@puppet production]#

hiera.yaml看起来像这样:

[root@puppet production]# cat /etc/puppet/hiera.yaml
:backends:
  - yaml
:yaml:
  :datadir: '/etc/puppet/hieradata/%{::environment}'
:hierarchy:
  - fqdns/%{::fqdn}
  - roles/%{::role}
  - domains/%{::domain}
  - common

environment.conf看起来像这样:

[root@puppet production]# pwd
/etc/puppet/environments/production
[root@puppet production]# cat environment.conf
modulepath  = modules
manifest = /etc/puppet/environments/production/manifests/
[root@puppet production]#

我也尝试通过文件加载模块fqdn.yaml但无济于事,也没有显示任何错误。

/etc/puppet/puppet.conf看起来像这样:

[master]
    autosign       = $confdir/autosign.conf { mode = 664 }
    reports        = foreman
    external_nodes = /etc/puppet/node.rb
    node_terminus  = exec
    ca             = true
    ssldir         = /var/lib/puppet/ssl
    certname       = puppet.company.com
    strict_variables = false
    environmentpath = $confdir/environments

编辑#1:

我的common.yaml样子是这样的:

classes:
- motd

当我说fqdn.yaml我的意思是:

[root@puppet fqdns]# pwd
/etc/puppet/hieradata/production/fqdns
[root@puppet fqdns]# ll
total 8
-rw-r--r-- 1 root root 23 Mar 11 09:26 pnd01.company.yaml
-rw-r--r-- 1 root root 17 Mar 12 08:24 puppet.company.com.yaml
[root@puppet fqdns]#

这是我的site.pp,其位于/etc/puppet/environments/production/manifests

[root@puppet manifests]# cat site.pp
hiera_include("classes", [])
Package {  allow_virtual => false, }

node default {
}

答案1

  1. hiera.yaml如果已更改,则需要重新启动 Puppetmaster
  2. hiera 文件的格式很重要,即两个空格而不是空值和---

通用.yaml

---
classes:
  - motd

代替

classes:
- motd
  1. 如果启用了 Puppet 环境,则应按如下方式配置 datadir:

/etc/puppet/hiera.yaml

:yaml:
  :datadir: "/etc/puppet/environments/%{::environment}/hieradata"

每个环境都应包含一个 hieradata 目录,并且应包含 common.yaml。如果没有使用环境,hiera.yaml 如下所示:

:yaml:
  :datadir: "/etc/puppet/hieradata"

将 common.yaml 移动到此目录并重新启动 puppetmaster

  1. hiera_include('classes')site.pp而不是中定义hiera_include("classes", [])就足够了

相关内容