2015-03-18 1 views
1

Как использовать регулярные выражения/сопоставление образцов в рецепте шеф-повара. В моем 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 

Есть ли способ, что я могу сделать что-то вроде «админ-й *» или «админы-d [AZ] *», чтобы соответствовать строкам админ-DEV и admin-dit. Я попробовал кучу вещей, включая вышеупомянутые, но ничего не помогло.

ответ

1

Personnaly Я хотел бы использовать хэш, чтобы сделать этот вид отображения, как это (и в атрибутах):

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']}" 

Мне удобнее поддерживать его в долгосрочной перспективе, и он позволяет переопределить каждый узел для случаев краев.

3

Это рубиновый код, поэтому регулярное выражение соответствует 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