Tente isto:
hiera cluster ':: nodetype = diskless'
Veja: link
Estou executando uma configuração de fantoches sem mestre que aplica as alterações de marionetes da seguinte maneira.
puppet apply /tmp/puppet/manifests/site.pp --modulepath=/tmp/puppet/modules --hiera_config=/tmp/puppet/hiera.yaml
Eu tenho tentado trabalhar no hiera para lidar com os diferentes tipos de nós que temos e, como ponto de partida, estamos tentando usar um fato personalizado que é definido nos nós. Este fato é nodetype e neste exemplo é definido como um valor de diskless.
O facter no nó reconhece esse fato.
# facter -y | grep nodetype
nodetype: diskless
E hiera.yaml contém o seguinte
---
:backends:
- yaml
:yaml:
:datadir: /tmp/puppet/data
:hierarchy:
- node/%{::nodetype}
E em /tmp/puppet/data/node/diskless.yaml existe
---
cluster: blues
Embora depois de fazer isso eu tente checar se hiera está definindo as variáveis conforme necessário, mas não parece funcionar.
hiera -y diskless.yaml cluster
nil
Existe uma maneira melhor de depurar o problema. Tenho certeza de que é algo simples, mas seria decepcionante se o hiera não funcionasse (ou não pudesse) neste caso de uso.
Felicidades
Editar 1:
Depuração adicional
hiera cluster '::nodetype=diskless' -d
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Hiera YAML backend starting
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Looking up cluster in YAML backend
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Looking for data source defaults
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Cannot find datafile /var/lib/hiera/defaults.yaml, skipping
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Looking for data source global
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Cannot find datafile /var/lib/hiera/global.yaml, skipping
nil
Editar 2:
Aparece definindo o sinalizador --hiera-config não faz nada e é necessário criar um link simbólico /etc/hiera.yaml para a configuração hiera.yaml que você deseja usar.
Editar 3: Após o symlinking /etc/hiera.yaml para /tmp/puppet/hiera.yaml, fui capaz de pesquisar variáveis hiera, mas não consegui usá-las em manifestos de puppet da maneira esperada. Em vez disso eu tive que chamar hiera assim tão diretamente
$networking_config = hiera('networking::network::networking_config','no')
Terrivelmente confuso