在工作中,往往会有很多个环境,比如开发环境,测试环境,预发布环境,和生产环境。
每个环境中的代码配置都是不一样的,比如db,cache,ip什么的。
为了保证公司的信息安全性,代码通用性,在版本控制里都只提交功能性的代码,并不包含数据库等配置信息。
而运维人员只需把版本控制的代码在服务器上更新,就可以使代码利用当前机器的环境运行起来。
想问下大家,你们所在的公司,一般都是通过哪些办法,来过滤掉敏感的配置信息的?同时还能方便的发布代码,保证不同服务器利用自身机器的配置。
我先说下我掌握的一些方法:1)环境变量2)加载父级的配置文件
我们用nginx的参数配置
可以用 ansible 做配置管理,其通过你定义好的 jinja2 模板文件 + 变量 来生成最终的配置文件。
比如这个 redis 例子:https://github.com/geerlinggu...
我自己写的一坨 ansible role 和 playbook 也都上传到公司内部的 svn 上作为独立的存在,和项目代码分离开。
svn 本身是有权限控制的,稍微收紧一下权限就能保护敏感配置不外露了。