我计划使用Azkaban https://azkaban.github.io/来运行批处理作业。根据CI的想法,我们几乎没有像开发,测试,阶段,生产这样的环境,当然工作应该为每个环境配置不同的配置。
根据Azkaban文档http://azkaban.github.io/azkaban/docs/latest/#job-configuration Azkaban允许在找到$ {parameter}时替换参数。解决方案看起来像:
system.properties
myFlow/
dev.properties
....
prod.properties
foo.job
#system.properties
env=dev
#dev.properties
dev.database=localhost:2181
#prod.properties
prod.database=aws:port
#foo.job
some command --db ${${env}.database}
稍后在每个环境中我们都可以覆盖 env 变量。从我的角度来看,这个解决方案看起来很奇怪我可以告诉Azkaban应该在环境中使用哪个属性文件吗?
这样做的最佳方法是什么?