0

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

有没有办法做到这一点?

4

1 回答 1

1

有没有办法做到这一点?

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

因为插件在目录构建范围之外同步,所以 pluginsync 无法知道给定节点的目录是否将包含来自任何特定模块的任何类或资源,因此无法使用这些信息来过滤插件。Current Puppet 确实付出了相当大的努力来正确识别节点的环境以同步正确的插件版本,但充其量只能告诉您节点是否可以使用给定的模块,而不是它是否会这样做。

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

通过限制您的事实实施,您的总体目标可能会得到满足。这不会阻止它被部署,但它可以阻止对事实进行评估或报告。

于 2016-06-08T17:14:30.160 回答