Вот два моих любимых способа сделать это:
- Использовать атрибуты chef.
Определить значение по умолчанию для атрибута в файле атрибутов.поэтому в файле <cookbook_name>/attributes/default.rb
добавьте эту строку:
default['instance_region'] = 'us-west-1'
, а затем в свой рецепт, куда вы добавляете шаблон:
variables(region: node['instance_region'])
, вы можете получить доступ к этому в своем шаблоне, как вы упомянули:
region =<%= @region %>
- Использование библиотеки chef.
Для более широкого использования вы можете определить это значение в библиотеке chef.поэтому в <cookbook>/libraries/common.rb
добавьте:
module Common
def instance_region
# This will return the name of AWS region that the nodes is in.
shell_out!('curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone/').stdout
end
end
, а затем в своем рецепте вы можете использовать его, просто вызвав обычный instance_region