2017-10-24 1 views
0

Ich möchte Dateien /home/user_name/scripts/file0, /home/user_name/scripts/file1 verwalten, ... auf meinen Knoten, als Kopien von Dateien mit den gleichen Pfaden auf dem Master.Puppenkopie Verzeichnis, aber nicht seinen Inhalt

auf /home/user_name Unter Berufung auf jedem Knoten vorhanden zu sein, ich habe dies im Manifest:

file { '/home/user_name/scripts': 
    ensure => 'directory', 
    path => '/home/user_name/scripts', 
    recurse => true 
} 

Das in der Tat das Verzeichnis auf jedem der Knoten erstellt wird, aber der Inhalt file0, file1, ... werden nicht kopiert.

Ich habe versucht, einen source Parameter hinzuzufügen, und auch recurse=>remote, aber mit keinem weiteren Erfolg.

aktualisieren: Der Versuch, die source Parameter hinzuzufügen, fügte ich hinzu:

file { '/home/user_name/scripts': 
    ensure => 'directory', 
    path => '/home/user_name/scripts', 
    recurse => true, 
    source => '/home/user_name/scripts' 
} 

Aber ohne Erfolg. Btw, hier ist der Ausgang, wenn puppet apply

Notice: Compiled catalog for puppet, master_dns in environment production in 0.64 seconds 
Notice: /Stage[main]/Exec_script/Exec[add_archi]/returns: executed successfully 
Notice: Applied catalog in 2.60 seconds 
+0

können wir sehen die tatsächliche Ressource mit der 'source' Attribut, das Sie behaupten, dass Sie sowie die entsprechenden outpu hinzugefügt t vom Agenten während der Kataloganwendung. –

+0

@MattSchuchard Ich habe gerade meinen Beitrag bearbeitet – user2478159

+1

Das 'source' Attribut sieht verdächtig aus. Schau dir das an: https://puppet.com/docs/puppet/5.2/types/file.html#file-attribute-source. Außerdem enthält diese Agent-Ausgabe keine Datei. –

Antwort

2

@MattSchuchard wies Sie bereits auf the relevant documentation. Sie erklären, dass Puppet vier Alternativen für die Form des Parameters source unterstützt und dass das Formular, das Sie verwenden möchten, lokale-Dateien als Quelle der verwalteten Dateien verwendet. Das heißt, lokal für den zu konfigurierenden Knoten.

Wenn Sie Dateien verwenden möchten, die sich auf dem Master als Quelle befinden und für Clients nicht direkt zugänglich sind (z. B. über ein Netzwerk-Dateisystem), haben Sie nur noch zwei Alternativen: einen URI mit der puppet: oder das http: Schema. Sofern Sie keinen HTTP-Server auf Ihrem Master ausführen möchten, ist nur ein puppet: URI wirklich eine praktikable Option.

Der Puppet-Dateiserver bietet Dateien standardmäßig nur aus Modulen, nicht aus beliebigen Pfaden. Und warum sollten Sie wollen, um beliebige Dateien aus dem Dateisystem des Masters zu dienen? Was für ein Rezept für eine Katastrophe. Und warum sollten allgemeine Benutzer sowieso Heimverzeichnisse auf dem Master benötigen?

Die beste Lösung wäre, den Verzeichnisbaum in welches Modul Ihre file Ressource in - sagen bei mymodule/files/user_name/scripts.Dann könnten Sie Ihre Ressource schreiben wie so:

file { '/home/user_name/scripts': 
    ensure => 'directory', 
    recurse => true, 
    source => 'puppet://modules/mymodule/user_name/scripts' 
} 

Aber wenn Sie darauf bestehen, sollten Sie in der Lage sein, die Quelldateien zu verlassen, wo sie jetzt sind, und belegen Sie es zusammen mit einem symbolischen Link:

mymodule/files/user_name-scripts -> /home/user_name/scripts 

... und ...

file { '/home/user_name/scripts': 
    ensure => 'directory', 
    recurse => true, 
    source => 'puppet://modules/mymodule/user_name-scripts', 
    links => 'follow' 
} 
+0

danke für die Antwort! Ich habe bereits den 'Puppet'-URI implementiert, aber ich habe keinen Symlink verwendet;) jetzt weiß ich, dass es dafür keine Möglichkeit gibt – user2478159

1

laufen Wenn Sie Puppet wollen die Dateien kopieren, müssen Sie es sagen, wo die Dateien von bieten dh die Quelle kopiert werden soll Attribut:

file {'/my/path': 
    ensure => 'directory', 
    path => '/my/path', 
    recurse => true, 
    source => '/home/user_name/scripts', 
    } 

Dies wird ein Verzeichnis /my/path erstellen und rekursiv kopieren Sie alle Dateien und Verzeichnisse aus dem lokalen Verzeichnis des Knotens /home/user_name/scripts zu /my/Pfad.

+0

natürlich ist das, was ich getan habe! aber ohne Erfolg – user2478159

Verwandte Themen