Не удалось получить информацию из источника

Я использую марионетку в качестве моего ассистента в одном из моих бродячих проектов. Я пытаюсь добавить модуль для пользовательского файла bash_profile.

Для кукольного тега module_path установлено значение:

 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

Когда я запускаю инициализацию для бродяг, я получаю сообщение об ошибке

err:/Stage [main]/Bash_profile/File [/home/vagrant/bash_profile]: не удалось оценить: не удалось получить информацию из источника (ов) среды производства puppet:///modules/bash_profile/files/bash_profile на /tmp/vagrant -puppet-1/modules-0/bash_profile/manifests/init.pp:8

Я не уверен, почему он не может получить информацию. Путь кажется правильным. Кто-нибудь может видеть, что мне не хватает?

Ответ 1

Да, вы не должны включать литерал files/ в URL. Вместо этого он должен быть

puppet:///modules/bash_profile/bash_profile

Ответ 2

Вы также можете получить эту ошибку с помощью 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 исправляет его. Правила для имен модулей документированы, но их легко пропустить.

Ответ 3

Что нужно заботиться о

  • Формат URI Puppet puppet:///modules/name_of_module/filename
  • Каталог файлового сервера, который будет присутствовать в каталоге модуля

Этот видео показывает пошаговое руководство для устранения ошибки