Ссылки на группы / классы из панели инструментов Puppet в манифесте моего сайта
Я использую 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 в моих модулях, но есть некоторые модули, которые будут применяться только к определенному дистрибутиву. Итак, я полагаю, у меня есть два вопроса:
- Это лучший способ применить модули / ресурсы для конкретной ОС? Или из-за вышесказанного хочется рвать?
- Независимо от #1, мне все еще интересно, как ссылаться на классы, группы и узлы из Dashboard в моих манифестах. Я прочитал документ Внешние узлы, но я не вижу, как они соответствуют манифестам.
Спасибо всем.
2 ответа
Хорошо, я вижу, как это работает. Puppet Dashboard заменяет site.pp
, если вы установили информационную панель в качестве внешнего классификатора узла (ENC). Ну, это не совсем так, поскольку вы можете использовать оба:
ENC могут сосуществовать со стандартными определениями узлов в site.pp, и классы, объявленные в каждом источнике, эффективно объединяются.
Насколько я понимаю, панель инструментов Classes = названия ваших кукольных модулей. И вы можете создавать группы для группировки классов вместе, чтобы применить к группе узлов. Я установил группу 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 }
...так далее
то, как вы это сделаете, зависит от того, как вы хотите, чтобы ваше наследование работало, если вы хотите изменить вещи в базовом узле в зависимости от операционной системы, тогда наличие базового узла наследования ОС - правильный путь.
TLDR, то, что вы делаете, хорошо, и посмотрите на ENC, потому что они делают жизнь проще.
РЕДАКТИРОВАТЬ: 2. Я не использую Dashboard, поэтому я не знаю.