【问题标题】:How is apache2 installed using the apache2 chef cookbook?如何使用 apache2 chef cookbook 安装 apache2?
【发布时间】:2013-02-27 15:01:45
【问题描述】:

环境:

  • 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

默认为action :install。 但同样,我不安装它。安装程序包本身在哪里,还是说明书和安装程序一样?

【问题讨论】:

    标签: chef-infra


    【解决方案1】:

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

    由于 Chef 食谱是 Ruby DSL,让我们来看看这意味着什么。配方中定义的每个资源都有一个类型,该类型可以有一个或多个提供者。资源是处理如何管理该资源的底层事物(提供者)的声明性接口。 Chef 根据节点的平台自动选择提供程序。在 package 的情况下,Chef 提供 yum、apt、solaris、macports 等等。有关信息,请参阅文档。

    当您在配方中声明资源时,它需要两个 Ruby 术语中的参数,一个字符串和一个可选的块。该字符串是资源“名称”。块中的每个属性参数都可能具有默认选项,这些选项记录在文档站点上,用于各种核心 Chef 资源和提供程序。该名称也用于属性之一,称为“name_attribute”。在本例中:

    package "apache2" do
      package_name node['apache']['package']
    end
    

    出于所有意图和目的,资源的名称都是“apache2”。但是,包的名称属性是package_name,在这种情况下,包名称来自属性node['apache']['package'],该属性在说明书的attributes/default.rb 文件中设置。这是特定于平台的,因为没有两个发行版/操作系统可以就调用包的内容达成一致(Debian 上的 apache2,RHEL 上的 httpd)。

    资源的一个特殊属性是动作。这告诉底层提供者资源应该处于什么状态。 Chef 默认会对资源采取最积极的行动。作为底层系统资源的声明性接口,Chef 认为这是最理智的事情,不足为奇。如果是包,Chef 会默认安装包。

    所以作为编写这种食谱的概述:

    1. 我们告诉 Chef 管理一个名为“apache2”的包。
    2. 我们告诉 Chef,要管理的包的名称实际上来自属性 `node['apache']['package']。
    3. 如果没有具体操作,Chef 默认会install 包。
    4. Chef 将使用默认为节点平台设置的底层包管理器来安装包。在 Debian/Ubuntu 系统上,它将执行 apt-get install apache2 。在 RHEL/CentOS 等系统上,它会做yum install httpd

    【讨论】:

    • 很好的答案!这实际上是 apache2 食谱的一个很好的演练,以及如何编写具有平台特定属性的食谱的一个很好的参考
    • 好的,非常感谢!这对我有很大帮助和启发!
    【解决方案2】:

    CentOS 上,默认包管理器是yum,因此它将通过yum 安装。请参阅chef package resource doc provider section

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 2015-10-30
      • 2016-03-31
      • 2014-10-28
      相关资源
      最近更新 更多