Назад | Перейти на главную страницу

SaltStack: делать x, если существует / var / log / backup

Я хочу выполнить это состояние:

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

Таким образом, в сводке вы увидите неудачное состояние, поэтому оно не будет полностью прозрачным, как в подходах 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

Только если должно работать:

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

Видеть: https://docs.saltstack.com/en/latest/ref/states/requisites.html#onlyif