Estou tentando carregar um arquivo hiera de acordo com um sinalizador específico.
Configuração de hierarquias Hiera
:hierarchy:
- "%{environment}/%{::fqdn}"
- "%{environment}/%{nodetype}"
- "%{environment}/%{calling_module}"
- "%{environment}"
- "common/%{calling_module}"
- "common"
Na verdade, queremos fatorar algumas configurações no nível "nodetype". O objetivo é evitar colocar o mesmo hiera "block" dentro dos arquivos:
- ambiente / teste / myhost1.example.com.yaml
- environment / test / myhost2.example.com.yaml
- environment / test / myhost3.example.com.yaml
mas em vez disso, mas parte comum em:
- environment / test / nfs-server.yaml para todos os servidores nfs relacionados à configuração comum
- environment / test / backend-server.yaml para todos os servidores de backend relacionados com comum
Depois disso, todos os servidores receberão seus próprios valores específicos com o arquivo fqdn yaml. (esta parte está ok)
Atualmente, não sei como fornecer os dados "nodetype" para o contexto hiera.
Eu tentei colocá-lo no arquivo de manifesto principal como (sim, eu li o documento e sei que é uma má ideia, mas mesmo com a tentativa de desespero, ele não funciona de qualquer maneira)
node 'nfs1.example.com', 'nfs2.example.com' {
$nodetype= 'nfs-server'
mas o arquivo ambiente / teste / nfs-server.yaml não é carregado pelo hiera.
Eu também tentei usar fatos personalizados, mas usando um fato personalizado com
modules/hosts/facts.d/host-fact-test.txt
O arquivo é enviado para o host do agente, mas novamente aqui, o hiera não usa o arquivo dedicado.
Notice: /File[/var/lib/puppet/facts.d/host-fact-test.txt]/ensure: defined content as '{md5}d7492faae1bfe55f65f9958a7a5f6df9'
Se eu usar um comando notify puppet, o valor é ok
if $nodetype== 'nfs-server' {
notify {"Running with \$nodetype ${nodetype} ID defined":
withpath => true,
}
}
resultado:
Notice: /Stage[main]/attemps/Notify[Running with $nodetype nfs-server ID defined]/message: Running with $nodetype nfs-server ID defined
Stack is Puppet opensource no Ubuntu 14, então as versões são:
- fantoche 3.8.4
- hiera 1.3.4
- facter 2.4.4
Alguma ideia ou sugestão para que funcione (ou atinja um comportamento semelhante)?