Wie kopiere ich Dateien mit Puppet Master auf alle Maschinen?

12

Ich habe Puppetmaster in Ubuntu 11.04 installiert und ich habe Puppet in allen meinen Clients installiert. Ich habe alle meine Puppenkunden mit Puppenmeister verbunden. Ist es möglich, eine Datei vom Puppenmeister auf alle diese Puppenkunden zu kopieren?

Beispielsweise:

Ich habe die Datei datas.xls auf meinem Desktop (Puppet Master). Wie kopiere ich diese Dateien auf alle meine Puppet-Clients im folgenden Verzeichnis (/ home / operator1 / Desktop / Backup /)?

Aktualisieren:

  • Hallo, die Datei wird immer noch nicht freigegeben.
  • Wie kann puppet:///modules/module_name/datas.xlsich diese Zeile ändern, in der sich die zu kopierende Datei befindet /etc/puppet/modules/mymodule/manifests/datas.xls?

Fehler auf dem Client: (behoben)

root@testing:~# puppetd --test 
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class sudo at /etc/puppet/manifests/site.pp:2 on node testing.chn.jd.com
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

Fehler 2 auf dem Client:

root@tme13:~# puppetd --test
err: Could not run Puppet configuration client: Could not retrieve local facts: bad URI(is not URI?): http://169.254.169.254/2008-02-01/meta-data/<HTML><HEAD><TITLE>HTTP access denied</TITLE></HEAD><BODY><img src/

Neues Update:

Wie wende ich dieses Modul auf alle Knoten an? Damit wird die Datei auf alle Knoten kopiert.

karthick87
quelle
... aber hast du diese Frage nicht schon gestellt? askubuntu.com/questions/61080/…
fossfreedom
Ja, aber die Lösung funktioniert nicht mehr.
karthick87
Es ist auch nicht sehr klar, dass der Benutzer nur den Inhalt von einigen Websites kopiert hat.
karthick87
Immer noch kein Grund, eine neue Frage zu stellen (?), Obwohl ich diese von einem Link kopiert habe, den Jorge mir gegeben hat, und er sagte mir, ich solle es c / p;) afaik, was in dieser Antwort steht, funktioniert immer noch?
Rinzwind
Hier ist eine weitere Referenz: serverfault.com/questions/200101/…
Rinzwind

Antworten:

24

Puppet ist ein kleines Monster, um den Kopf in den Kopf zu bekommen, also ist es keine schlechte Sache, mit gutem Beispiel zu lernen. Im Folgenden gehe ich davon aus, dass Sie Module verwenden. Bitte geben Sie in einem Kommentar an, ob Sie keine Module verwenden oder ob Sie weitere Informationen zum Zusammenstellen des Moduls benötigen.

Angenommen, Sie starten ein neues Modul mit dem Namen mymodule. Im Puppet-Home-Verzeichnis (normalerweise /etc/puppet) auf dem Puppet-Master sollten Sie die Modulmanifeste und das Dateiverzeichnis erstellen:

mkdir -p modules/mymodule/manifests
mkdir -p modules/mymodule/files

Dann erstelle eine Datei in diesem Verzeichnis init.ppund gib ein:

class myfile {
    file { '/home/operator1/Desktop/Backup':
        ensure => directory,
        mode => '0755',
        owner => 'operator1',
        group => 'operator1',
    }

    file { "/home/operator1/Desktop/Backup/datas.xls":
        mode => "0644",
        owner => 'operator1',
        group => 'operator1',
        source => 'puppet:///modules/module_name/datas.xls',
    }
}

Dann legen Sie die datas.xlsDatei in das filesVerzeichnis des Moduls - in diesem Beispiel in modules/mymodule/files/. (Beachten Sie, dass es auch ein templatesVerzeichnis für Vorlagen geben kann ).

In der manifests/site.ppDatei müssen Sie das Modul importieren und die Klasse einschließen, indem Sie Folgendes tun:

import 'mymodule'

node base {
    include myfile
}

node server1 inherits base {}
node server2 inherits base {
    # extra config here
}

