仅将自定义事实部署到运行给定模块的客户端

时间:2016-06-08 14:29:02

标签: module puppet facter

我正在尝试为linux服务器编写一个自定义事实,它将为我提供特定文件夹下的所有文件夹。问题是我需要将它部署在运行包含事实的模块的客户端上 - 它不能部署到连接到同一主服务器的其他客户端。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

  

有办法做到这一点吗?

不,不是真正的自定义事实。插件(包括自定义事实)在目录构建之前同步 - 事实上,在任何实际目录请求之前。这是必要的,至少对于自定义事实而言,因为否则这些事实的值不能用于目录构建。

因为插件在目录构建范围之外同步,所以pluginsync无法知道给定节点的目录是否包含来自任何特定模块的任何类或资源,因此无法使用此类信息来过滤插件。当前Puppet确实需要付出相当大的努力才能正确识别节点的环境,以便同步正确的插件版本,但最多只能告诉您节点是否使用给定模块,而不是它是否会执行

您可以使用File资源管理的外部事实大致完成您所描述的内容,但在这种情况下,您直接负责确定是否管理该文件,以及每次客户端发出目录请求时,它将使用之前的 Puppet运行提供的事实定义。如果您可以通过引导问题并且仔细管理事实实现更改的推出,那么这可能没问题。

您的总体目标可能由confining您的事实实施提供。这并不妨碍它被部署,但它可以防止对事实进行评估或报告。