环境:
我从apache2下载了community.opscode食谱,然后在客户端节点上运行# chef-client。安装和启动服务都是成功的。
[2013-03-12T15:30:00+09:00] INFO: Processing package[apache2] action install(apache2::default line 20)当我进入食谱/apache2/食谱/default.rb时,没有一行说action:install我对Ruby非常陌生,所以我不知道负责安装的代码行在哪里。
此外,如果正在安装apache2,配方中是否包含某种安装包?比如说,.rpm包?如果是的话,完整的道路是什么?
提前感谢!
编辑:
我已经了解到
package "apache2" do
package_name node['apache']['package']
end将action :install设为默认值。但再说一遍,我不知道它安装了什么。安装程序包本身在哪里,还是菜谱与安装程序相同?
发布于 2013-03-12 16:38:20
这里有几件事要谈。首先,规范参考文档位于包资源的厨师博士页面上。
既然主厨食谱是Ruby,那么让我们来看看这意味着什么。菜谱中定义的每个资源都有一个类型,该类型可以有一个或多个提供程序。资源是处理如何管理该资源(提供者)的底层事物的声明性接口。厨师根据节点的平台自动选择提供者。在包的情况下,Chef为百胜、apt、solaris、macport等提供服务。有关信息,请参阅文档。
当您在菜谱中声明一个资源时,它使用Ruby术语中的两个参数,一个字符串和一个可选的块。字符串是资源“名称”。块中的每个属性参数都可能具有默认选项,这些选项记录在docs站点上,用于各种核心主厨资源和提供者。该名称还用于其中一个属性,称为"name_attribute“。在本例中:
package "apache2" do
package_name node['apache']['package']
end对于所有意图和目的,资源的名称都是"apache2“。但是,包的名称属性是package_name,在本例中,包名来自属性node['apache']['package'],该属性是在食谱的attributes/default.rb文件中设置的。这是特定于平台的,因为没有两个发行版/ is能够就如何调用包达成一致( Debian上的apache2,RHEL上的httpd )。
资源的一个特殊属性是动作。这将告诉底层提供者资源应该是什么状态。默认情况下,厨师会对资源采取最积极的行动。作为底层系统资源的声明性接口,Chef认为这是最理智的事情。在包的情况下,Chef将默认安装包。
因此,在编写这类食谱时,作为一个概述:
apache2“的包。install包。apt-get install apache2。在RHEL/CentOS等系统上,它将执行yum install httpd。发布于 2013-03-12 10:47:45
在CentOS上,默认的包管理器是yum,因此它将通过yum安装。见厨师包资源文档提供部分。
https://stackoverflow.com/questions/15355470
复制相似问题