модуль stdlib не обнаружен - PullRequest
       39

модуль stdlib не обнаружен

0 голосов
/ 06 ноября 2019

У меня есть модуль, который, как сообщается, требуется puppetlabs-stdlib.

[vagrant@learn puppet]$ sudo /opt/puppetlabs/bin/puppet module list --tree --modulepath=/vagrant/puppet -v
Warning: Missing dependency 'puppetlabs-stdlib':
  'elk' (v0.1.0) requires 'puppetlabs-stdlib' (>= 1.0.0)
/vagrant/puppet
└─┬ elk (v0.1.0)
  └── UNMET DEPENDENCY puppetlabs-stdlib (>= 1.0.0)

Я установил модуль следующим образом:

[vagrant@learn puppet]$ sudo /opt/puppetlabs/bin/puppet module install puppetlabs-stdlib
Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ...
Notice: Downloading from https://forgeapi.puppet.com ...
Notice: Installing -- do not interrupt ...
/etc/puppetlabs/code/environments/production/modules
└── puppetlabs-stdlib (v6.1.0)

Однако отсутствующая зависимость до сих пор не устранена. Как я могу заставить Puppet увидеть установленную мной библиотеку?

Ответы [ 2 ]

1 голос
/ 11 ноября 2019

Вы не ссылаетесь на один и тот же путь модуля.

В первом случае вы перечисляете модули из /vagrant/puppet в соответствии с оператором --modulepath.

При установке вы сделалине указывайте путь к модулю, как указано в стандарте установки: Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules

Так что вам нужно либо указать установку stdlib по тому же пути: puppet module --modulepath=/vagrant/puppet install puppetlabs-stdlib, либо обновить путь модуля клиента для запускапо умолчанию /etc/puppetlabs/code/environments/production/modules

1 голос
/ 09 ноября 2019

Команда

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 и среде по умолчанию, которые могут или не могут быть более релевантными для вашего фактического сценария использования.

...