2013-03-04 14 views

答えて

15

ラッパー料理ブックを作成するときは、属性を上書きするのが一般的です。

と仮定、あなたはこのようなmy_web_server/recipes/default.rbでmy_web_server料理を持っている:

include_recipe "apache2" 

そして、あなたはapache2のクックブックからdefault_site_enabled属性を上書きしたいと思います。 は、その後、あなたのファイルmy_web_server/attributes/default.rbは、次のようになります。

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

などmy_web_server/metadata.rbに依存関係を指定することを忘れないでください:私は、多くの場合、オーバーライド属性の役割を使用し

depends "apache2" 
+1

これはChefサーバーでのみ機能しますか? Chef 12.0.3を使って、シェフのソロではうまくいかないようです。 – Noz

+0

これは本当にありがとう、chef_nginx料理本の属性を無効にするための類似の情報が必要でした。 – WhyAyala

5

私は2つの料理本を持っていると言います.1つは私のsweet_rails_app用、もう1つはapacheとpassengerをインストール/設定するためのものです。私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に追加する必要があります。これには、2つのcookbookの実行順序を制御する追加のボーナスもあります。

関連する問題