2016-06-10 17 views
2

Ich habe die folgenden Hiera-Dateien (Yml).Wie funktioniert das?

  • hiera/data/Domain/abcd.com
  • hiera/data/Rolle/webserver.yml

können sagen, dass ich eine Marionette Knoten haben, die 'Webserver' Rolle zugewiesen und seinen Hostnamen hat ist abcd.com

nun unter - hiera/data/Domain/abcd.com Datei, ich habe diese

config::xyz_category::name: 'bbbb' 

und ich habe folgende Daten unter - hiera/data/Rolle/webserver.yml

config::xyz_category: 
    username: 'aaaa' 

meine hiera Datensuchreihenfolge wie unten ist (hiera.yml)

:backends: yaml 
:logger: console 
:merge_behavior: deeper 
:yaml: 
    :datadir: /etc/puppet/branches/hiera/data 
:hierarchy: 
    - fqdn/%{::fqdn} 
    - role/%{::rolename} 
    - domain/%{::domain} 
    - defaults 

So ist meine Frage lässt sagen, dass ich eine haben Modul für diese 'Webserver' Rolle geschrieben.

In diesem Modul kann ich hiera Daten wie unten aufrufen?

$config = hiera('config::xyz_category', {}) 

so dass

$config['name'] should return 'bbbb' 
$config['username'] should return 'aaaa' 
+0

Haben Sie versucht, das zu tun? – TylerH

+0

Dies ist eine ziemlich gute Hierarchie und Rollen-Setup, die Sie übrigens haben. Viele zufällige Puppet-Entwickler scheinen über Best Practices verwirrt zu sein, aber das ist ziemlich gut. –

Antwort

3

Nein, nicht genau.

Ein Hiera Prioritäts lookup, wie durch die hiera() Funktion durchgeführt wird, sucht einen vollständigen Wert zugeordnet mit dem Schlüssel, den gesamten Wert von höchster Priorität Hierarchieebene nahm, die man bereitstellt. In dem Fall, dass Sie beschreiben, ist dieser Wert ein Hash mit genau einem Schlüssel, 'Benutzername'. Wenn Sie einen Hashwert aus mehreren Ebenen der Datenhierarchie zusammenstellen möchten, suchen Sie nach einer hash-merge Suche. Hiera unterstützt das, aber Sie müssen die richtige Lookup-Funktion verwenden:

$config = hiera_hash('config::xyz_category', {}) 

Hinweis insbesondere, dass die Differenz zwischen hiera() und hiera_hash() (und hiera_array()) ist in erster Linie um Lookup-Strategie, nicht über die Art der Rück Wert. Die einfache hiera()-Funktion kann gegebenenfalls Skalare, Hashes und Arrays zurückgeben.

+0

Er könnte auch 'config :: xyz_category' in einen Hash mit' name' und 'username' Schlüssel ändern. All das erinnert mich daran, dass ich nicht warten kann, bis Puppet Data Provider produktionsbereit wird. –