Как я могу создать переопределение роли и среды в Chef? - PullRequest
0 голосов
/ 31 января 2019

Моя ситуация выглядит следующим образом (имейте в виду, что я не эксперт Chef и у меня нет полного контроля над нашей реализацией / средой):

  • Я создал общую кулинарную книгу / рецепт с именем foo
  • В этом рецепте используется атрибут node[:foo][:bar]
  • Мы используем файл ролей , специфичный для проекта, чтобы установить специфичный для проектаатрибуты, не зависящие от среды
  • Мы используем файлы, зависящие от среды (например, integration.rb, regression.rb и т. д.), для переопределения значений, специфичных для среды.

Моя проблема в том,Я использую этот рецепт foo в более чем 1 роли.Но мне нужно переопределить значение bar для каждого проекта и .Итак, у меня есть проекты ProjectA и ProjectB.Я хочу следующее:

  • при запуске роли ProjectA в integration Я хочу, чтобы node[:foo][:bar] было bob
  • при запуске роли ProjectA в regressionЯ хочу, чтобы node[:foo][:bar] было jane
  • при выполнении роли ProjectB в integration Я хочу, чтобы node[:foo][:bar] было john
  • при запуске роли ProjectB в regression Я хочу, чтобы node[:foo][:bar] было smith

Я попытался определить значение ProjectA:bar в integration, а затем использовать его в роли override_attributes() в ProjectA для получения foo:bar, но я получаю ошибку undefined local variable or method default '`, когда я делаю следующее:

override_attributes(
  'foo' => {
    'bar' => default['ProjectA']['bar']
  }
)

как мне настроить вещи, чтобы я мог использовать один и тот же рецепт в нескольких ролях, но переопределять значениядля этого рецепта на основе окружающей среды?

...