Доступ к атрибутам шаблона в Chef - PullRequest
0 голосов
/ 17 февраля 2019

Я объявляю переменную в Chef/Ruby и присваиваю ей значение.Значение отличается для разных сред.Я устанавливаю значение в соответствующих файлах среды следующим образом:

region = us-west-1 

В файле шаблона я использую его таким образом

region =<%= @region %>

и в рецепте как

:region =>node.region

Экземпляр не появляется, когда мое исправление объединено.Это правильный способ или я что-то упустил?

1 Ответ

0 голосов
/ 18 февраля 2019

Вот два моих любимых способа сделать это:

  • Использовать атрибуты 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

...