Я хочу выполнить это состояние:
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