gpt4 book ai didi

chef-infra - 如何使用 apache2 chef cookbook 安装 apache2?

转载 作者:行者123 更新时间:2023-12-05 01:37:15 25 4
gpt4 key购买 nike

环境:

  • 中央操作系统 6
  • Chef 10

我从 community.opscode 下载了 apache2 cookbook,然后运行 ​​# 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 Docs 上包资源页面。

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

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

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

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

资源的一个特殊属性是操作。这告诉底层提供者资源应该处于什么状态。默认情况下,Chef 将对资源采取最积极的操作。作为底层系统资源的声明式接口(interface),Chef 认为这是最明智的事情。如果是包,Chef 将默认安装该包。

因此作为编写此类 Recipe 的概述:

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

关于chef-infra - 如何使用 apache2 chef cookbook 安装 apache2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15355470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com