Команда
sudo /opt/puppetlabs/bin/puppet module list --tree --modulepath=/vagrant/puppet -v
Сообщает, что зависимость модуля elk
от puppetlabs-stdlib
не удовлетворена, тогда как вы показываете, что модуль должен быть установлен в /etc/puppetlabs/code/environments/production/modules
. Эти факты не противоречат.
Аргумент --modulepath
для puppet module list
не соответствует ожиданиям. Это может быть более понятным, если принять во внимание определение Puppet термина :
Основная служба и команда puppet применяют загрузку большей части своего содержимого из модулей, найденных в одном илибольше каталогов. Список каталогов, в которых Puppet ищет модули, называется modulepath . Путь к модулю задается средой текущего узла.
Путь к модулю - это упорядоченный список каталогов, причем более ранние каталоги имеют приоритет над более поздними. Используйте символ разделителя системного пути для разделения каталогов в списке модульных путей. В системах * nix используйте двоеточие (:);в Windows используйте точку с запятой (;).
Параметр --modulepath
для вашей команды puppet module list
выражает полный путь к модулю, и, соответственно, в вашей команде он говорит Puppet, что нужно рассматривать только модули в/vagrant/puppet
. Что касается этого modulepath, зависимость stdlib действительно не удовлетворена.
Эта альтернатива должна показывать удовлетворенную зависимость:
sudo /opt/puppetlabs/bin/puppet module list --tree \
--modulepath=/etc/puppetlabs/code/environments/production/modules:/vagrant/puppet -v
То, какое значение имеет какой-либо результат во время выполнения Puppet, зависит отиспользование для построения каталога. Если вы вообще не включите опцию --modulepath
, вы получите результаты, относящиеся к текущей конфигурации Puppet и среде по умолчанию, которые могут или не могут быть более релевантными для вашего фактического сценария использования.