Как предотвратить module.run в соляном стеке, если мой файл не изменился?

В 2010.7 версии SaltStack элемент onchanges доступны для штатов. Однако эта версия пока недоступна для Windows, так что это правильно.

И, к сожалению, соль не использует модуль zipfile для извлечения zip-файлов. Итак, я пытаюсь сделать это:

/path/to/nginx-1.7.4.zip:
    file.managed:
        - source: http://nginx.org/download/nginx-1.7.4.zip                        
        - source_hash: sha1=747987a475454d7a31d0da852fb9e4a2e80abe1d     

extract_nginx:
    module.run:
        - name: extract.zipfile
        - archive: /path/to/nginx-1.7.4.zip
        - path: /path/to/extract
        - require:
            - file: /path/to/nginx-1.7.4.zip

Но это пытается извлечь файлы каждый раз. Я не хочу, чтобы он это делал, я хочу, чтобы он извлекал файл только в том случае, если файл .zip изменится, потому что, как только он будет извлечен, он будет запущен (у меня есть кое-что, чтобы позаботиться об этом). И когда он запущен, я не могу перезаписать nginix.exe, потому что Windows такая классная.

Итак, как я могу извлечь файл только, если это более новая версия nginx?


person Wayne Werner    schedule 05.09.2014    source источник


Ответы (1)


Я бы, вероятно, использовал jinja для проверки существования файла, который, как вы знаете, будет существовать только в том случае, если zip-файл был извлечен.

{% if salt['file.exists']('/path/to/extract/known_file.txt') %}
extract_nginx:
    module.run:
        - name: extract.zipfile
        - archive: /path/to/nginx-1.7.4.zip
        - path: /path/to/extract
        - require:
            - file: /path/to/nginx-1.7.4.zip
{% endif %}

Это приведет к тому, что состояние extract_nginx не появится в окончательном отрендеренном файле sls, если zip-файл был распакован.

person Utah_Dave    schedule 08.09.2014