12
A
回答
15
当您创建包装食谱时,通常会覆盖属性。
假设你my_web_server与my_web_server/recipes/default.rb
这样的食谱:
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"
5
占优属性我经常使用的角色。
说我有两个食谱,一个是我的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的所有东西。这也有控制两个食谱的执行顺序的额外好处。
这是否只适用于厨师服务器? Chef solo使用Chef 12.0.3似乎不适合我。 – Noz 2014-12-19 17:39:57
非常感谢您的支持,需要一些类似的信息来覆盖chef_nginx食谱上的属性。 – WhyAyala 2017-02-03 22:24:14