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 существует.

Как сделать такие условия в соли?

2 ответа

Решение

В качестве альтернативы 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

Другие вопросы по тегам