Чувствую себя полным новичком в марионетке (признаю, я очень заржавел :-)
Итак, мой файл manifest / site.pp содержит.
file {"/tmp/findme.txt":
source => "puppet:///modules/concat/concatfragments.rb"
}
file { "/etc/pupppetlabs/code/":
path => "/etc/puppetlabs/code/",
source => "puppet:///modules/puppetEnv/code/",
recurse => true
}
Первая копия файла работает нормально. Я нахожу файл в /tmp/findme.txt, но вторая копия файла (фактически копия каталога) не работает. Получается и ошибка
==> puppetmaster: Error: /Stage[main]/Main/Node[puppetmaster]/File[/etc/pupppetlabs/code/]: Could not evaluate: Could not retrieve information from environment bootmaster source(s) puppet:///modules/puppetEnv/code
Другая информация.
из моего Vagrantfile
pm.vm.provision "puppet" do |puppet|
# puppet.options = "--verbose --debug"
puppet.environment_path = "code/environments"
puppet.environment = "bootmaster"
end
Глядя на полученный каталог / tmp / vagrant-puppet на виртуальной машине (куда vagrant помещает файлы марионеток), все выглядит нормально.
[vagrant@puppetmaster vagrant-puppet]$ tree -d
.
├── environments
│ ├── bootmaster
│ │ ├── manifests
│ │ └── modules
│ │ ├── baseconfig
│ │ │ └── manifests
│ │ ├── concat
│ │ │ ├── files
│ │ │ ├── lib
. . .
│ │ ├── puppetEnv
│ │ │ ├── files
│ │ │ │ └── code
│ │ │ │ └── environments
│ │ │ │ └── test
│ │ │ │ ├── manifests
│ │ │ │ └── modules
Ваша проблема выглядит как завершающая косая черта на вашем пути.
Вам также не нужно указывать path
поскольку он унаследован от имени ресурса, и всегда лучше явно ensure
что это каталог для удобочитаемости кода.
Пример:
file { '/etc/pupppetlabs/code':
ensure => directory,
source => 'puppet:///modules/puppetEnv/code',
recurse => true,
}