我正在尝试使用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 }}基本上,我希望有这个源数据
features:
feature_a:
~: true
feature_b:
mut_a:
~: false
dev: true
test: true
mut_b:
~: true转换为此结果(用作app_config gomplate数据源)
features:
feature_a:
mut_a:
dev: true
test: true
load: true
staging: true
prod: true
mut_b:
dev: true
test: true
load: true
staging: true
prod: true
feature_b:
mut_a:
dev: true
test: true
load: false
staging: false
prod: false
mut_b:
dev: true
test: true
load: true
staging: true
prod: true假设数据源platform被定义为
mutations:
- mut_a
- mut_b
environments:
- dev
- test
- load
- staging
- prod我选择使用~来声明,每个未定义的环境或突变都将获得~背后的值。
这应该在假设最低级别是环境,最低级别之前的级别是突变的情况下工作。除非没有定义环境,否则突变水平是最低的,并且适用于所有突变和环境。然而,我知道这会带来额外的复杂性,所以我倾向于使用简化的变体,其中始终定义了突变:
features:
feature_a:
mut_a: true
mut_b: true
feature_b:
mut_a:
~: false
dev: true
test: true
mut_b:
~: true然而,由于我对gomplate还不熟悉,我不确定它是否是适合这项工作的工具。
我欢迎每一条反馈。
发布于 2020-07-13 17:00:20
经过进一步的调查,我决定使用单独的工具可以更好地解决这个问题。
https://stackoverflow.com/questions/62598691
复制相似问题