2016-06-14 10 views
1

Ich möchte ein Verzeichnis auf meinem Salz-Master haben, das mit dem Windows 7-Minion, den ich gerade betreibe, synchronisiert wird. Ich habe versucht mit schedule.present, aber ich hatte sehr wenig Glück. Ich bin mir nicht sicher, was mein Problem damit ist, aber ich denke auch, dass dies nicht der beste Weg ist, um meine Aufgabe zu erfüllen.Wie bekomme ich den Zeitplan, um im Salzstapel zu arbeiten?

Hier ist, was meine Umgebung aussieht:

Salz-Master

OS: CentOS7

Salz Version: 2016.3.0


Salz-Günstling

OS: Ubuntu 14.04

Salz Version: 2016.3.0


Hier ist meine aktuelle Konfiguration:

init.sls

syncFiles: 
    schedule.present: 
    - function: /home/user/directory 
    - seconds: 30 
    - splay: 10 

/home/user/directory: 
    file.recurse: 
    - source: salt://source/directory/ 

Wenn ich dies ausführen, wird alles erfolgreich zurückgegeben, und mirrordirectory läuft das erste Mal wie erwartet, aber keine Male in der Zukunft.

Die Debug-Ausgabe vom Diener ist dies.

[INFO ] Invalid function: mirrordirectory in scheduled job syncFiles. 

Ich vermute, ich die Funktion auf dem Günstling setzen müssen, aber ich kann nicht, dass überall in der Dokumentation.

Wenn es eine Möglichkeit gibt, dies zu tun, ohne eine Funktion auf den Diener zu setzen, bin ich daran interessiert zu wissen, was es ist, aber ich möchte zumindest lernen, wie man Zeitpläne in Salatsack laufen lässt.

Jede Hilfe wird geschätzt.


Side Hinweis

Schließlich Das wird ein Windows 7 Günstling sein, statt ubuntu, ich versuche nur das erste an der Arbeit. 1


UPDATE

Hier ist, was ich versucht habe, auf der Grundlage der Antwort unten (und es funktioniert immer noch nicht).

/srv/salt/mirrordirectory/init.sls

syncFiles: 
    schedule.present: 
    - function: state.sls 
- job_args: 
    - testfile 
- seconds: 30 
- splay: 10 

/srv/salt/testfile.sls

/tmp/foo: 
    file.recurse: 
    - source: salt://files 

/srv/salt/top.sls

base: 
    '*': 
    - mirrordirectory 

/srv/Salz/Dateien

Dieses Verzeichnis enthält Dateien

synchronisiert

Masterwiederkehr alle Erfolg werden:

myminion: 
---------- 
      ID: syncFiles 
    Function: schedule.present 
     Result: True 
    Comment: Job syncFiles in correct state 
    Started: 16:18:22.290216 
    Duration: 140.989 ms 
    Changes: 

Summary for myminion 
------------ 
Succeeded: 1 
Failed: 0 
------------ 
Total states run:  1 

Die Debug auf dem Günstling ein Problem zeigt:

[DEBUG ] Sending event - data = {'fun_args': ['testfile'], 'jid': 'req', 'return': ["No matching sls found for 'testfile' in env 'base'"], 'retcode': 1, 'success': True, 'schedule': 'syncFiles', 'cmd': '_return', 'pid': 24448, '_stamp': '2016-06-15T21:19:57.928894', 'fun': 'state.sls', 'id': 'myminion'} 
[DEBUG ] Handling event tag '__schedule_return' 
[INFO ] Returning information for job: req 

Diese Linie scheint zu sein, das Problem ["No matching sls found for 'testfile' in env 'base'"] . Irgendeine Idee, warum es die Datei nicht finden kann?


UPDATE 2

/etc/Salz/Master

interface: 192.168.0.1 
user: salt 

Das sind die einzigen zwei Zeilen in meiner Master-Konfigurationsdatei. Ich wollte testen, ob ich als Benutzer anders als root laufen würde, und alles funktionierte gut, nachdem ich einige Dateiberechtigungen geändert hatte. Vielleicht ist das das Problem ... vielleicht habe ich etwas verpasst.

+0

Ich habe gerade genau die gleichen Salzkonfigurationen probiert und es hat wie ein Zauber für mich funktioniert. Ich vermute, dass möglicherweise ein Problem mit der Konfiguration Ihres Salt-Masters vorliegt. Hast du es in irgendeiner Weise vom Standard geändert? Kannst du es bitte hier einfügen? – alexK

+0

Das einzige, was ich geändert habe, ist der '' 'Benutzer: root''' zu' '' user: salt'''. Ich werde meine Konfigurationsdatei in die Frage einfügen. Nochmals vielen Dank für die Hilfe. – trueCamelType

+0

Nur für den Fall, dass es das Problem verursacht, ich habe die Benutzer: root-Linie, und es läuft wieder als root. Das schien nicht zu helfen. – trueCamelType

Antwort

1

Die Funktion für schedule.present muss eine Salzfunktion sein. In Ihrem Fall ist wahrscheinlich, was Sie tun möchten, state.sls zu verwenden. Hier ist ein Beispiel ähnlich dem, was Sie haben, dass für mich gearbeitet:

foo.sls

syncFiles: 
    schedule.present: 
    - function: state.sls 
    - job_args: 
     - testfile 
    - seconds: 30 
    - splay: 10 

testfile.sls

/tmp/foo: 
    file.recurse: 
    - source: salt://files 

top.sls

base: 
    '*': 
    - foo 

Also, was hier passiert ist - top.sls gilt foo.sls zu einem Diener. foo.sls wiederum macht alle 30 Sekunden einen Minion testfile.sls anwenden.

Hoffe, das hilft!

+0

Das beantwortet es perfekt, danke! – trueCamelType

+0

Ich habe immer noch ein Problem. Ich habe das Ende meiner Frage mit meinen aktuellen Debug-Sachen aktualisiert. Es scheint, dass es die Testdateidatei nicht finden kann. – trueCamelType