2016-04-07 26 views
0

ich in hiera.yaml etwas wie folgt definiert:Puppe hiera aufgelöst wird keine Variablen aus Hierarchie

:backends: 
    - yaml 
:hierarchy: 
    - "%{::fqdn}" 
    - "%{fqdn}" 
    - global 
:yaml: 
    :datadir: "/etc/puppet/hieradata" 

(Ich weiß nicht, was man richtig ist, ist also, warum ich haben beide ...)

aber wenn ich hiera -c ../hiera.yaml allowUsers --debug

dies ist die Ausgabe

DEBUG: 2016-04-07 22:07:02 +0200: Hiera YAML backend starting 
DEBUG: 2016-04-07 22:07:02 +0200: Looking up allowUsers in YAML backend 
DEBUG: 2016-04-07 22:07:02 +0200: Looking for data source global 
DEBUG: 2016-04-07 22:07:02 +0200: Found allowUsers in global 
["vagrant", "root"] 

Alles, was ich laufen s in diesem Verzeichnis

[[email protected] hieradata]# ll 
total 16 
-rw-r--r--. 1 root root 28 Apr 7 20:14 centos-puppet.yaml 
-rw-r--r--. 1 root root 45 Apr 7 20:39 facts.yaml 
-rw-r--r--. 1 root root 83 Apr 7 20:42 global.yaml 
-rw-r--r--. 1 root root 28 Apr 7 20:15 production.yaml 

auch

[[email protected] hieradata]# facter fqdn 
centos-puppet 

So auch in der Hierarchie fqdn Name ist höher, es sieht aus wie hiera nicht einmal versucht fqdn Variablen Resolv. Ich habe keine Idee warum.

[[email protected] hieradata]# puppet -V 
3.8.6 

[[email protected] hieradata]# hiera -v 
1.3.4 

Antwort

1

Wenn Sie hiera auf der Kommandozeile ausführen, müssen Sie manuell alle Fakten geben Sie es erkennen wollen. Es gibt mehrere Optionen für das, aber für Einzelanfertigungen, ist die einfachste sie im Befehl direkt angeben:

hiera allowUsers -c ../hiera.yaml --debug fqdn=centos-puppet 

Wenn Fakten auf diese Weise übergeben werden, die Tatsache, Name jede Interpolation müssen übereinstimmen Token genau um erkannt werden. Daher sollte das obige Formular auslösen, dass die Hierarchieebene "%{fqdn}" erkannt wird. Wenn Sie stattdessen ::fqdn=centos-puppet angeben, wird der Pegel "%{::fqdn}" erkannt. Beachten Sie jedoch, dass diese beiden nicht so eindeutig sind, wenn Hiera von Puppet aufgerufen wird - in diesem Fall löst %{fqdn}fqdn gegen den aktuellen Bereich, mit sehr wahrscheinlich (aber nicht unbedingt) das gleiche Ergebnis wie "%{::fqdn}".

All dies ist viel detaillierter in der Hiera documentation abgedeckt, die in letzter Zeit eine signifikante und seit langem überfällige Aktualisierung erhalten hat.

+0

Großartig. Danke für die Erklärung! Leider funktioniert es immer noch nicht ... '[root @ localhost hieradata] #hiera -c ../hiera.yaml --debug fqdn = centos-puppet allowUsers DEBUG: 2016-04-07 22:34:10 +0200: Hiera YAML Backend beginnend DEBUG: 2016-04-07 22:34:10 +0200: Nachschlagen fqdn = centos-Puppe in YAML Backend DEBUG: 2016-04-07 22:34:10 +0200: Suchen für Datenquelle global allowUsers' '[root @ localhost hieradata] # cat centOS-puppet.yaml --- AllowUsers: - "Proxy" ' – syncerror

+0

@syncerror, meine Entschuldigung, habe ich vergessen, dass Hiera ist empfindlich in der Reihenfolge der Nicht-Option-Argumente (wie auch in den Dokumenten beschrieben). Das erste Nicht-Optionsargument wird immer als Schlüssel zum Nachschlagen interpretiert, und Ihre Ausgabe zeigt genau diesen Effekt. Ich habe die Antwort aktualisiert. –

+0

Vielen Dank John! Sie haben mir sehr geholfen! – syncerror