资源属性可以依赖于文件存在吗?

时间:2016-04-09 04:25:40

标签: linux puppet yum

我正在编写一个模块,它将在我们的网络上提供镜像的yum-repositories。单个服务器将托管镜像,将镜像提供给其他主机(及其自身)。

我的初始鸡蛋和鸡蛋有问题 - 第一次下载可能暂时不会发生,但是,如果我在镜像脚本完成第一次运行之前启用了新的存储库,我就无法安装由于yum-failure导致的任何包。但是稍后需要启用它......

我可以拥有enabled的{​​{1}} - 属性 - 资源取决于Puppet运行时yumrepo是否存在?

我想到了"${repodir}/repodata/repomd.xml",但它在Puppet-server上运行,而不是客户端。在Puppet本身(没有自定义函数)的情况下可以做任何其他事情吗?

也许,该属性可以通过inline_template是否发生来触发 - 然后我可以Exec以文件的存在为条件Exec - 属性?

我们现在还在Puppet-3.7.5 ......谢谢!

1 个答案:

答案 0 :(得分:1)

  

我想到了inline_template,但它在[服务器]上运行,而不是[客户端]。

我不明白为什么会出现问题。您要评估的条件并非特定于客户;相反,它是网络(镜像服务器)上具有站点范围重要性的特定计算机的属性。据我所知,在目录编译期间在主服务器上评估该条件不应该存在任何固有的问题。

这对您来说是个好消息,因为所有托管属性值都是在目录构建期间确定的。无法表达间接或待评估的属性值。如果要将从目标节点中提取的信息合并到其目录中,则必须从事实中收集该信息(可能是自定义事实),或者管理该信息。

我想到了两个解决问题的方法:

  1. 您可以使用generate()功能(在主服务器上)运行命令,以确定特定镜像是否准备就绪。如果主服务器不在承载镜像的同一台计算机上运行,​​则需要一些主机远程查询镜像主机的机制。

  2. 您可以使用镜像主机上的自定义事实来报告存在和准备好的存储库,并根据该信息将导出相应的Yumrepo资源包含在内的所有节点都要收集。