Go 如何为多种环境和变化的组合生成配置

Go 如何为多种环境和变化的组合生成配置,go,configuration,config,go-templates,gomplate,Go,Configuration,Config,Go Templates,Gomplate,我尝试使用gomplate作为配置生成器。我现在面临的问题是,在多个环境中,应用程序需要以不同的方式进行配置。我希望通过在模板和源数据中尽可能少的重复来实现一些用户友好和可读的方式 这背后的动机是生成源数据app_config,这些数据可以在以下模板中使用: feature_a={{ index (datasource "app_config").features.feature_a .Env.APP_MUTATION .Env.ENV_NAME | required }}

我尝试使用gomplate作为配置生成器。我现在面临的问题是,在多个环境中,应用程序需要以不同的方式进行配置。我希望通过在模板和源数据中尽可能少的重复来实现一些用户友好和可读的方式

这背后的动机是生成源数据
app_config
,这些数据可以在以下模板中使用:

feature_a={{ index (datasource "app_config").features.feature_a .Env.APP_MUTATION .Env.ENV_NAME | required }}
feature_b={{ index (datasource "app_config").features.feature_b .Env.APP_MUTATION .Env.ENV_NAME | required }}
基本上,我想要这个源数据

功能:
特点a:
对
特点b:
穆塔:
~:假
戴夫:没错
测试:正确
mut_b:
对
转换为该结果(用作
app\u config
gomplate数据源)

功能:
特点a:
穆塔:
戴夫:没错
测试:正确
负载:真
分期:对
普罗德:没错
mut_b:
戴夫:没错
测试:正确
负载:真
分期:对
普罗德:没错
特点b:
穆塔:
戴夫:没错
测试:正确
加载:false
分期:假
prod:错误
mut_b:
戴夫:没错
测试:正确
负载:真
分期:对
普罗德:没错
假设数据源
平台
定义为

突变:
-穆塔
-mut_b
环境:
-发展
-试验
-装载
-登台
-刺激
我选择使用
~
来声明每个未定义的环境或突变都将获得
~
后面的值
这应该在以下假设下工作:最低水平是环境,最低水平之前的水平是突变。除非未定义环境,否则在这种情况下,突变水平最低,适用于所有突变和环境。然而,我知道这会带来额外的复杂性,所以我打算在突变总是定义的情况下使用简化的变体:

功能:
特点a:
穆塔:是的
穆图布:是的
特点b:
穆塔:
~:假
戴夫:没错
测试:正确
mut_b:
对
然而,由于我对gomplate还相当陌生,我不确定它是否适合这份工作。

我欢迎所有反馈。

进一步调查后,我决定使用单独的工具更好地解决此问题。

进一步调查后,我决定使用单独的工具更好地解决此问题