我试图找到一种方法在位于puppet服务器上的SELinux .te文件上运行命令,但不是客户端(我使用puppetforge中的puppet-selinux模块来编译.te将文件存入.pp模块文件,因此我不需要在客户端服务器上使用它。我的基本想法是:
this.registerReceiver(null, ifilter);
虽然当我尝试在客户端服务器上运行它时,我得到了:
class security::selinux_module {
exec { 'selinux_module_check':
command => "grep module selinux_module_source.te | awk '{print $3}' | sed 's/;//' > /tmp/selinux_module_check.txt",
source => 'puppet:///modules/security/selinux_module_source.te',
}
}
对此的任何帮助将不胜感激。
答案 0 :(得分:1)
你可以使用Puppet的generate()
函数在目录编译期间在master上运行命令并捕获它们的输出,但这很少是一件好事,特别是如果所讨论的命令很昂贵。如果您打算将结果输出传输到客户端以供某种用途,那么您还需要特别注意确保它适合客户端,如果客户端与客户端的区别太大,则可能不是这样。服务器
我正在尝试找到一种方法在位于puppet服务器上的SELinux .te文件上运行命令,但不是客户端(我使用puppetforge中的puppet-selinux模块将.te文件编译成.pp模块文件,所以我在客户端服务器上不需要它
最简单的方法是从交互式shell直接运行所需的命令,直接,并将结果放入代理可以通过Puppet或其获取的文件中,或者通过Puppet或除此以外。只有在动态生成类型强制文件时,每次构建目录时编译它都是有意义的。
但是,我建议你构建一个包含selinux策略文件和任何所需安装脚本的软件包(RPM,DEB等)。将该包放在本地存储库中,并通过Package
资源进行管理。