Ссылки на группы / классы из панели инструментов 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 в моих манифестах. Я прочитал документ Внешние узлы, но я не вижу, как они соответствуют манифестам.

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

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

  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 
    }
    

    ...так далее

то, как вы это сделаете, зависит от того, как вы хотите, чтобы ваше наследование работало, если вы хотите изменить вещи в базовом узле в зависимости от операционной системы, тогда наличие базового узла наследования ОС - правильный путь.

TLDR, то, что вы делаете, хорошо, и посмотрите на ENC, потому что они делают жизнь проще.

РЕДАКТИРОВАТЬ: 2. Я не использую Dashboard, поэтому я не знаю.

Другие вопросы по тегам