Модуль Puppet не работает на агентах, в то время как это было определено в Hiera на Puppetmaster
Как только я установлю Puppet, Foreman, Hiera и Facter, как мне заставить их всех работать друг с другом?
Графический интерфейс Foreman работает правильно и может быть просмотрен с помощью браузера. 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
был изменен - Формат файлов hiera важен, то есть два пробела вместо нуля и
---
common.yaml
---
classes:
- motd
вместо
classes:
- motd
- Если Puppet Environments включены, каталог данных должен быть настроен следующим образом:
/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", [])
достаточно