在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的较新版本,我怎样才能提取文件?
答案 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文件中。