如果我的文件没有改变,如何在saltstack中阻止module.run?

时间:2014-09-05 20:39:18

标签: windows salt-stack

在SaltStack的2010.7版本中,onchanges元素可用于州。但是,该版本尚不适用于Windows,所以就这样了。

不幸的是,salt不使用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的较新版本,我怎样才能提取文件

1 个答案:

答案 0 :(得分:2)

我可能会使用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 %}

如果已经解压缩了zip文件,这将导致extract_nginx状态不出现在最终渲染的sls文件中。