Может ли 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

Ответы:


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.