Carregar arquivo hiera de variável específica / fact / hiera-value

1

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)?

    
por DevOps 18.12.2015 / 12:26

1 resposta

0

O processo mestre do Puppet geralmente não usa a configuração em /etc/hiera.yaml , o que pode ser confuso. Com Puppet 3.x , geralmente é /etc/puppet/hiera.yaml .

Você pode se certificar de usar (como root)

puppet master --configprint hiera_config

na máquina mestre.

    
por 04.01.2016 / 15:24

Tags