是否有一个 Ansible 模块允许添加 SELinux 上下文等效性?命令是:
semanage fcontext -a -e /home/xxx /srv/xxx
这使得 SELinux 被视为/srv/xxx
等同于/home/xxx
。
虽然我可以使用该command
模块,但它只能工作一次;之后它总是失败:
ValueError: Equivalence class for /srv/xxx already exists
我可以使用该shell
模块并运行如下命令:
semanage fcontext -a -e /home/xxx /srv/xxx || true
但由于该命令每次运行,Ansible 总是报告某些内容发生了变化(即使上下文等价已经存在)。
答案1
最接近的 Ansible 模块semanage fcontext
是社区.general.sefcontext。看起来它是幂等的并且支持 diff 模式。
但是,--equal
我找不到与之等同的东西。将您想要的上下文写为参数setype
。例如user_home_t
。在这种情况下,我更希望事实来源是剧本,而不是主机上的其他文件。
如果您愿意--equal
,请考虑自己编写并提交该模块的增强请求。
答案2
这社区.general.sefcontext模块substitute
在 community.general 6.4.0 中添加了一个参数来支持此功能
如果您尝试使用它并看到一条消息,missing required arguments: setype
则表示您的 community.general 版本太旧了。