Подтвердить что ты не робот

Шеф-повар включает атрибуты переопределения рецептов

Когда вы включаете рецепт в другой рецепт, как вам переопределить атрибуты.

Похоже, что рецепт include использовал атрибуты по умолчанию, а не атрибуты рецепта, когда он был запущен ранее в run_list.

4b9b3361

Ответ 1

Когда вы создаете кучную книгу-оболочку, обычно переопределять атрибуты.

Предположим, у вас есть кулинарная книга my_web_server с my_web_server/recipes/default.rb следующим образом:

include_recipe "apache2"

И вы хотите переопределить атрибут default_site_enabled из cookbook apache2. Тогда ваш файл my_web_server/attributes/default.rb должен выглядеть так:

override['apache']['default_site_enabled'] = true

И не забудьте указать зависимости в my_web_server/metadata.rb как:

depends "apache2"

Ответ 2

Я часто использую роли для переопределения атрибутов.

Скажем, у меня есть две кулинарные книги, одна для моей sweet_rails_app, одна для установки/настройки apache и пассажира для установки моего приложения поверх.

В моем sweet_rails_app_cookbook у меня может быть:

# coding: UTF-8
# Cookbook Name:: sweet_rails_app
# Recipe:: default
include_recipe 'apache_passenger_cookbook::default'
... # recipe code

Все атрибуты в обеих кулинарных книжках, установленные на уровне по умолчанию в любой из кулинарных книг.

# coding: UTF-8
name 'sweet_rails_app'
description 'Deploys Sweet Rails App'

run_list "recipe[sweet_rails_app_cookbook]"

base_dir = '/opt/sweet_rails_app'

override_attributes(
  sweet_rails_app: {
    base_dir: base_dir,
    ... # more override attributes
  },
  apache_passenger: {
    document_root: base_dir
  }
)

Затем роль - это все, что мне нужно добавить в run_list для node. Это также добавляет бонуса к контролю порядка выполнения двух кулинарных книг.