Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef infra 如何使用apache2厨师烹饪手册安装apache2?_Chef Infra - Fatal编程技术网

Chef infra 如何使用apache2厨师烹饪手册安装apache2?

Chef infra 如何使用apache2厨师烹饪手册安装apache2?,chef-infra,Chef Infra,环境: CentOS 6 厨师长10 我从community.opscode下载了apache2食谱,然后运行了#chef client 在客户端节点中。安装和服务启动成功 [2013-03-12T15:30:00+09:00] INFO: Processing package[apache2] action install(apache2::default line 20) 当我转到cookbooks/apache2/recipes/default.rb时,没有一行写着action:in

环境:

  • CentOS 6
  • 厨师长10
我从community.opscode下载了apache2食谱,然后运行了
#chef client
在客户端节点中。安装和服务启动成功

[2013-03-12T15:30:00+09:00] INFO: Processing package[apache2] action install(apache2::default line 20)
当我转到cookbooks/apache2/recipes/default.rb时,没有一行写着
action:install
我对Ruby非常陌生,所以我不知道负责安装的代码行在哪里

此外,如果正在安装apache2,配方中是否包含某种安装包?比如说,.rpm包?如果是,完整路径是什么

提前谢谢

编辑:

我已经知道包裹在里面了

package "apache2" do
   package_name node['apache']['package']
end
操作:安装作为默认设置。

但是再说一遍,我不知道它安装了什么。安装程序包本身在哪里,或者cookbook与安装程序相同?

CentOS
上,默认的包管理器是
yum
,因此将通过
yum
进行安装。请参阅。

这里有几件事要谈。首先,规范参考文档位于包资源页面上

因为厨师食谱是一个Ruby DSL,让我们来看看这意味着什么。配方中定义的每个资源都有一个类型,可以有一个或多个提供程序。资源是处理如何管理该资源的底层对象(提供者)的声明性接口。Chef根据节点的平台自动选择提供者。就软件包而言,Chef提供了用于yum、apt、solaris、macports等的提供商。有关信息,请参阅文档

当您在配方中声明一个资源时,它使用Ruby术语中的两个参数,一个字符串,还可以选择一个块。字符串是资源的“名称”。块中的每个属性参数可能都有默认选项,这些选项记录在文档站点上,用于各种核心厨师资源和提供者。该名称还用于其中一个属性,称为“name_属性”。在本例中:

package "apache2" do
  package_name node['apache']['package']
end
无论出于何种目的,资源的名称均为“apache2”。但是,包的名称属性是
package\u name
,在本例中,包名称来自属性
node['apache']['package']
,该属性在烹饪书的
attributes/default.rb
文件中设置。这是特定于平台的,因为没有两个发行版/操作系统可以就如何调用包达成一致(Debian上的apache2,RHEL上的httpd)

资源的一个特殊属性是操作。这会告诉底层提供程序资源应该处于什么状态。默认情况下,厨师长将对资源采取最积极的行动。作为底层系统资源的声明性接口,Chef认为这是最明智的事情。对于软件包,Chef将默认安装该软件包

因此,作为撰写此类食谱的概述:

  • 我们让厨师管理一个名为“
    apache2
    ”的包
  • 我们告诉Chef,要管理的包的名称实际上来自一个属性'node['apache']['package']
  • 如果没有特定操作,Chef将默认安装程序包
  • Chef将使用默认为节点平台设置的底层包管理器来安装包。在Debian/Ubuntu系统上,它将执行
    apt get install apache2
    。在RHEL/CentOS etc系统上,它将执行
    yum-install-httpd

  • 回答得好!这实际上是apache2烹饪书的一个很好的演练,也是如何编写具有平台特定属性的烹饪书的一个很好的参考。是的,非常感谢!这给了我很多帮助和启发!