web-dev-qa-db-ja.com

PuppetmasterのHieraで定義されている間、Puppetモジュールはエージェントで実行されません

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
Itai Ganot
  1. _hiera.yaml_が変更された場合は、Puppetmasterを再起動する必要があります
  2. Hieraファイルの形式は重要です。つまり、nullと_---_の代わりに2つのスペースが必要です。

common.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", [])を定義するだけで十分です
2
030