Ответ 1
Да, вы не должны включать литерал files/
в URL. Вместо этого он должен быть
puppet:///modules/bash_profile/bash_profile
Я использую марионетку в качестве моего ассистента в одном из моих бродячих проектов. Я пытаюсь добавить модуль для пользовательского файла 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
Я не уверен, почему он не может получить информацию. Путь кажется правильным. Кто-нибудь может видеть, что мне не хватает?
Да, вы не должны включать литерал files/
в URL. Вместо этого он должен быть
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
Этот видео показывает пошаговое руководство для устранения ошибки