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

Ссылки на группы / классы из панели инструментов 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. Это лучший способ применить модули / ресурсы в зависимости от ОС? Или все вышесказанное вызывает у вас рвоту?
  2. Независимо от №1, мне все еще интересно, как ссылаться на классы, группы и узлы из Dashboard в моих манифестах. Я прочитал Внешние узлы doc, но я не вижу, насколько они соответствуют манифестам.

Спасибо всем.

Хорошо, я вижу, как это работает. 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, когда у меня были проблемы, и они помогли мне заставить мою работу.

  1. Можно применять разные модули в зависимости от ОС. Я запускаю среду из 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, поэтому не знаю.