Stellen Sie sicher, dass alle Ihre Knoten von base erben und dass dies alles ist, was Sie tun müssen. Ab Puppet 0.25 können Sie reguläre Ausdrücke im Knotennamen verwenden, zB:

node server[0-9] inherits base {}

Lassen Sie mich in Kommentaren wissen, wenn Sie weitere Erläuterungen benötigen.

Richten Sie einen Client ein, um mit dem Puppenmeister zu sprechen

Auf dem Client müssen Sie Folgendes tun:

sudo apt-get install puppet

Dann editieren /etc/default/puppetund wechseln START=nozu START=yes.

Bearbeiten Sie /etc/puppet/puppet.confauch den [main]Abschnitt und fügen Sie eine Linie hinzu, um anzugeben, wo sich der Puppenmeister befindet:

server=puppet.mydomain.com

Dann können wir einen Testlauf mit machen sudo puppetd --test. Wenn Sie Schlüsselfehler erhalten, müssen Sie möglicherweise zum Puppet Master-Server weitergehen und den Client-Schlüssel signieren. Um den genauen Namen zu überprüfen, können Sie sudo puppetca --listund dann sudo puppetca --sign server1.mydomain.com(oder was auch immer der Servername aus dem Befehl list war).

Starten Sie nun den Puppenservice mit sudo service puppet startund Sie sollten abwesend sein. Der Puppenservice wird stündlich ausgeführt. Wenn Sie also Ihre Puppenrezepte aktualisieren, werden auch alle Ihre Kunden aktualisiert.

Dateien löschen

Ich stelle in der ursprünglichen Frage fest, dass Sie wissen wollten, wie man Dateien löscht. Du würdest das bearbeiten manifests/init.ppwerden

file { "/home/operator1/Desktop/Backup/datas.xls":
    ensure => absent,
}

Andere nützliche Tipps

Wenn Sie Probleme haben, können Sie einige Dinge tun. Auf jedem Computer mit installierter Marionette können Sie Ihre Syntax überprüfen, indem Sie ausführen

puppet --parseonly --ignoreimport myfile.pp

oder überprüfe die ganze Menge, indem --ignoreimportdu die Flagge entfernst, obwohl das zu einigen lustigen Fehlermeldungen führen kann, die nicht wirklich Fehler sind, die ich gefunden habe. Sie können Puppet auch live auf einem Puppet-Client-Computer ausführen, indem Sie folgende Schritte ausführen:

sudo puppetd --test

Hier werden verschiedene nützliche Ausgaben angezeigt, wobei Fehler und Warnungen in verschiedenen Farben hervorgehoben werden. Wenn Sie noch mehr Details möchten, können Sie Folgendes ausführen:

sudo puppetd --test --debug

Aber das erzeugt im Allgemeinen so viel Output, dass es schwierig ist, durchzuwaten. Tun Sie dies nur, wenn Sie die vorherigen Schritte bereits ausprobiert haben und nicht weiterkommen und sehen müssen, dass alles erledigt wird.

Beachten Sie, dass dies auf Puppet 0.25.x basiert, was ich derzeit bei der Arbeit verwende, und auch die Version in Ubuntu 10.04 ist. Der Puppet-Code im Hauptabschnitt wird auf jeden Fall noch funktionieren, aber spätere Versionen von Puppet haben neue Flags, die beim Debuggen der Ausgabe helfen können.

Hamish Downer
quelle
Lassen Sie mich diese Lösung heute Abend ausprobieren und Sie über die Aktualisierungen informieren. Vielen Dank :)
karthick87
Wie man diese Zeile ändert, befindet sich puppet:///modules/module_name/datas.xlsdie zu kopierende Datei an diesem Ort/etc/puppet/modules/mymodule/manifests/datas.xls
karthick87
Die zu kopierende Datei sollte eingefügt werden /etc/puppet/modules/mymodule/files/datas.xls- ich aktualisiere die Antwort, um diesbezüglich klarer zu sein.
Hamish Downer
Oke, danke. wie man die Manifeste laufen lässt?
karthick87
Wie wende ich dieses Modul auf alle Knoten von Puppetmaster an? Anstatt es mit Kraft auf jeden Knoten anzuwendenpuppet agent --test
karthick87