我有一个设置,我们想让傀儡管理安装和配置我们的软件跨几个服务器,但能够安装不同版本的软件在不同的服务器。
例如,我希望能够为我们的1.0版创建一个包含服务器配置、依赖项等的傀儡模块,并为版本1.1创建一个单独的模块。通过单个傀儡主安装,我希望能够将一些节点配置为运行1.0版本,而将其他节点配置为运行1.1。
我看到模块允许包括版本在内的元数据,但看起来一次只能在傀儡主上安装一个模块的一个版本。
理想情况下,它是基于组的,我们可以定义一个“早期采用者”组和一个“正常”组,当我们想出新的版本时,我们可以设置早期采用者组使用新版本,而正常组使用第二个最老版本。
处理这件事的最好方法是什么?
发布于 2013-05-13 05:05:24
我建议使用一个以版本号作为参数的模块来实现这一点,如下所示:
class our_software ($version) {
...
}
您在该类中所做的事情取决于您的软件的两个版本有多少相同之处。您可能可以在类中直接包含所有配置文件,模板可以根据版本号为它们的设置选择正确的值,或者可以有两个单独的类,它们完全不同地设置每个版本的环境,主类根据版本号来决定包含哪一个。
如果您正在使用hiera (或其他一些外部查找),这允许您完全独立于“安装我们的软件”的代码指定所需的软件版本。
如果您想变得更漂亮,这个模块可以包含一个事实来指示当前安装了哪个版本的软件,这样您的模块就可以禁止类似于版本降级之类的事情(假设这在您的环境中是合适的)。
https://serverfault.com/questions/506758
复制