Я много читал о том, как заказывать кукольные классы с защитой (я использую Puppet 6).Но это все еще не работает для меня в одном случае.Возможно, мой английский недостаточно хорош, и я что-то пропустил.Возможно, кто-то знает, что я делаю неправильно.
У меня есть профиль для установки сервера puppetserver (profile::puppetserver
).В этом профиле есть три подкласса, которые я содержит в пределах profile::puppetserver
class profile::puppetserver(
) {
contain profile::puppetserver::install
contain profile::puppetserver::config
contain profile::puppetserver::firewall
}
. Это прекрасно работает для меня.Теперь я хочу расширить этот профиль и установить PuppetDB
.Для этого я использую модуль puppetdb
из puppet forge :
Так что я добавляю profile::puppetserver::puppetdb
и содержимое к profile::puppetserver
class profile::puppetserver::puppetdb(
) {
# Configure puppetdb and its underlying database
class { 'puppetdb': }
# Configure the Puppet master to use puppetdb
class { 'puppetdb::master::config': }
}
Когда я сначала инициализирую puppetserver
и добавляю profile::puppetserver::puppetdb
после него, puppetdb
устанавливается и все работает нормально.
Если я добавляю егонепосредственно с contain
, и при подготовке всего сразу происходит сбой.Это потому, что модуль puppetdb
устанавливается случайным образом во время установки моего главного сервера (а также сервера postgresql
и т. Д.).Это заканчивается тем, что мой puppetserver
не работает, а мои puppetdb
не генерируют локальные ssl
сертификаты, а служба не запускается.
Что я пробую сначала:
Я установил пакет puppetdb
непосредственно в profile::puppetserver::puppetdb
и использовал требуемый флаг.Это работает, когда я готовлю все сразу.
class profile::puppetserver::puppetdb (
) {
Package { 'puppetdb':
ensure => installed,
require => Class['profile::puppetserver::config']
}
}
Так что я думаю, что мог бы сделать то же самое в приведенном выше коде:
class profile::puppetserver::puppetdb(
) {
# Configure puppetdb and its underlying database
class { 'puppetdb':
require => Class['profile::puppetserver::config']
}
# Configure the Puppet master to use puppetdb
class { 'puppetdb::master::config':
require => Class['profile::puppetserver::config']
}
}
Но это не работает ...
Итак, я читал о сдерживании и упорядочении классов кукол по цепочкам.Так что я сделал это в моем profile::puppetserver
class profile::puppetserver(
) {
contain profile::puppetserver::install
contain profile::puppetserver::config
contain profile::puppetserver::firewall
contain profile::puppetserver::puppetdb
Class['profile::puppetserver::install'] ->
Class['profile::puppetserver::config'] ->
Class['profile::puppetserver::firewall'] ->
Class['profile::puppetserver::puppetdb']
}
Но это все равно не имеет никакого эффекта ... он все еще начинает устанавливать postgresql
и пакет puppetdb
во время моей "подготовки puppetserver" вшаги по установке, настройке, брандмауэру.
Как мне написать порядок, чтобы все элементы из модуля puppetdb
, который я вызываю в profile::puppetserver::puppetdb
, запускались только после завершения остальных этапов подготовки?
Я действительно не понимаю этого.Я думаю, может быть, это как-то связано с тем, что я объявляю классы из модуля puppetdb
внутри profile::puppetserver::puppetdb
, а не напрямую Resource Type
.Потому что, когда я использую Package Resource Type
с флагом Require, это, кажется, работает.Но я действительно не знаю, как справиться с этим.Я думаю, что должен быть способ или?