安装 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
hiera.yaml
如果已更改,则需要重新启动 Puppetmaster- hiera 文件的格式很重要,即两个空格而不是空值和
---
通用.yaml
---
classes:
- motd
代替
classes:
- motd
- 如果启用了 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
hiera_include('classes')
在site.pp
而不是中定义hiera_include("classes", [])
就足够了