我有安装自定义
selinux
模块的代码。在我的 Minion 舰队中,有基于 Fedora 的系统(安装了 SELinux)和基于 Debian 的系统(没有安装 SELinux)。对于后者,不应使用模块/安装状态,因此我正在寻找一种方法来检索“此系统上是否安装了 SELinux?”这个问题的简洁答案。 (NOT“SELinux 在此系统上强制执行吗?”)在相应的 jinja2
if
子句中使用。
让我绝望的尝试是:
$PATH
上 - 检查 sestatus
就是我在这里所追求的。salt.states.selinux
在没有 SELinux 的系统上不可用,因此它的功能没有帮助。salt.states.selinux
(见上文)之类的东西的本地可用性。- unless: - rpm -q libselinux
(来自这个答案)也不起作用,因为rpm
是Fedora特定的......任何有关如何进行此操作的提示都值得赞赏。
如果安装了selinux,则agrain可用:
{% if 'selinux' in grains %}
# stuff that's only included if selinux is available
{% endif %}
您还可以使用该颗粒来瞄准小兵:
base:
'selinux:*':
- match: grain
- my_states.for_selinux_only
一般情况下,你还可以检查模块是否已加载:
{% if 'selinux.getconfig' in salt %}
按照this提示,我最终做了:
{% if salt['pkg.version']('libselinux') %}
...
{% endif %}
这不是我所说的简洁并使用有些复杂的逻辑,但它似乎可以解决问题。