2016-12-21 1 views
1

Ich lerne Marionette und nur über Hiera lesen.Marionette Hiera Nachschlagen in Manifest funktioniert nicht

$ cat /etc/puppetlabs/puppet/puppet.conf 
[master] 
codedir = /etc/puppetlabs/code 

[agent] 
server = puppet.example.com 

[master] 
certname = puppet.example.com 

[master] 
vardir = /var/opt/puppetlabs/puppetserver 
ssldir = $vardir/ssl 

[main] 
environmentpath = /etc/puppetlabs/code/environments 
basemodulepath = /etc/puppetlabs/code/modules 


$ cat /etc/puppetlabs/puppet/hiera.yaml 
--- 
:backends: 
    - yaml 
:hierarchy: 
    - "nodes/%{::trusted.certname}" 
    - common 

:yaml: 
# datadir is empty here, so hiera uses its defaults: 
# - /etc/puppetlabs/code/environments/%{environment}/hieradata on *nix 
# - %CommonAppData%\PuppetLabs\code\environments\%{environment}\hieradata on Windows 
# When specifying a datadir, make sure the directory exists. 
    :datadir: 

UPDATE:

Bevor auf die Frage kommen, ich bin unten einige Konfigurationseinstellungen Bereitstellung Nachdem man durch @ um-FelixFrank Antwort, änderte ich meine Standard Hiera Position der Konfigurationsdatei. Die Konfigurationsdatei hat folgenden Inhalt:

$ cat /etc/puppetlabs/code/hiera.yaml 
--- 
:backends: 
- yaml 
:hierarchy: 
- "hostname/%{facts.hostname}" 
- "os/%{facts.osfamily}" 
- common 
:yaml: 
:datadir: /etc/puppetlabs/code/hieradata 

I hieradata dir unter /etc/puppetlabs/code

$ ll /etc/puppetlabs/code/ 
total 4 
drwxr-xr-x. 4 root root 32 Dec 20 11:17 environments 
drwxr-xr-x. 3 root root 39 Dec 21 12:22 hieradata 
-rw-r--r--. 1 root root 153 Dec 20 16:51 hiera.yaml 
drwxr-xr-x. 2 root root 6 Dec 21 11:02 modules 

$ cat /etc/puppetlabs/code/hieradata/common.yaml 
--- 
puppet::status: 'running' 
puppet::enabled: true 

habe ich versucht, die oben genannten Werte in meinem Hostnamen yaml Datei überschrieben wird, wie unter angegeben:

$ cat /etc/puppetlabs/code/hieradata/hostname/delvmplgc1.yaml 
--- 
puppet::status: 'stopped' 
puppet::enabled: false 

$ facter hostname 
delvmplgc1 

Ich habe ein Beispielmanifest auf dem Puppet-Server erstellt, um zu sehen, ob ich Hiera-Lookup in Manifest durchführen kann.

$ cat /etc/puppetlabs/code/environments/qa/manifests/hierasample.pp 
notify { 'welcome': 
     message => "Hello!", 
} 

$status = lookup({ name => 'puppet::status', default_value => 'running' }) 
$enabled = lookup({ name => 'puppet::enabled', default_value => true }) 

service { 'puppet': 
     ensure => $status, 
     enable => $enabled, 
} 

Jetzt ist das Problem, dass, wenn ich versuche, das Manifest auszuführen, sehe ich keine Nachrichten zu Hiera.

$ puppet apply /etc/puppetlabs/code/environments/qa/manifests/hierasample.pp 
Notice: Compiled catalog for delvmplgc1.sapient.com in environment production in 0.99 seconds 
Notice: Hello! 
Notice: /Stage[main]/Main/Notify[welcome]/message: defined 'message' as 'Hello!' 
Notice: Applied catalog in 0.10 seconds 

Jede Hilfe wird geschätzt.

+0

Können Sie den Inhalt von '/ etc/puppetlabs/puppet/hiera.yaml' zur Frage hinzufügen? –

+0

Aktualisierte den Beitrag mit dem Inhalt von '/ etc/puppetlabs/puppet/hiera.yaml' – Technext

Antwort

3

Als Kommentar in den Standard hiera.yaml Staaten, die datadir in

/etc/puppetlabs/code/environments/%{environment}/hieradata 

direkt So befindet sich stattdessen hieradata in /etc/puppetlabs/code schaffen, bewegen es auf zwei Ebenen in /etc/puppetlabs/code/environments/qa und anderen Umgebungen.

+0

Ich habe versucht, die Standard-Hiera-Konfigurationsdatei Speicherort stattdessen mit' Hiera_config = $ codedir/hiera.yaml' zu ändern und es nahm die Änderung auf. Danke für den Hinweis auf den Fehler! :) – Technext

+0

Es gibt jedoch immer noch eine Abfrage: Die überschriebenen Werte in der Datei delvmplgc1.yaml, die in meinem Beitrag angezeigt werden, ändern sowohl 'Status' als auch 'aktiviert' auf 'gestoppt' bzw. 'falsch'. Die Puppenausgabe erwähnt jedoch nur: "Hinweis:/Stage [Haupt]/Main/Service [Marionette]/sicherstellen: Stellen Sie sicher, dass 'Laufen' in 'Stoppen' geändert wurde. Es sollte auch "Notice:/Stage/Main/Service [puppet]/enable: aktiviert" "true" in "false" geändert haben. Irgendeine Idee, warum es das übersprungen hat? – Technext

+0

Ich habe den Inhalt meiner benutzerdefinierten Hiera.Yaml-Datei in meinen Beitrag eingefügt. – Technext

Verwandte Themen