5

kommt Wenn Sie sich einen Host anschauen, der mit SaltStack eingerichtet wurde, dann sieht es manchmal so aus, als würde man eine Binärdatei mit vi betrachten.SaltStack: Reverse Engineering, wo eine Datei von

Sie haben keine Ahnung, wie die Config/Datei erstellt wurde.

Dies erschwert die Fehlersuche. Reverse Engineering, wo eine Datei herkommt, braucht zu viel Zeit.

Mein Ziel: Machen Sie es leicht, den Weg von der Unix-Konfigurationsdatei auf dem Minion (erstellt von salt) zur Quelle zu finden, von der diese Konfiguration kam. Wie $Id$ in Svn und CVS.

Eine Idee ein Freund und ich hatte:

Der Staat file.managed sollte (optional), um die Quelle der Datei hinzuzufügen.

Beispiel:

Meine sls Datei dieses enthält:

file_foo_bar: 
    file.managed: 
    - source: 
     - salt://foo/bar 

Dann sollten Sie die erstellte Datei diesen Kommentar enthalten.

# Source: salt://foo/bar 

Natürlich ist dies nicht einfach, da es verschiedene Möglichkeiten gibt, Kommentare in Konfigurationsdateien zu schreiben.

Ist das machbar? Oder gibt es eine bessere Lösung für mein Ziel?

aktualisieren

Normalerweise weiß ich, was ich falsch gemacht habe und einfach die Wurzel finden. Das Problem tritt auf, wenn mehrere Personen an einem Statusbaum arbeiten.

+0

Es scheint schwierig zu implementieren. Warum schreibst du diesen Kommentar nicht einfach in deine Datei? –

+1

@ ChristopheDrevet-Droguet Warum schreibe ich keinen Kommentar in die Datei selbst? Ich bin faul. Ich möchte alles automatisieren, was automatisiert werden kann. Es ist wie Kommentare im Code: früher oder später sind sie Lügen, da sich der Code entwickelt, aber die Kommentare nicht. – guettli

+0

anstatt die binäre Datei in vim zu lesen, warum nicht direkt die Zustände lesen und nur den Diener überprüfen, wenn sie das erwartete Ergebnis haben? – dahrens

Antwort

1

Dies ist ein Startpunkt, an dem Sie das Datum und die Uhrzeit der geänderten Datei abrufen können, wenn sie von Salt unter Verwendung von Salt Pillar verwaltet wird.

Rufen wir unsere Variable salt_managed. Erstellen Sie eine Säule Datei wie folgt aus:

{% set managed_text = 'Salt managed: File modified on ' + salt.cmd.run('date "+%Y-%m-%d %H:%M:%S"') %} 

salt_managed: {{ managed_text | yaml_dquote }} 

Dann auf dem Günstling, wenn Sie die Säule rufen Sie das folgende Ergebnis erhalten:

$ salt-call pillar.get salt_managed 
local: 
    Salt managed: File modified on 2016-10-18 11:12:40 

Und Sie können dies nutzen, indem es auf der Oberseite Zugabe von Ihre Konfigurationsdateien zum Beispiel wie folgt aus:

{{ pillar.get('salt_managed') }} 

Update:

ich eine Arbeit ein gefundenes Runde, die für jemanden nützlich sein könnte. Nehmen wir an, wir haben mehrere Zustände, die dieselbe Datei modifizieren könnten. Wie können wir wissen, dass State X für das Ändern dieser Datei zuständig ist?durch die folgenden Schritte tun:

1- ich einen Zustand wie diese erstellt haben:

Create a File: 
    file.managed: 
    - name: /path/to/foofile 
    - source: salt://statedir/barfile 
Add file header: 
    file.prepend: 
    - name: /path/to/foofile 
    - text: "This file was managed by using this salt state {{ sls }}" 

Der Inhalt barfile ist:

This is a new file 

2- Rufen Sie den Zustand aus der Günstling und

$ salt-call state.sls statedir.test 
local: 
---------- 
      ID: Create a File 
    Function: file.managed 
     Name: /path/to/foofile 
     Result: True 
    Comment: File /path/to/foofile updated 
    Started: 07:50:45.254994 
    Duration: 1034.585 ms 
    Changes: 
       ---------- 
       diff: 
        New file 
       mode: 
        0644 
---------- 
      ID: Add file header 
    Function: file.prepend 
     Name: /path/to/foofile 
     Result: True 
    Comment: Prepended 1 lines 
    Started: 07:50:46.289766 
    Duration: 3.69 ms 
    Changes: 
       ---------- 
       diff: 
        --- 
        +++ 
        @@ -1,1 +1,2 @@ 
        +This file was managed by using this salt state statedir.test 
        This is a new file 

Summary for local 
------------ 
Succeeded: 2 (changed=2) 
Failed: 0 
------------ 
Total states run:  2 

Zur Zeit der Gehalt an foofile ist: dies ist das Ergebnis

This file was managed by using this salt state statedir.test 
This is a new file