Як в шеф-кухаря, як я отримую доступ до атрибутів у файлах ролей?


13

Я можу встановлювати атрибути у файлах ролей як задокументовані, але я не в змозі отримати доступ до атрибутів, уже встановлених кулінарними книгами, якими я користуюся.

Наприклад у /roles/appserver.rb:

name "appserver"

run_list(%w{
  recipe[tomcat::default]
})

default_attributes(
  :tomcat => {
    :java_options => "-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=" + node[:tomcat][:log_dir]
  }
)

Що я отримую, - це виняток, який стверджує, що шеф-кухар не може знайти метод / змінну 'вузол'.

Спасибі

Відповіді:


12

Ви не можете. Роль Ruby DSL перетворюється з Ruby в JSON при завантаженні ролі на сервер ножем. Об'єкт вузла недоступний, оскільки він не обробляється в контексті запуску шефа.

Якщо ви хочете комбінувати атрибути вузлів, замість цього вам слід зробити це в рецепті, наприклад:

"#{node[:tomcat][:java_options]}#{node[:tomcat][:log_dir]}"

0

Ви можете фактично використовувати require_relative 'base_role_file'всередині ролі, і цей необхідний файл може встановити деякі глобальні змінні для використання. Досить хакі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.