在位于Puppet服务器而不是客户端上的文件上运行BASH命令

时间:2016-12-12 20:39:38

标签: bash puppet selinux

我试图找到一种方法在位于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',
  }
}

对此的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

你可以使用Puppet的generate()函数在目录编译期间在master上运行命令并捕获它们的输出,但这很少是一件好事,特别是如果所讨论的命令很昂贵。如果您打算将结果输出传输到客户端以供某种用途,那么您还需要特别注意确保它适合客户端,如果客户端与客户端的区别太大,则可能不是这样。服务器

  

我正在尝试找到一种方法在位于puppet服务器上的SELinux .te文件上运行命令,但不是客户端(我使用puppetforge中的puppet-selinux模块将.te文件编译成.pp模块文件,所以我在客户端服务器上不需要它

最简单的方法是从交互式shell直接运行所需的命令,直接,并将结果放入代理可以通过Puppet或其获取的文件中,或者通过Puppet或除此以外。只有在动态生成类型强制文件时,每次构建目录时编译它都是有意义的。

但是,我建议你构建一个包含selinux策略文件和任何所需安装脚本的软件包(RPM,DEB等)。将该包放在本地存储库中,并通过Package资源进行管理。