SaltStack:如果/ var / log / backup存在,请执行x

我想执行这个状态:

backup_log_readable: acl.present: - name: /var/log/backup - acl_type: user - acl_name: monitor - perms: rx - recurse: True 

但是只有在/var/log/backup存在时才会发生这种情况。

如何做盐这样的条件?

除了onlyif: test -d /var/log/backup方法(可能是最好的方法),您可以:

1)如果出现以下情况,请用忍者包裹一切:

 {%- if salt['file.directory_exists' ]('/var/log/backup') %} backup_log_readable: acl.present: - name: /var/log/backup - acl_type: user - acl_name: monitor - perms: rx - recurse: True {%- endif %} 

2)使用file.exists状态作为必要条件:

 backup_log_exists: file.exists: - name: /var/log/backup backup_log_readable: acl.present: - name: /var/log/backup - acl_type: user - acl_name: monitor - perms: rx - recurse: True - require: - file: backup_log_exists 

这样你会在摘要中看到一个失败的状态,所以就像唯一的和忍者的方法一样,它不会是完全透明的

3)在运行acl状态之前创build目录:

 backup_log_dir: file.directory: - name: /var/log/backup backup_log_readable: acl.present: - name: /var/log/backup - acl_type: user - acl_name: monitor - perms: rx - recurse: True - require: - file: backup_log_dir 

Onlyif应该工作:

 - onlyif: - test -d /var/log/backup 

请参阅: https : //docs.saltstack.com/en/latest/ref/states/requisites.html#onlyif