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

9

Я использую 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 (в grammar.ra: 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 / вопросы / 4169

SeligkeitIstInGott
источник

Ответы:

6

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

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

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

Кроме того, manifestи modulepathтакже получает осуждается в пользу окружающей среды каталогов и манифест поведения каталогов см здесь :

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

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


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

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

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

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

Шейн Мэдден
источник
Что ж, приятно осознавать, что я не схожу с ума, потому что я пытался выяснить, в чем заключалась сделка уже более часа. Знают ли разработчики Vagrant о необходимости этой функции или нет места, где можно было бы предложить такие дополнения?
SeligkeitIstInGott
Похоже, об этом еще не спрашивали - смотрите здесь . Оставьте вопрос там, чтобы лучше согласовать его с современной марионеткой (или я сделаю это, если у вас нет аккаунта на github)!
Шейн Мэдден
Я думаю, что все мои коллеги по разработке имеют учетные записи на github, но если у меня есть учетная запись, я даже не знаю, каким будет мой логин. Мне он не нужен, потому что я ЭТО, а не кодер. Вы не против сделать это?
SeligkeitIstInGott
1
@SeligkeitIstInGott Конечно, я получу кое-что поданное!
Шейн Мэдден
2
@SeligkeitIstInGott Готово - github.com/mitchellh/vagrant/issues/4039
Шейн Мэдден