2014-09-04 41 views

回答

3

厨师使用recipes来定义resources,通过主厨客户端在nodes上执行。

  • 配方基本上是做什么(脚本)
  • 资源是您要配置的特定元素(一个file,一个service,或package等)
  • 节点是一个定义机器运行厨师客户

json您的chef-solo设置定义attributes这就像你的厨师可以用它来决定做什么变数。

所以你的哈希属性的厨师使用,但你需要一个配方用于配置基于散列资源将您节点

上执行你的情况,你需要配置package resource

package "name" do 
    some_attribute "value" 
    action :action 
end 

包资源支持很多不同的封装后端,包括apt因此您不必担心差异(包名称除外)。

要从哈希安装软件包,你可以创建这样一个秘方:然后

node[:apt][:package].each do |pkg,pkg_data| 
    package pkg do 
     action pkg_data[:action].to_sym 
    end 
end 

个人食谱打包成cookbooks这就好比是食谱的逻辑分组。一般来说,一本食谱可以用于一个软件,比如httpdmysql

正如Tensibia提到的那样,请阅读Vagrant Chef-Solo docco,了解将食谱/食谱放在哪里并从那里运行。

1

chef.json不执行或定义命令。 它定义了食谱可以使用的节点的属性。

我recomand读THISTHIS

一些JSON内容通过流浪产生像在vagrantfile的chef.add_recipe关键字定义运行列表属性。

对于您的使用案例,您应该有一个食谱解析节点['apt']并使用deb_package资源。