Я "играл" (ну, на самом деле детская игра) с марионеткой в течение нескольких недель и не могу понять, как реализовать модуль, имя которого является клиентом; этот модуль будет вызываться как таковой:
client { "client-name":
"apache-node" => "name-of-apache-node",
"tomcat-node" => "name-of-tomcat-node",
"https" => true,
# probably other parameters, and other nodes may be implied as well
}
и это затем автоматически сгенерирует конфигурацию для всех соответствующих узлов и распространять конфигурацию.
Примечание: я НЕ хочу использовать внешние источники (LDAP или другие), просто марионетку: у меня достаточно трудностей с одной марионеткой, и я буду рассматривать это только тогда, когда у меня будет достаточно мастерства (сделайте это несколько месяцев, вероятно ...) .
Примечание 2: марионетка - это версия 2.6.12, фактер - версия 1.5.9.
Возможно ли это, или это несбыточная мечта?
Конечно, это должно работать.
Во-первых, вам нужно либо включить его где-нибудь, чтобы он применялся к обоим узлам, а затем отфильтровать конфигурацию, которая должна применяться к разным узлам (возможно, с большим case
оператор), или иметь разные классы для стороны приложения tomcat и стороны apache (это, вероятно, было бы чище).
Вот подход, который я бы выбрал:
Настройте мультиклассовый модуль для своего клиентского приложения:
modules
-> client-app
-> manifests
-> apache.pp
-> tomcat.pp
Настройте эти классы с нужной конфигурацией:
class client-app::apache ($tomcatnodes = undef, $https = true) {
package { 'apache2':
ensure => present,
}
# ... etc etc
# use a template file that utilizes the $tomcatnodes and $https
# variables to set the config that you need
}
Затем прикрепите их к своим узлам:
node tomcatserver1 {
class { 'client-app::tomcat':
apachenode = 'apacheserver',
https = true,
}
}
node tomcatserver2 {
class { 'client-app::tomcat':
apachenode = 'apacheserver',
https = true,
}
}
node apacheserver {
class { 'client-app::apache':
tomcatnodes = [ 'tomcatserver1', 'tomcatserver2' ],
https = true,
}
}
Некоторые дополнительные материалы по этой реализации: см. Вот и Вот.