Я хочу переопределить параметры базовых узлов. То, что я хочу, чтобы это шаблон, как это:переопределение Параметры в кукольных модулях
# File manifests/nodes.pp
node myDefault {
class { 'my::common::puppet_setup':
service => 'enable',
pushable => 'disable',
}
# Do lots of default things ...
}
node 'myFirstNode' inherits myDefault {
# Do something ...
}
node 'mySecondNode' inherits myDefault {
class { 'my::common::puppet_setup::params':
service => 'disable',
pushable => 'enable',
}
}
Я понял марионеточного документации, я мог бы сделать это, написав мой модуль, как это:
# File modules/my/manifests/common/puppet_setup.pp
class my::common::puppet_setup (
$pushable = $my::common::puppet_setup::params::pushable,
$service = $my::common::puppet_setup::params::service,
) inherits my::common::puppet_setup::params {
# package that configures puppet node
# input value validation
validate_re($pushable, ['^enable$', '^disable$', '^ignore$', ])
validate_re($service, ['^enable$', '^disable$', '^ignore$', '^cron$', ])
# setup puppet, start or disable agent, put ssh keys for push ...
}
class my::common::puppet_setup::params {
$pushable = 'enable'
$service = 'enable'
$puppetserver = 'puppet.my.site.de'
case $::osfamily {
'Debian': {
}
default: {
fail("not implemented yet for {::operatingsystem}")
}
}
}
В Документации по puppet website говорит: Когда объявлен производный класс, его базовый класс автоматически объявляется первым (если он еще не был объявлен в другом месте).
Но я получаю эту ошибку (добавлены некоторые отступы):
mySecondNode# puppet agent --test --environment dev_my
Error: Could not retrieve catalog from remote server:
Error 400 on SERVER: Duplicate declaration:
Class[My::Common::Puppet_setup::Params] is already declared;
cannot redeclare at /.../puppet/manifests/nodes.pp:16 on node mySecondNode
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
Я читаю об этом в течение недели, и я предполагаю, что мое понимание ист совершенно неправильно где-то, хотя я использовал модули puppetlabs НТП, как пример.
что мне не хватает?
Это не исправить моя потребность, но это говорит мне, что я делаю неправильно. – Faronitates
Я отредактировал свой ответ с помощью решения. –
Это отличная ссылка. Я возвращаюсь после работы над этим. Еще раз спасибо! – Faronitates