#directory #puppet
#каталог #puppet
Вопрос:
Я пытаюсь написать простой ресурс для копирования содержимого страшной истории из puppet master в puppet agent.
file { "/usr/local/scaligent/" :
ensure => 'directory',
source => "puppet:///modules/toolchain",
recurse => 'true',
#owner => 'root',
#group => 'root',
#mode => '0755',
}
источником является /etc/puppetlabs/code/environments/production/modules/files/toolchain/ в puppet master, а местом назначения является /usr/local/scaligent/ в puppet agent.
получение ошибки ниже в puppet agent:
[~]$ sudo puppet agent -tv --noop
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Applying configuration version '1600365429'
Error: /Stage[main]/Main/File[/usr/local/scaligent/]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:///modules/toolchain
Notice: Applied catalog in 0.04 seconds
[ ~]$
Ответ №1:
Для ссылки на тип ресурса Puppet форма puppet:
URI равна
puppet:///modules/<MODULE NAME>/<FILE PATH>
Это относится к содержимому файла или каталога в модуле, где Puppet будет искать его в files
каталоге этого модуля. Путь к файловой системе будет выглядеть примерно так /etc/puppetlabs/code/environments/production/modules/<MODULE NAME>/files/toolchain
URI, который вы пытаетесь использовать, puppet:///modules/toolchain
, неправильно сформирован, и путь, на который вы пытаетесь сослаться, отсутствует в files/
каталоге какого-либо модуля.
Было бы обычным, хотя и не обязательным, поместить toolchain
каталог «» среди файлов модуля, содержащих объявление ресурса. Но тогда также было бы обычным поместить File
объявление в класс в модуле, чего вы не сделали. Существует примерно ноль обстоятельств, при которых было бы неплохо объявить этот ресурс в верхней области видимости, как, похоже, вы сделали.