web-dev-qa-db-ja.com

環境の本番ソースから情報を取得できませんでした

私は、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

なぜ情報を取得できないのかわかりません。パスは正しいようです。誰かが私が欠けているものを見ることができますか?

11
Chris Schmitz

はい、URLにリテラルfiles/を含めることは想定されていません。代わりに、

puppet:///modules/bash_profile/bash_profile
25
Felix Frank

モジュール名が無効な場合は、_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_という名前を付けると修正されます。 モジュール名のルールは文書化されています ですが、見逃しがちです。

1
Phil Calvin

気になること

  1. PuppetURI形式puppet:///modules/name_of_module/filename
  2. モジュールディレクトリに存在するファイルサーバーディレクトリ

この ビデオ はエラーを解決するためのステップバイステップガイドを示しています

0
anish