我想执行这个状态:
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