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

puppet master - компилировать журналы ошибок в стандартный вывод

Я вижу ошибку по этому поводу, которая была принята, а затем закрыта год назад: http://projects.puppetlabs.com/issues/3670 но я использую марионетку 2.7.14, и у меня такая же проблема.

Я пытаюсь использовать «соло марионетки» (т.е. просто запуск марионеточного приложения на каждом сервере, который нужно настроить), поскольку в этом проекте у меня всего 2 или 3 сервера, и добавление еще одного сервера в качестве марионеточного мастера было бы совершенно излишним. Если я не ошибаюсь, лучший способ вручную применить узел к серверу - это сделать:

puppet master --compile=mynode > catalog.json
puppet apply --catalog catalog.json

Но puppet master Команда выводит на стандартный вывод несколько предупреждений и уведомлений, смешанных с желаемым содержимым json. И он использует цветной вывод, поэтому я не могу просто пропустить его через egrep -v '^warning:'

РЕДАКТИРОВАТЬ: Я думаю, что использовать grep не так уж сложно - поскольку puppet 2.7 красиво печатает фактический контент, а предупреждения никогда не начинаются с пробелов, передавая вывод через egrep '^( |{|})' работает

Итак, мои вопросы в основном таковы:

Чтобы запустить марионеточный режим без хозяина, вы можете просто использовать puppet apply без необходимости отдельного puppet master этап компиляции. Это нормальный способ, позволяющий избежать проблем с сообщениями журнала в каталогах (хотя это действительно должно быть исправлено, билет все еще открыт).

Для использования вам нужны два заполненных пути puppet apply:

  1. Путь к манифесту: первый манифест, который будет читать Puppet, обычно называется site.pp.
  2. Путь к модулям: каталоги, содержащие набор модулей в стандартная планировка

Манифест site.pp часто находится по адресу /etc/puppet/manifests/site.pp и, вероятно, должен быть просто список классов, включающих:

include module1::class, module2::class

Затем вы можете запустить puppet apply --modulepath=/foo/modules site.pp или даже просто puppet apply --modulepath=/foo/modules -e "include module1::class".