我的团队中有多个环境,每个环境都有自己的环境文件。 目前,我们必须复制粘贴文件,并更新使用某些共享资源的所有文件。
有没有办法在env文件中包含env文件 - 比如在c ++中使用python / include进行导入
因此我们可以执行基本的env文件并将其包含在所有其他env文件中 谢谢!
答案 0 :(得分:1)
是的,如果您使用Ruby文件(而不是JSON),您可以组合环境文件。 eval
允许您执行任何代码,可以从另一个文件中读取。
我还没有在制作中使用它,但这是我目前所藏匿的内容:
# environments/production.rb
name "production"
env_cookbook_versions = {
"mysql" => "<= 6.0.18",
}
env_default_attributes = {}
# include the defaults here
eval File.read("global_settings.rb")
多个环境之间共享的设置(以及尊重专用文件中使用的参数化)可能如下所示:
# environments/global_settings.rb
env_cookbook_versions["apache"] = "= 1.0.0"
cookbook_versions(env_cookbook_versions)
env_default_attributes.merge!({
"whatever" => "foo"
})
default_attributes(env_default_attributes)
编辑:然后您将使用knife environment from file
上传包含global_settings.rb
文件的所有环境。一旦这些常见设置发生变化,您就必须再次上传所有相关环境,因为所有逻辑仅在您的工作站上发生。