maehachi08 Anything Blog

2013年01月27日
err: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve information from environment production source(s)

puppet-serverを構築した際にpuppet-modulesやfact関数をpuppet clientに同期するための設定『pluginsync = true』を設定した場合、以下のエラーが出る場合があります。

err: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve information from environment production source(s) puppet://pachi.localhost/plugins

このエラーは『pluginsync = true』としたにも関わらず、modulepath変数に設定されたディレクトリパス以下にpuppet moduleが1つも存在しないことが原因です。

Plugins in Modulesを参照すると、puppet version 0.25以上のバージョンではモジュールのディレクトリ構成は以下のように行う必要があります。

{modulepath}
      └── {module}
                |── lib
                |      └── augeas
                |              └── lenses
                |
                |── facter
                |── puppet
                |       └── parser
                |               └── functions
                |── provider
                |       ├── exec
                |       ├── package
                |       └── etc... (any resource type)
                └── type

modulepathはpuppet.confで指定したパス、その下にpuppet moduleのディレクトリが並びます。

# puppet master --genconfig | grep modulepath
    modulepath = /var/lib/puppet/data/modules:/var/lib/puppet/modules

# cd /var/lib/puppet/data/modules

# git clone git@github.com:puppet-modules/puppet-munin.git

# ls -l /var/lib/puppet/data/modules/
合計 4
drwxr-xr-x 7 root root 4096 10月 25 21:13 2012 puppet-munin

これでエラーは出なくなりました。