我有一个木偶环境,需要在其中向单个服务器添加数量可变的非常相似的对象。对象仅因名称和路径等属性而异,所有这些属性都可以从单个名称参数中推断出来。
这似乎是对木偶资源定义的完美使用,因为可以向单个服务器添加多个定义,并且可以从定义名称声明中获取它们的特定属性。
这个设置对我来说很好,我在几台服务器上安装和运行它没有任何问题。然而,我现在有一个要求,那就是把它交给一个几乎没有脚本经验的操作部门,所以他们在文件系统中管理起来并不舒服。
他们要求一个仪表板,所以我为他们设置了木偶仪表板。然而,在我设置了仪表板之后,我发现它只支持向服务器添加类,而不支持定义。对于PuppetLabs的工作人员来说,这似乎很短视,所以我只能认为我处理这个问题的方式不对,必须有一个使用类的解决方案,通过类可以将多个几乎相同的实体添加到一个节点。
我意识到我可以为每个实体创建一个类,但有成百上千的潜在变体,所以这并不实际。
我还考虑了一个包装类,它在每个节点的基础上声明每个定义,但这似乎比它的价值更需要管理。
对与仪表板兼容的替代方法的任何想法都将不胜感激。
要使仪表板等ENC以这种方式工作,必须以节点变量的形式传入节点数据。注意,Hiera通常比普通节点变量更可取。
一般来说,你想要交的价值是你的资源标题的数组
$resources = [ "name1", "name2", ... ]
然后用(至少)一个类来分类你的节点,该类使用这些数据来表示你定义的类型,例如
class my_resources {
my_defined_type { $resources: }
}