Вот один способ сделать это..
У Вас в основном есть узел по умолчанию, который включает все, что все серверы должны сделать.. Затем у Вас может даже быть производственный узел, который наследовал значение по умолчанию и включает все, в чем рабочие серверы нуждаются. Затем у Вас есть свой узел, который наследовал производство в Вашем site.pp
Так, например,
node default {
include linux
include ssh::install
}
node prod inherits default {
include postfix::relay
}
node www.domain.com inherits prod {
include apache::install
}
Так мой узел www.domain.com будет включать
linux
ssh::install
postfix::relay
apache::install
Ну, переверните тот вопрос с ног на голову. Если Вы не используете модули, куда Вы собираетесь поместить всю свою конфигурацию?
Давайте возьмем, например, ssh. Действительно, ssh прибывает установленный в в значительной степени любой современный Unix, однако...
/etc/ssh/ssh_known_keys
?/etc/ssh/ssh_known_keys
читаемый всеми?Ответ находится не на обоих счетах для Ubuntu и не на первом счете для любой системы. ssh модуль, который я использую (и который я получил от GitHub) заботится о копировании ключа каждого сервера к известным ключам любого сервера.
Теперь, для получения этого мне просто нужно include ssh::server
. Разве это не намного легче, чем наличие целой конфигурации на каждом сервере?
Другой аспект для рассмотрения - то, что модуль может включать другие модули и так далее. И у Вас могут быть классы и определения не в любом модуле также включая их.
Например, типичный мой узел имеет всего несколько строк как они:
include linux-server
include agencia
Где linux-server
имеет все, что требуется стандартных серверов Linux (с большим количеством условных выражений обработать материал как виртуальные серверы по сравнению с физическими серверами), и agencia
шаблон для одного конкретного приложения, включая конфигурацию для апача, php, drupal, экспортируемые конфигурации для nginx и лака, и т.д.