Может ли 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
Так:
- Во-первых, понимаю ли я "новый" (не импортируемый) способ правильного вызова нескольких манифестов, в котором указывается каталог, в котором будут выполняться все файлы *.pp внутри него?
- И во-вторых, "догнал" ли Вагрант это новое изменение, чтобы приспособить ссылки на каталоги в связи с осуждением 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 некоторое время, чтобы наверстать упущенное.