2015-06-25 9 views
5

Attualmente ho la seguente regola per la creazione di una directorysaltstack: la creazione di directory solo se non lo fa esiste

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

Ora voglio creare una directory sui nuovi servi solo se la directory non esiste già.

+0

Non vedo il tuo punto, il sale applica sempre gli stati solo se non sono già applicati. Creare una directory comunque si comporta sempre come questo (indipendentemente dal sale). – Oberix

risposta

10

Mentre l'esempio funziona, non è necessario. file.directory tenterà di creare la directory solo se non esiste.

+0

In realtà hai ragione, non ne ero consapevole. – cmidi

+0

Ci sono alcuni casi in cui file.directory fallirà quando la directory esiste. Ad esempio, se la directory è un punto di montaggio per un filesystem FUSE, il punto di montaggio apparirà come un file quando viene montato il filesystem, causando il fallimento dello stato di file.directory. –

6

È risultato essere piuttosto semplice e ben documentato nella documentazione di stack di sale Di seguito è riportato ciò che è venuto fuori.

{% 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

Se il tuo scopo è quello di creare la directory, se non esiste un semplice "file.directory" sarà sufficiente. Usando 'makedirs = True' se la directory root non esiste. L'ho usato per impostare le modalità/permanenti in un SLS se esisteva (con l'opzione 'recurse') – sastorsl