我正在开发一个使用JBoss,PostgreSQL等的应用程序......
JBoss需要许多不同的配置,例如数据源,电子邮件服务器,安全性等。 我该如何处理这些配置?整个JBoss应该归入VCS吗?
或者这只是您必须为每个生产服务器配置的东西,然后使用一些虚拟化映像进行开发?
答案 0 :(得分:0)
好吧,将整个JBoss存储在VCS中根本不是一个选择。它主要是二进制的东西,配置的大小比JAR的大小小得多。那些JAR永远不会改变。 不要将JBoss(或任何其他二进制发行版)放在VCS中。
我看到了几种解决问题的方法。
首先,您只能在Git中存储所需的配置。这是最基本的,而不是非常灵活的解决方案。例如,您可以在真实服务器上的git repo配置中执行符号链接,但只有在服务器提取了这些存储库时才可以使用它。在我的练习中,我从未见过这样的服务器布局。
或者您可以将配置存储在git中,并拥有一个可在真实环境中更新它们的工具。有一次,在我的实践中,我们有一组基于Perl的脚本。它非常简单,你可以完全控制,但不是非标准化的。这是一种发明自行车的方式。
正如您在问题中提到的,您可以使用VM映像来实现此功能。如果你有不频繁的更新,这是很好的,因为每次更新配置时重新安装整个VM可能会很痛苦。另外,关于你如何更新这些图像?您的CI服务器可以制作图像吗?这非常棘手,imho。
我个人要挖掘的方向是使用chef,puppet或ansible等工具。它与VM映像方法非常相似,但您可以在每台“侦听”配置更新并采取所需操作的计算机上安装客户端。此外,它是一个众所周知的工具,拥有大型社区,因此很容易找到帮助或支持。无论如何,您可以发现将样本配置存储在主代码库中对于那些想要在没有安装这些工具的情况下在自己的机器上使用它们的开发人员很有用。