我们有一个节点集群,其配置由 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', }