我正在使用Puppet来管理我的CentOS服务器。
每个服务器都继承自“common”节点:
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,
}
}
显然,这不起作用。我该怎么做呢?
答案 0 :(得分:1)
这是节点继承通常不受欢迎的一个原因。在任何情况下,这里最好的策略是使用变量作为permit_root_login
值,然后使用继承来通过hiera或者环境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,因为它是以这种继承为基础构建的,并且具有非常灵活的继承策略。