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

gue*_*tli 0 conditional saltstack

我想执行这个状态:

backup_log_readable:
  acl.present:
    - name: /var/log/backup
    - acl_type: user
    - acl_name: monitor
    - perms: rx
    - recurse: True
Run Code Online (Sandbox Code Playgroud)

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

如何在盐中做到这样的条件?

小智 8

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

1)用 jinja 包裹所有东西,如果:

{%- 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 %}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

这样你会在摘要中看到一个失败的状态,所以它不会像 onlyif 和 jinja 方法那样完全透明

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

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
Run Code Online (Sandbox Code Playgroud)