Você pode usar um fato personalizado para diferenciá-los e resolver um modelo usando esse fato:
class foo (
$role,
){
file { '/etc/security/access.conf':
owner => 'root',
group => 'root',
mode => '644',
content => template("$role.ldap/access-2.conf"),
}
}
Usando a versão atual do facter
, é fácil fornecer fatos personalizados em seus servidores:
# cat /etc/facter/facts.d/datacenter.yaml
---
role: webserver
location: Oz
Em seguida, dependendo de como você configurou sua hierarquia, você pode ter uma função e funções padrão por domínio ou host, um exemplo:
---
:backends:
- yaml
:hierarchy:
- "%{::hostname}"
- common
:yaml:
:datadir: "/etc/puppet/hieradata/%{::domain}/%{::location}"
Aqui, location
também é um fato personalizado, por isso é fácil criar hierarquias personalizadas também.
Para manipular exceções, escreva um fato personalizado e deixe o arquivo common.yaml
manter os valores padrão.