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