Class Puppet-如何在使用继承时重写类?
我正在使用Puppet管理我的CentOS服务器 每个服务器都从节点“公共”继承:Class Puppet-如何在使用继承时重写类?,class,inheritance,overriding,puppet,Class,Inheritance,Overriding,Puppet,我正在使用Puppet管理我的CentOS服务器 每个服务器都从节点“公共”继承: node 'common' { class { 'ssh:server': permit_root_login => no, } #[...] Other useful classes I want to keep } node default inherits 'common' {} 我希望保留有用的“公共”节点,但只覆盖一台服务器的SSH部分: node '
node 'common' {
class { 'ssh:server':
permit_root_login => no,
}
#[...] Other useful classes I want to keep
}
node default inherits 'common' {}
我希望保留有用的“公共”节点,但只覆盖一台服务器的SSH部分:
node 'host.domain.com' inherits 'common' {
class { 'ssh:server':
permit_root_login => yes,
}
}
显然,这是行不通的。如何正确地执行此操作?这是节点继承通常不受欢迎的一个原因。在任何情况下,这里最好的策略是为
permit\u root\u login
值使用一个变量,然后通过hiera或environment init.pp使用继承来初始化变量值
因此,在hiera的情况下,您的舱单如下所示:
node 'common' {
class { 'ssh::server':
permit_root_login => hiera('is_permit_root_login_enabled'),
}
}
node 'host.domain.com' inherits 'common' {}
然后在global.yaml hiera文件中,您将拥有:
is_permit_root_login_enabled: "no"
然后在覆盖yaml中,host.domain.com.yaml
:
is_permit_root_login_enabled: "yes"
我推荐使用hiera,因为它是在考虑这种继承的基础上构建的,并且具有非常灵活的继承策略。谢谢,这太完美了!