根据我的经验,基于文本文件的配置管理系统带来的麻烦最少,至少应该优先为内部代码使用。有很多种方式去管理基于文本的配置。你可以使用源码处理系统管理,如Git。通过很多工具,如diff,可以降低调试出错配置的难度。如果情况紧急,你可以通过远程文本编辑器,如Emacs或者Vi,在服务器上直接编辑配置。
通过数据库来处理配置的方式不那么灵活。这是一种容易引起争议的反模式,通常在开发和运维团队隔得比较远的企业中出现,也是DevOps希望解决的目标。用数据库处理配置让应用栈运行更加困难。你需要一个工作的数据库才能让应用启动。
通过命令式的命令行API来管理配置设置同样也是让人怀疑的实践,但是有时候还是有用的,特别是在API用来管理底层基于文本的配置时。很多配置管理系统,如Puppet,
依赖于能够管理声明配置。如果我们通过其他方式管理配置,比如命令行命令式API,就失去了使用Puppet的好处。