2013-12-23 8 views
6

Ich bin neu zu Salz-Stack.Ersetzen einer Datei durch eine symbolische Verbindung in einem Salzzustand

Ich versuche sicherzustellen, dass eine symbolische Verbindung besteht.

/etc/localtime: 
    file.symlink: 
    - target: /usr/share/zoneinfo/Europe/Paris 
    - file.exists: 
     - name: /usr/share/zoneinfo/Europe/Paris 

Das Ergebnis ist wie ausgenommen, wenn es keine bestehenden /etc/localtime ist, oder wenn /etc/localtime ist bereits ein symbolischer Link. Aber es schlägt fehl, wenn /etc/localtime eine reguläre Datei ist:

---------- 
State: - file 
Name:  /etc/localtime 
Function: symlink 
    Result: False 
    Comment: File exists where the symlink /etc/localtime should be 
    Changes: 

Ich kann nicht verstehen, wie man den Zustand codieren, so dass die Datei vor der Verlinkung gelöscht. Irgendeine Ahnung ?

Cheers, Pierre

Antwort

13

Verwenden force=True

/etc/locatime: 
    file.symlink: 
    - target: /usr/share/zoneinfo/Europe/Paris 
    - force: True 
    # Note: file.exists is not valid here and can be removed 
    # file.exists: 
    # - name: /usr/share/zoneinfo/Europe/Paris 

Von the documentation:

Wenn das Ziel der Symlink existiert und ist kein Symlink und Kraft wird auf False festgelegt, der Staat wird scheitern. Wenn Kraft auf True, die Datei oder das Verzeichnis in der Art und Weise der Symlink-Datei wird gelöscht gesetzt ist Raum für die Symlink zu machen, es sei denn Sicherungsname festgelegt wird, wenn es

+1

umbenannt werden ohhh ... es funktioniert gut. Danke vielmals ! – Pierre

+0

Ich glaube nicht, dass "file.exists" irgendetwas in diesem Beispiel tut. Es wird nur ignoriert, weil es keine gültige Option für "file.symlink" –

+0

Hrm ist. @Pierre Ich habe die letzten zwei Zeilen entfernt, können Sie bestätigen, dass es immer noch funktioniert? –