2013-12-08 5 views
3

У меня вопрос с практикой в ​​отношении Puppet при работе в режиме сервера/агента.Марионеточные серверы того же типа

Я создал рабочее решение, используя конфигурацию manifest/sites.pp, которая идентифицирует конфигурацию с использованием имени хоста агента.

Например:

node 'puppetagent.somedomain.com' { 

     include my_module 

     notify { 'agent configuration applied': 
     } 
} 

Это прекрасно работает для настройки одного узла, но что, если у меня был сценарий, в котором я имел несколько серверов приложений все с разными именами хостов, но которые все необходимые той же конфигурации.

Добавление нескольких записей узлов, списка имен хостов или регулярных выражений не похоже на «правильный» способ сделать это.

Есть ли альтернативные способы? Можете ли вы определить типы узлов? Что сообщество считает лучшей практикой для этого?

Большое спасибо

ответ

1

Если все серверы имеют одинаковую конфигурацию, наследование или иерархию , это самые простые способы достижения этой цели.

После того, как вам понадобится поддерживать более широкий набор систем, где определенные узлы имеют такие типы, как «веб-сервер» или «сервер базы данных», конфигурации будут расходятся, а модель одиночного наследования не будет полностью достаточной.

Вы можете использовать композицию в этих местах. Возьмите пик в this article для более подробной информации.

1

Регулярные выражения не может быть так плохо, но я полагаю, что текущая тенденция заключается в использовании hiera_include.

Вы можете сделать что-то грязное, как это:

$roles = { 'webserver' => [ 'server1', 'server2', 'server3' ] 
     , 'smtp'  => [ 'gw1', 'gw2' ] 
     } 
node default { 
    $roles . filter |$k,$v| { $hostname in $v } 
      . each |$k,$v| { hiera_include($k) } 
} 
0

Я хотел бы предложить взглянуть на концепцию «ролей и профилей» здесь: http://www.craigdunn.org/2012/05/239/

Вы можете иметь несколько узлов, все из которых включают в себя та же конфигурация с «профилем», которая включает одну или несколько «ролей».

Что касается определения нескольких узлов с одинаковой конфигурацией или «профилем», содержащим «роль (роли)», я бы предложил использовать hiera_include, например, упомянутый @bartavelle. За исключением использования общей переменной среды для идентификации узлов, а не с использованием регулярных выражений.

+0

Ссылка хорошая, но у вас есть объяснение назад. В парадигме «роли и профили» каждая * роль * включает один или несколько профилей *. Каждому узлу присваивается только одна * роль *. – quickshiftin

Смежные вопросы