2016-10-07 2 views
0

Ich habe alle Einstellungen überprüft, aber das Problem nicht gefunden und deshalb versuche ich hier Hilfe zu bekommen.Puppet: Fehler 400 Konnte keine Dateien finden

Lassen Sie mich die Konfiguration zeigen:

puppet.conf:

[...] 
[master] 
environmentpath  = $confdir/environments/ 
hiera_config  = $confdir/environments/production/sites/xy/config/hiera.yaml 
default_manifest = ./sites/xy/config/ 
environment_timeout = 0 

fileserver.conf:

[...] 
[sites] 
    path /etc/puppet/environments/production/sites/ 
    allow * 

auth.conf:

[...] 
# extra mountpoint 
path /sites 
allow * 
[...] 
Jetzt

wenn ich Run Puppet und es versucht zu imp lement eine bestimmte Datei bekomme ich diese:

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find any files from puppet:///sites/xy/files/xy/xy.key.pub at /etc/puppet/environments/production/modules/xy/manifests/xy.pp:88 on node xy 
Warning: Not using cache on failed catalog 
Error: Could not retrieve catalog; skipping run 

Bitte beachte, dass ich sensible Informationen durch xy ersetzen musste aber Zwecken für das Debuggen ich versuche, jedes Detail zu geben, wo möglich. So /sites Punkte /etc/puppet/environments/production/sites/ nach fileserver.conf und das Verzeichnis vorhanden ist wie folgt (mit richtigen Berechtigungen imho):

/etc/puppet % ls -ld /etc/puppet/environments/production/sites/ 
drwxr-xr-x 8 root puppet 4096 Oct 7 12:46 /etc/puppet/environments/production/sites/ 

Die genannte Datei puppet:///sites/xy/files/xy/xy.key.pub daher in /etc/puppet/environments/production/sites/xy/files/xy/xy.key.pub angeordnet sein sollte, die wie folgt aussieht:

/etc/puppet % ls -l /etc/puppet/environments/production/sites/*/files/*/*.key.pub 
-rw-r--r-- 1 root puppet 725 Oct 7 12:46 /etc/puppet/environments/production/sites/xy/files/xy/xy.key.pub 

Und die in der Fehlermeldung erwähnte Zeile 88 des Moduls, das die Datei lädt, sieht so aus:

$sshpubkey = file("puppet:///${sitefiles}/xy/${s0_pubkey}") 

wo $s0_pubkey ist xy.key.pub und ${sitefiles} ist sites/$site/files die wie folgt zu dem ausgewerteten Pfad der angeforderten Datei führt: puppet:///sites/xy/files/xy/xy.key.pub

Antwort

0

Die Funktion file() in Puppet kann nicht Puppet Einhängepunkte mit puppet:// behandeln. Die offiziellen Dokumente unter https://docs.puppet.com/puppet/latest/reference/function.html#file erwähnen es nicht speziell, aber offensichtlich ohne es zu erwähnen, bedeutet es, dass es nicht mit zusätzlichen Mountpoints umgehen kann und Dateien aus einem Modulverzeichnis von Dateien laden will.

Meine Lösung: Ich werde eine Variable verwenden, die den absoluten Pfad zu meinen "Sites-Dateien" wie folgt deklariert: $sitefiles_absolute = "/etc/puppet/environments/${environment}/sites/xy/files/" die sich niemals oder zumindest nicht sehr oft ändern wird. Und mit der Speicherung in der site.pp Datei kann es auf jedem Knoten und Modul verwendet werden.

+0

Dies ist nicht, was wirklich schief gelaufen ist. Möchten Sie, dass wir Ihnen helfen, Ihr Problem zu lösen, oder sind Sie mit der Problemumgehung zufrieden? –

+0

Bitte gehen Sie mit einer besseren Lösung voran :) @MattSchuchard Ich würde es schätzen, den richtigen Grund zu kennen. – thonixx

+0

Ich hatte eigentlich gehofft, John Bollinger etc. würde es tun, weil es eine etwas längere Erklärung erfordert und ich mich im Urlaub faul fühle. Ich kann das in ein paar Tagen noch einmal Revue passieren lassen. –

Verwandte Themen