Puppet:确保 /etc/sssd/sssd.conf 的“ssh”部分中存在特定配置行

Puppet:确保 /etc/sssd/sssd.conf 的“ssh”部分中存在特定配置行

我们有一个节点集群,其配置由 Puppet 维护。Puppet 确保ssd 的通过以下方式安装:

service { 'sssd':
   ensure  => running,
   enable  => true,
   require => Package[$libsss_sudo_package],
}

然而,默认sssd.conf被使用;我找不到可修改的模板。生成的sssd.conf来自集群中特定节点的数据如下:

[domain/example.com]

cache_credentials = True
krb5_store_password_if_offline = True
ipa_domain = example.com
id_provider = ipa
auth_provider = ipa
access_provider = ipa
ipa_hostname = host-1.muskrat.local
chpass_provider = ipa
ipa_server = _srv_, ipa-server.example.com
ldap_tls_cacert = /etc/ipa/ca.crt
[sssd]
services = nss, sudo, pam, ssh

domains = example.com
[nss]
homedir_substring = /home

[pam]

[sudo]

[autofs]

[ssh]

[pac]

[ifp]

每一个sssd.conf不同之处在于参数ipa_主机名每个主机都不同。因此,我不能只定义一个“sssd”模块并使用固定的sssd.conf

在 Puppet 中,如何确保将特定行添加到现有sssd.conf

具体来说,我想禁用/var/lib/sss/pubconf/known_hosts通过将此行添加到[SSH]部分sssd.conf

[ssh]
ssh_hash_known_hosts = false

我如何在 Puppet 中做到这一点?

答案1

首先,您需要让 Puppet 知道其所运行主机的正确 _ipa_hostname_ 是什么。让我们将其设为一个变量,并将其命名为 _$my_ipa_host_。

其次,您需要一个模板 (.ebb 或 .erb) 文件。我们将其称为 sssd.erb。
将您现有的 sssd.conf 文件放入 [module_path]/templates/sssd.erb
编辑 sssd.erb,使 ipa_hostname 条目如下所示:
ipa_hostname = <%= @my_ipa_host %>

现在,让 puppet 使用模板而不是实际文件创建文件:
file { '/etc/sssd/sssd.conf': content => template('[module_name]/sssd.erb'), }

然后,为确保您的 sssd.conf 文件包含另一行,请将其添加到您的模块中:
ini_settings { 'disable hashing': ensure => present, path => '/etc/sssd/sssd.conf', section => 'ssh', setting => 'ssh_hash_known_hosts', value => 'false', }

相关内容