Может ли Vagrant указывать на каталог манифестов Puppet для исполнения?

Я использую Vagrant, чтобы запустить начальную конфигурацию Puppet, и меня смущает, как включить / запустить несколько манифестов (кроме site.pp) в рабочий процесс исполнения Puppet, не добавляя дополнительные манифесты в модули и не включая их таким образом.

В каталоге манифестов puppet, на который я указываю Vagrant (см. Ниже), у меня есть два манифеста, которые я хочу выполнить: site.pp и hierasetup.pp.

config.vm.provision "puppet" do |puppet|
  puppet.manifests_path = "puppet_files/manifests"
  puppet.module_path    = "puppet_files/modules"
  puppet.manifest_file  = "site.pp"
  puppet.options = "--verbose --debug"
end 

В настоящее время у меня site.pp быть манифестом, который вызывает hierasetup.pp. Мой site.pp выглядит так:

File {
  owner => 'root',
  group => 'root',
  mode  => '0644',
}

import "hierasetup.pp"

include jboss

Но я получаю эту ошибку об устаревании "импорта":

Предупреждение: использование 'import' не рекомендуется в /tmp/vagrant-puppet-1/manifests/site.pp:33. См. Http://links.puppetlabs.com/puppet-import-deprecation (на сайте грамматики:610: в `_reduce_190')

В соответствии с указанным URL-адресом в разделе "Что нужно попробовать вместо этого" написано " Чтобы сохранить определения узлов в отдельных файлах, укажите каталог в качестве основного манифеста ".

Далее этот кукольный документ по основным манифестам гласит:

" Рекомендуется: если вы интенсивно используете основной манифест вместо того, чтобы полагаться на ENC, рассмотрите возможность изменения параметра манифеста на $confdir/manifest. Это позволяет разделить код верхнего уровня на несколько файлов, избегая при этом ключевого слова импорта. также будет соответствовать поведению простых сред ".

Похоже, что Puppet может ссылаться на весь каталог, а не только на конкретный файл манифеста, так что я ожидаю, что Vagrant сделает для этого условие и позволит мне убрать строку " puppet.manifest_file =" site.pp "и указать на вместо этого родительский каталог, в котором будут выполняться все файлы *.pp. Однако удаление этой строки в Vagrant просто вызывает жалобу на ожидаемый файл "default.pp" вместо него:

поставщик марионеток: * Отсутствует настроенный манифест Puppet. Пожалуйста, укажите путь к существующему манифесту: /some/path/puppet_files/manifests/default.pp

Так:

  1. Во-первых, понимаю ли я "новый" (не импортируемый) способ правильного вызова нескольких манифестов, в котором указывается каталог, в котором будут выполняться все файлы *.pp внутри него?
  2. И во-вторых, "догнал" ли Вагрант это новое изменение, чтобы приспособить ссылки на каталоги в связи с осуждением Puppet "import"?

Обновление: благодаря Шейну проблема с #2 (код Vagrant не перехватывается, чтобы позволить указывать на каталоги манифестов марионеток) была обнаружена на сайте системы отслеживания проблем GitHub Vagrant и с тех пор была исправлена: https://github.com/mitchellh/vagrant/issues/4169

1 ответ

Решение

Во-первых, понимаю ли я "новый" (не импортируемый) способ правильного вызова нескольких манифестов, в котором указывается каталог, в котором будут выполняться все файлы *.pp внутри него?

Да, вы делаете. Смотрите здесь:

Если вы интенсивно используете основной манифест вместо того, чтобы полагаться на ENC, рассмотрите возможность изменения параметра манифеста на $confdir/manifest. Это позволяет разделить код верхнего уровня на несколько файлов, избегая при этом ключевого слова импорта.

Более того, manifest а также modulepath также устарели в пользу сред каталогов и манифестного поведения каталогов, см. здесь:

Теперь, когда среды каталогов завершены, среды конфигурационных файлов устарели. Определение блоков среды в puppet.conf вызовет предупреждение об устаревании, как и любое использование параметров modulepath, manifest и config_version в puppet.conf.

Это довольно большое изменение для многих развертываний, но в долгосрочной перспективе оно должно стать хорошим улучшением.


И во-вторых, "догнал" ли Вагрант это новое изменение, чтобы приспособить ссылки на каталоги в связи с осуждением Puppet "import"?

Нет, это не имеет; из их документов:

manifest_file (string) - имя файла манифеста, который будет служить точкой входа для запуска Puppet. Предполагается, что этот файл манифеста существует в настроенном пути

Для использования с Vagrant вы на данный момент застряли с предупреждениями об устаревании, что не очень хорошо. Но импорт не планируется удалить до 4.x, так что это дает Vagrant некоторое время, чтобы наверстать упущенное.

Другие вопросы по тегам