Кукольный Серверы того же типа
У меня есть вопрос передовой практики вокруг Puppet, когда работа в режиме сервер / агент.
Я создал рабочее решение, используя конфигурацию manifest / sites.pp, которая определяет конфигурацию с использованием имени хоста агента.
Например:
node 'puppetagent.somedomain.com' {
include my_module
notify { 'agent configuration applied':
}
}
Это прекрасно работает для настройки одного узла, но что если бы у меня был сценарий, в котором у меня было несколько серверов приложений, все с разными именами хостов, но все из которых нуждались в одинаковой конфигурации.
Добавление нескольких записей узлов, разделенных запятыми списков имен хостов или регулярных выражений не кажется "правильным" способом сделать это.
Есть ли альтернативные способы? Можете ли вы определить "типы" узлов? Что сообщество считает лучшей практикой для этого?
Большое спасибо
3 ответа
Если все серверы имеют одинаковую конфигурацию, наследование или иерархия Hieara являются простейшими способами добиться этого.
Как только вам потребуется обслуживать больший набор систем, в которых определенные узлы имеют такие типы, как "веб-сервер" или "сервер базы данных", конфигурации будут расходиться, и модель единого наследования будет не совсем достаточной.
Вы можете использовать композицию в этих местах. Возьмите пик в этой статье для более подробной информации.
Регулярные выражения могут быть не такими уж плохими, но я полагаю, что текущая тенденция заключается в использовании 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) }
}
Я бы предложил взглянуть на понятие "роли и профили" здесь: http://www.craigdunn.org/2012/05/239/
Вы можете иметь несколько узлов, каждый из которых включает одну и ту же конфигурацию с "профилем", который включает одну или несколько "ролей".
Что касается определения нескольких узлов с одинаковой конфигурацией или "профиля", содержащего "роль (и)", я бы предложил использовать hiera_include
как упомянуто @bartavelle. За исключением использования общей переменной среды для идентификации узлов, а не с помощью регулярных выражений.