从jenkins向puppet清单动态发送值

从jenkins向puppet清单动态发送值,puppet,hiera,Puppet,Hiera,我们使用puppet manifest/hiera在特定服务器中创建mysql docker实例。每次有对新数据库的请求时,我们都会在hiera中手动添加一个新条目,该条目由manifest选择,并创建docker实例。现在,我们需要通过jenkins自动化这个过程。是否有一种方法可以动态地将值发送给hiera,或者在代理系统中放置一些文件,并且puppet代理直接引用该文件来填充清单中引用的变量的值。我正在考虑以下选择。 1.从jenkins向hiera添加一个新条目,并提交我们在git中维护

我们使用puppet manifest/hiera在特定服务器中创建mysql docker实例。每次有对新数据库的请求时,我们都会在hiera中手动添加一个新条目,该条目由manifest选择,并创建docker实例。现在,我们需要通过jenkins自动化这个过程。是否有一种方法可以动态地将值发送给hiera,或者在代理系统中放置一些文件,并且puppet代理直接引用该文件来填充清单中引用的变量的值。我正在考虑以下选择。 1.从jenkins向hiera添加一个新条目,并提交我们在git中维护的文件,因此puppet代理使用该文件。这涉及到由于多次提交而导致的轻微失败风险。 2.在代理系统中有一些文件,puppet代理引用该文件来创建新的docker实例。 3.还有其他方法可以做到这一点吗

我欣赏你的想法

我正在考虑以下选择。1.将新条目添加到 jenkins的hiera并提交我们用git维护的文件,所以 此文件由puppet代理使用。这涉及到轻微的风险 由于多次提交而导致失败

撇开关于什么组件使用Hiera访问数据的混淆不谈,是的,这是一个可行的选择。可能也是最简单的,因为它构成了当前流程的直接自动化

在房间里放一些文件 代理系统中,puppet代理引用此文件创建新docker 实例。 对我来说似乎是可能的,但该文件来自何处,如何获得正确的内容?如果答案是这个,那么你还没有真正解决这个问题。然而,如果答案是其他任何东西,那么这种组合就构成了极为糟糕的风格,并且可能会在某个时候咬到你

还有其他方法可以做到这一点吗?
很多。但在那些看起来最吸引人的方法中,有可能添加一个从数据库而不是平面文件获取数据的方法。然后Jenkins可以将数据存储在数据库中,Puppet可以通过Hiera从数据库中读取数据,并具有您喜欢的任何级别的事务隔离和引用完整性。请注意,您不必切换到这一点,因为相同的Hiera配置可以从多个后端提取数据。有些DBMS已有Hiera后端,或者如果您愿意,编写自己的也不会那么复杂。

代理通常不会查阅Hiera或任何清单文件。master完成所有这些工作,构建要应用的类和资源的目录及其所有参数,并将其发送给代理以应用。选项2类似于您在选项3中建议的数据库选项。我没有使用DB,而是考虑使用位于代理计算机中的文件,该文件可以从jenkins更新。但是DB选项看起来非常复杂。@UdayaMehendale,比数据的放置方式更重要的是数据的去向,这也强烈影响了数据的检索方式和时间。从这个角度来看,我不同意任何将这些数据的主存储分配给目标机器的方法与在其他地方分配数据的方法特别相似。