Я вижу ошибку по этому поводу, которая была принята, а затем закрыта год назад: 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 master
перестать быть засранцем и отправлять свои ошибки на stderr вместо stdout?Чтобы запустить марионеточный режим без хозяина, вы можете просто использовать puppet apply
без необходимости отдельного puppet master
этап компиляции. Это нормальный способ, позволяющий избежать проблем с сообщениями журнала в каталогах (хотя это действительно должно быть исправлено, билет все еще открыт).
Для использования вам нужны два заполненных пути puppet apply
:
Манифест 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"
.