1)
Один из способов решения этой проблемы - использование параметра onlyif
для salt.states.cmd.run :
# Ensures that outbound connections are allowed for httpd
httpd:selinux:
cmd.run:
- name: /usr/sbin/setsebool -P httpd_can_network_connect 1
- onlyif:
- 'if [[ $(getenforce) == "Disabled" ]]; then exit 1; else exit 0; fi' # if SELinux is disabled, then don't enforce this state
Это очень быстрый и простой способ решения этой проблемы, и, поскольку мы имеем дело с командами Shell в этом примере, это, вероятно, наиболее предпочтительный способ.
Обратите внимание, что onlyif
зависит от кода состояния возврата тестируемой команды, поэтому, если требуется большая гибкость, это может быть не то, что вы ищете.
2)
Другой способ - получить доступ к исполнительным модулям с помощью шаблонов jinja, обернуть ваше состояние в следующее условие:
{% if salt.selinux.getenforce() == "Disabled" %}
httpd:selinux:
...
{% endif %}
Это более гибкое решение, но оно занимает немного больше места.
Более подробная информация о: salt.modules.selinux.getenforce ()