【发布时间】:2020-08-08 18:16:30
【问题描述】:
希望比我有更多 puppet 经验的人能给我一些关于我正在尝试的配置的建议。
我使用saz/ssh 作为这个模块。
我的目标
- 使用此模块创建默认 ssh 配置,该配置会推送到所有 redhat 7/8 服务器。
- 允许在单个服务器上通过 hiera 覆盖单个 ssh 选项
为了实现#1,我创建了自己的“模块”,它声明了 ssh::server 类,并定义了我的选项。我相信这被称为类资源类声明。 (为了便于阅读,缩短了代码)
#
class profiles::sshd::config {
class { 'ssh::server':
validate_sshd_file => true,
storeconfigs_enabled => false,
options => {
'Port' => [22],
'AddressFamily' => 'any',
'ListenAddress' => '0.0.0.0',
'Protocol' => '2',
'HostKey' => ['/etc/ssh/ssh_host_rsa_key', '/etc/ssh/ssh_host_ecdsa_key','/etc/ssh/ssh_host_ed25519_key'],
'RekeyLimit' => 'default none',
'SyslogFacility' => 'AUTHPRIV',
'LogLevel' => 'INFO',
}
}
}
然后我将这个“模块”包含在我的基础中。这很好用,直到我想在单个服务器上覆盖这些选项中的任何一个。我无法让 hiera 工作。
声明
ssh::server::options:
Port: [2222]
例如,在服务器的 fqdn yaml 文件中,什么都不做。如果我直接包含 ssh::server 模块,而不是通过我自己的类,那么 hiera 会覆盖工作。
我已经为 hiera 覆盖尝试了各种语法,但在 puppet 运行时从未得到任何输出,除非我直接使用该类。例如我试过:
ssh::server:options:
profiles::sshd::config:
profiles::sshd::config::ssh::server:
profiles::sshd::config::options:
profiles::sshd::config::ssh::server::options:
有没有更好的方法可以做我想做的事,或者任何人都可以就我如何以这种方式声明 hiera 覆盖提供帮助?
任何帮助都会非常有帮助
【问题讨论】: