2015-06-25 9 views
5

Zur Zeit habe ich die folgende Regel ein Verzeichnis für die Erstellung vonsaltstack: Erstellen des Verzeichnisses nur dann, wenn nicht existiert

/init/dir: 
    file.recurse: 
    - source: salt://init_dir/init 
    - user: name 
    - group: group 
    - name: /path/init 
    - dir_mode: 2775 
    - file_mode: 777 

Jetzt habe ich nur ein Verzeichnis auf neue Schergen erstellen möchten, wenn das Verzeichnis nicht bereits vorhanden ist.

+0

Ich sehe Ihren Punkt nicht, Salz immer nur gelten, wenn sie nicht bereits angewendet werden. Ein Verzeichnis trotzdem zu erstellen verhält sich immer so (unabhängig von Salz). – Oberix

Antwort

10

Während Ihr Beispiel funktioniert, ist es nicht notwendig. file.directory versucht nur das Verzeichnis zu erstellen, wenn es nicht existiert.

+0

Eigentlich hast du recht, ich war mir dessen nicht bewusst. – cmidi

+0

In einigen Fällen schlägt file.directory fehl, wenn das Verzeichnis existiert. Wenn das Verzeichnis zum Beispiel ein Mount-Punkt für ein FUSE-Dateisystem ist, wird der Mount-Punkt als eine Datei angezeigt, wenn das Dateisystem eingehängt wird, wodurch der Status file.directory fehlschlägt. –

6

Es stellte sich heraus, dass es ziemlich einfach und gut dokumentiert in der Salzstapel-Dokumentation ist. Unten ist, was ich gefunden habe.

{% if not salt['file.directory_exists' ]('/home/init_dir') %} 
/home/init_dir: 
    file.directory: 
    - user: user 
    - name: /home/init_dir 
    - group: group 
    - mode: 755 
{% else %} 
    cmd.run: 
    - name: echo "Directory exists" 
{% endif %} 
+0

Wenn Sie das Verzeichnis erstellen möchten, wenn es nicht existiert, genügt ein einfaches "file.directory". 'Makedirs = True' verwenden, wenn das Wurzelverzeichnis nicht existiert. Ich benutzte dies, um Modi/Dauerwellen in einem SLS zu setzen, wenn es existierte (mit der Option 'recurse'). – sastorsl