[英]Puppet - How to override a class when using inheritance?
我正在使用Puppet管理我的CentOS服務器。
每個服務器都從“公共”節點繼承:
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_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,因為它是基於這種繼承構建的,並且具有非常靈活的繼承策略。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.