Я использую Puppet Dashboard в качестве своего ENC, и я не уверен, как ссылаться или использовать классификации классов и групп из /etc/puppet/manifests/site.pp
.
У меня на панели управления определены две группы: CentOS6
и SLES11
. Как должен выглядеть мой site.pp, если я хочу включить определенный список модулей в CentOS6
группу и определенный список модулей в SLES11
группа?
Я пытаюсь сделать что-то вроде этого:
# /etc/puppet/manifests/site.pp
node basenode {
include hosts
include ssh::server
include ssh::client
include authentication
include sudo
include syslog
include mail
}
node 'CentOS6' inherits basenode {
include profile
}
node 'SLES11' inherits basenode {
include usrmounts
}
У меня есть операторы case в моих модулях, но есть некоторые модули, которые будут применяться только к определенному дистрибутиву. Полагаю, у меня есть два вопроса:
Спасибо всем.
Хорошо, я вижу, как это работает. Puppet Dashboard заменяет site.pp
, если вы настроили дашборд как свой Классификатор внешних узлов (ENC). Что ж, это не совсем так, поскольку вы можете использовать оба:
ENC могут сосуществовать со стандартными определениями узлов в site.pp, а классы, объявленные в каждом источнике, эффективно объединяются.
Как я понял, дашборд Классы = имена ваших марионеточных модулей. И вы можете создать Группы чтобы сгруппировать классы вместе, чтобы применить к группе узлов. Я создал группу CentOS6 со всеми моими серверами CentOS 6, и в моем старом site.pp в моем исходном вопросе есть все Классы (модули) Я хочу, чтобы мои серверы CentOS 6 применялись в их каталоге. Добавление узлов и классов в группы можно выполнять через панель управления.
Другой пример:
site.pp
:
node default {
include iptables
include selinux
include dns
include test
}
Преобразование site.pp в Puppet Dashboard (снимок экрана):
С классификатором внешних узлов вы на правильном пути. Это немного сложно осмыслить, но если у вас все получится, вы никогда не оглянетесь назад, и я не могу рекомендовать делать это достаточно сильно. Я пошел в марионеточную комнату IRC, когда у меня были проблемы, и они помогли мне заставить мою работу.
Можно применять разные модули в зависимости от ОС. Я запускаю среду из 300+ узлов с BSD и RHEL, и мы делаем это. Вместо того, чтобы ОС была узлом, у нас есть собственный класс, потому что. Поэтому вместо «ОС узла наследует базовый узел» у нас есть ENC, возвращающий что-то вроде этого:
node web-prod-007 {
$node_environment="production"
include web_server_class # this then inherits basenode
include centos6::server #
include logging::rsyslog
}
...и т.д
то, как вы это делаете, зависит от того, как вы хотите, чтобы ваше наследование работало, если вы хотите изменить вещи в базовом узле в зависимости от операционной системы, тогда наличие у ОС наследования базового узла - правильный путь.
TL; DR, то, что вы делаете, нормально, и посмотрите на ENC, потому что они облегчают жизнь.
РЕДАКТИРОВАТЬ: 2. Я не использую Dashboard, поэтому не знаю.