2013-03-04 7 views
12

Quando si include una ricetta in un'altra ricetta, come ignorare gli attributi.chef include le ricette sovrascrive gli attributi

Sembra che la ricetta di inclusione abbia utilizzato gli attributi di default non gli attributi della ricetta quando è stata eseguita in precedenza nella lista di esecuzione.

risposta

15

Quando si crea un ricettario di wrapper, è comune sovrascrivere gli attributi.

Supponiamo, hai my_web_server libro di cucina con my_web_server/recipes/default.rb come questo:

include_recipe "apache2" 

e si desidera sovrascrivere l'attributo default_site_enabled da apache2 libro di cucina. Poi il file my_web_server/attributes/default.rb dovrebbe essere simile:

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

e non dimenticate di specificare le dipendenze in my_web_server/metadata.rb come:

depends "apache2" 
+1

Funziona solo per server Chef? Non sembra funzionare per me su Chef solo, usando Chef 12.0.3. – Noz

+0

Grazie mille per questo, aveva bisogno di alcune informazioni simili per ignorare gli attributi sul ricettario chef_nginx. – WhyAyala

5

Io uso spesso i ruoli per gli attributi override.

Dire che ho due libri di cucina, uno per il mio sweet_rails_app, uno per installare/configurare apache e il passeggero per installare la mia app in cima.

Nel mio sweet_rails_app_cookbook io possa avere:

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

Tutti gli attributi di entrambi i libri di cucina fissati a livello predefinito in entrambe libro di cucina.

# 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 
    } 
) 

poi il ruolo è tutto ciò che ho bisogno di aggiungere alla run_list per il nodo. Questo ha anche il vantaggio aggiuntivo di controllare l'ordine di esecuzione dei due libri di cucina.