У нас есть кластер узлов, конфигурация которых поддерживается Puppet. Puppet гарантирует, что sssd установлен через:

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_hostname варьируется на каждом хосте. Поэтому я не могу просто определить модуль "sssd" и использовать фиксированный sssd.conf.

В Puppet, как я могу гарантировать, что определенная строка будет добавлена в определенный раздел существующего sssd.conf?

В частности, я хочу отключить хеширование /var/lib/sss/pubconf/known_hosts , добавив эту строку в раздел [ssh] файла sssd.conf:

[ssh]
ssh_hash_known_hosts = false

Как я могу сделать это в Puppet?

1 ответ1

0

Во-первых, вам нужно, чтобы 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 %>

Теперь пусть кукольный создаст файл, используя шаблон вместо реального файла:
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', }

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .