Eu usaria o Hiera: link
O Hiera permite que você desvincule seus dados variáveis dos manifestos do Puppet.
Hiera, como o nome indica, é hierárquico, permitindo algumas maneiras interessantes de substituir, assim como combinar dados variáveis.
Primeiro, modifique sua declaração sssd :: domain para executar pesquisas Hiera para os parâmetros:
sssd::domain { 'LDAP':
domain_type => 'ldap',
ldap_uri => hiera('ldap_uri', 'ldaps://ldap.site.com:636'),
ldap_search_base => hiera('ldap_search_base', 'DC=site,DC=com'),
ldap_user_search_base => hiera('ldap_user_search_base', 'OU=People,DC=site,DC=com'),
ldap_group_search_base => hiera('ldap_group_search_base', 'OU=Groups,DC=site,DC=com'),
ldap_default_bind_dn => hiera('ldap_default_bind', 'CN=bindaccount,OU=ServiceAccounts,OU=People,DC=site,DC=com'),
ldap_default_authtok => hiera('ldap_default_authtok', 'soopersekretbindpw'),
simple_allow_groups => hiera_array('ldap_simple_allow_groups', ['SysAdmins','AppAdmins']),
}
No código acima, defini valores padrão para cada uma das pesquisas. Você poderia excluí-los, se preferir, colocando os padrões em seu arquivo de dados Hiera mais genérico (normalmente "common.yaml" ou "common.json"):
common.yaml:
---
ldap_uri: ldaps://ldap.site.com:636
ldap_search_base: DC=site,DC=com
ldap_simple_allow_groups:
- SysAdmins
- AppAdmins
Para os bits que você deseja personalizar por host, crie um arquivo YAML ou JSON com o nome do FQDN do host em questão e coloque os valores necessários nele.
node1.systems.private.yaml:
---
ldap_simple_allow_groups:
- SomeOtherGroup
Neste exemplo, observe que ldap_simple_allow_groups
está usando a função de consulta hiera_array
. Isso concatenará TODOS os fundamentos válidos na hierarquia. Assim, node1 obterá os valores definidos em common.yaml, bem como o "SomeOtherGroup" definido em seu próprio arquivo YAML.
Leia a documentação dos tipos de pesquisa da Hiera para obter mais detalhes: link