能否推荐一些配置管理(能做到配置整理)的工具?

某系统运行需要一大堆配置文件,当然最简单就java的ssh也有很多xml了
但是这个系统在多个环境下跑,每个环境的配置都不一样,一个字段可能在多个环境下值也不同
现在的问题是 如何有效管理这些配置文件 做到当修改了某个字段时 其他环境的配置文件不漏改
假设这些环境的配置文件文件名相同 目录结构相同 都可以以目录的形式访问 但是配置文件中字段顺序 有无无法保证一致性

最差的解决方案我想可能是自己写程序 遍历 然后diff成excel表格 人工检查
这样也行 但是编程量也不小 毕竟xml处理 excel都不简单

补充:
(1)由于系统过于庞大 无法将配置整合 修改格式 或者迁移到数据库
(2)所有的配置都是标准的xml格式 utf-8 有中文

阅读 3.9k
3 个回答

1.自定义一个新的配置文件,写程序解析这个配置文件来修改指定的文件内容。配置文件格式:

<os name="windows">
<file name="xxFile">
    <parmenters>
        <parmenter name="xxxx" value="abcd"/>
    <parmenters>
</file>
</os>
<os name="linux">
<file name="xxFile">
    <parmenters>
        <parmenter name="xxxx" value="efgh"/>
    <parmenters>
</file>
</os>

2.写个cmd or shell来实现,linux可以用sed替换不需要做你所说的遍历,cmd也有替换命令。

3.在安装的时候要有安装的选项,根据用户的选择来产生配置文件的内容。<- 基本上程序都是这么做的。

我们前段时间也被这个问题坑到了。我们最后的解决方案是采用类似于maven和grunt这样的工具定义一些适合不同场景的profile。比如dev,beta,prod。 在每一个profile中识别出不同的配置信息。将他们放到不同文件中。最终打包的时候选择不同的profile。这样就可打包出适合不同场景下的war。

对于不同的技术,一般都有类似的实现。比如grails中她就在Config.groovy中给定了不同的环境。这种东西一定要自动化,不要手动做。

宣传栏