Не удалось оценить: не удалось получить информацию из производственного источника (ов) среды puppet: /// modules / toolchain

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