私は、vagrantプロジェクトの1つで、プロビジョナーとして人形を使用しています。カスタムbash_profileのモジュールを追加しようとしています。
module_path
forpuppetは次のように設定されます。
puppet.module_path = "puppet/modules"
私のbash_profileモジュールのクラスは次のようになります。
class bash_profile
{
file
{
"/home/vagrant/bash_profile":
ensure => present,
source => "puppet:///modules/bash_profile/files/bash_profile"
}
}
これが私のパペット構造のファイル構造です:
puppet
| manifests
| | phpbase.pp // my main manifest file that has includes for modules
| modules
| | bash_profile
| | | files
| | | | bash_profile // the actual bash_profile file I want to ensure is present on my VM
| | | manifests
| | | | init.pp // the init file included for the bash_profile class
Vagrantのプロビジョニングを実行すると、エラーが発生します
エラー:/ Stage [main]/Bash_profile/File [/ home/vagrant/bash_profile]:評価できませんでした:/ tmpの環境本番ソースpuppet:/// modules/bash_profile/files/bash_profileから情報を取得できませんでした/vagrant-puppet-1/modules-0/bash_profile/manifests/init.pp:8
なぜ情報を取得できないのかわかりません。パスは正しいようです。誰かが私が欠けているものを見ることができますか?
はい、URLにリテラルfiles/
を含めることは想定されていません。代わりに、
puppet:///modules/bash_profile/bash_profile
モジュール名が無効な場合は、_recurse => true
_でこのエラーが発生することもあります。たとえば、このモジュール構造がある場合:
_modules ├── my-example │ └── files │ └── example │ └── test.txt
_
およびこのリソース:
_file { "/tmp/example":
ensure => directory,
recurse => true,
source => "puppet:///modules/my-example/example",
}
_
このエラーが発生します:
==> default: Info: Could not find filesystem info for file 'my-example/example' in environment production ==> default: Error: /Stage[main]/Main/Node[default]/File[/tmp/example]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:///my-example/example
修正は、モジュールの名前を変更することです。たとえば、モジュールに_my_example
_という名前を付けると修正されます。 モジュール名のルールは文書化されています ですが、見逃しがちです。
気になること
puppet:///modules/name_of_module/filename
この ビデオ はエラーを解決するためのステップバイステップガイドを示しています