Назад | Перейти на главную страницу

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

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

В каталоге манифестов марионеток, на который я указываю 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 / manifestests. Это позволяет разделить код верхнего уровня на несколько файлов, избегая использования ключевого слова import. Он также будет соответствовать поведению простых сред."

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

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

Так:

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

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

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

Да, конечно. Видеть Вот:

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

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

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

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


А во-вторых, «догнал» ли Vagrant это новое изменение, чтобы приспособить ссылки на каталоги в сочетании с отказом Puppet от «импорта»?

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

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

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