0

比方说,我有使用我的问题标题中提到的工具建立了一个华丽的CI和CD管道。什么是变量保持同步一个很好的解决方案 - Terraform,厨师,詹金斯,八达通部署

让我们也说,有配置文件和其他东西是参数化在所有这些系统的变量。事实上,有时需要在所有变量上进行匹配。主机名,端口,连接字符串等...

我该如何或有什么工具可以将这些变量保留在一个地方或至少保持它们在需要时保持同步至?

我最好的想法到目前为止是写一些自动化测试,但由于变量通常存储在系统本身,这感觉有点笨重。我可以将源代码中的变量存储在更多的配置文件中,但其中一些是安全变量(生产密码等),这也有点妥协。

有一吨的这些变量的,我可以看到它成为一个真正的问题,我越低着头这条道路。

有没有人解决过这个问题呢?

+0

您的配置是否与软件分离?或者,您是否将配置直接烘焙到您的二进制文件中,而无法在CI/CD管道中稍后更改它们? – Bricktop

+0

配置在配置文件中被标记。 – Stimul8d

+0

这听起来像Consul的一个很好的用例 - https://www.consul.io/。你可以解决你的“同步”问题,也可以解决安全变量的存储问题。 –

回答

3

你的配置管理系统(厨师),应负责水暖所有变量到您的CI系统。 Terraform状态和其他数据库将不得不单独保存,但您的CM系统应该通知其他工具“当前工作数据库的存在位置”。

有很多不同的方法来验证不同层次的变量 - 厨师的Policyfile的东西试图将它移动到构建时的东西,例如,但你可以做的最重要的事情是尽量减少差异环境之间。许多人从一系列清洁的部署阶段开始,然后三年后,每个人都非常狂野,毛茸茸,怪异,以至于舞台失去了大部分效用。作为一贯的倡导者,“每件事情都是一样的,即使它更难更昂贵”是一项重要的政治工作。