config client

应用场景

在接手运维一些遗留项目时,发现一个配置地狱。项目时间长或者经手人多了之后。

由于:

  • 可能会同时从环境变量,配置文件,配置中心客户端等同时获取配置

  • 然后配置之间有优先级覆盖关系

导致在多个环境或者线上trouble shooting时,实际生效的配置项及配置项来源不够可视化。 因此借照springboot application.yaml的形式。将一个项目使用到的所有配置放在jinja2渲染的yaml文件中。 这样部署维护就非常清晰了

使用说明

class opsas.utils.ConfigClient(config_path, logger=None)[source]

render a key-value pair from config file. config file was yaml format with jinja2 support.

Parameters
  • config_path (str) – Template config file path

  • logger (logging.logger, optional) – Python logger object

Note

os environment can be used in yaml via context os_env

Example

>>> import os
>>> os.environ.setdefault('env','test')
>>> configClient = ConfigClient("config.yaml")
## config.yaml
env: {{ os_env.get("env") | default("local",True) }}
>>> configClient.get('env')
'test'
get(k)[source]

Get config value via key