我计划使用 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 在环境中应该使用哪个属性文件吗?
最好的方法是什么?