厨师中的正则表达式
Regular expressions in chef
我们如何在厨师食谱中使用常规 expressions/pattern 匹配。
在我的 default.rb 食谱中,例如:
case node["env_name"]
when "admin-dev"
include_recipe "lxsetup-deploy::lxsetup-dev"
when "admin-dit"
include_recipe "lxsetup-deploy::lxsetup-dev"
when "admin-perf1"
include_recipe "lxsetup-deploy::lxsetup-qa"
when "admin-perf2"
include_recipe "lxsetup-deploy::lxsetup-qa"
else
include_recipe "lxsetup-deploy::lxsetup-prod"
end
有什么方法可以做 "admin-d*" 或 "admin-d[a-z]*" 之类的事情来匹配字符串 admin-dev 和 admin-dit。我尝试了很多东西,包括上面的那些,但没有任何帮助。
这是一个 ruby 代码,因此正则表达式匹配适用于 same way as in ruby。
case node["env_name"]
when /admin-d(ev)|(it)/
include_recipe "lxsetup-deploy::lxsetup-dev"
when /admin-perf[12]/
include_recipe "lxsetup-deploy::lxsetup-qa"
else
include_recipe "lxsetup-deploy::lxsetup-prod"
end
我个人喜欢使用散列来做这种映射(在属性中):
attribute.rb
env_to_suffix =
{
"admin-dev" => "dev",
"admin-dit" => "dev",
"admin-perf1" => "qa",
"admin-perf2" => "qa"
}
default['company']['env_suffix'] = env_to_suffix[node.chef_environment] || "prod"
在recipe.rb
include_recipe "lxsetup-deploy::lxsetup-#{node['company]['env_suffix']}"
我发现它更易于长期维护,并且它允许针对边缘情况对每个节点进行覆盖。
我们如何在厨师食谱中使用常规 expressions/pattern 匹配。 在我的 default.rb 食谱中,例如:
case node["env_name"]
when "admin-dev"
include_recipe "lxsetup-deploy::lxsetup-dev"
when "admin-dit"
include_recipe "lxsetup-deploy::lxsetup-dev"
when "admin-perf1"
include_recipe "lxsetup-deploy::lxsetup-qa"
when "admin-perf2"
include_recipe "lxsetup-deploy::lxsetup-qa"
else
include_recipe "lxsetup-deploy::lxsetup-prod"
end
有什么方法可以做 "admin-d*" 或 "admin-d[a-z]*" 之类的事情来匹配字符串 admin-dev 和 admin-dit。我尝试了很多东西,包括上面的那些,但没有任何帮助。
这是一个 ruby 代码,因此正则表达式匹配适用于 same way as in ruby。
case node["env_name"]
when /admin-d(ev)|(it)/
include_recipe "lxsetup-deploy::lxsetup-dev"
when /admin-perf[12]/
include_recipe "lxsetup-deploy::lxsetup-qa"
else
include_recipe "lxsetup-deploy::lxsetup-prod"
end
我个人喜欢使用散列来做这种映射(在属性中):
attribute.rb
env_to_suffix =
{
"admin-dev" => "dev",
"admin-dit" => "dev",
"admin-perf1" => "qa",
"admin-perf2" => "qa"
}
default['company']['env_suffix'] = env_to_suffix[node.chef_environment] || "prod"
在recipe.rb
include_recipe "lxsetup-deploy::lxsetup-#{node['company]['env_suffix']}"
我发现它更易于长期维护,并且它允许针对边缘情况对每个节点进行覆盖。