- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
环境:
我从 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 的概述:
apache2
”的包。安装
包。apt-get install apache2
。在 RHEL/CentOS 等系统上,它将执行 yum install httpd
。关于chef-infra - 如何使用 apache2 chef cookbook 安装 apache2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15355470/
我正在尝试为服务器提供依赖于旧版本 mysql cookbook (5.6.3) 的 Chef 项目。由于这个特定版本与 Ubuntu 14.04 之后的任何更新版本都不兼容,我尝试更新到最新版本 (
我正在为厨师学习曲线而苦苦挣扎。这两个命令有什么区别,为什么有两个? knife cookbook :knife cookbook 子命令用于与位于 Chef 服务器或本地 Chef-repo 上的
我正在接受以下 Chef 服务器培训: 学习 Chef>教程>管理节点>Red Hat Enterprise Linux>Hosted Chef>将说明书上传到 Chef 服务器 教程刚刚让我使用“k
我打算使用 https://github.com/opscode-cookbooks/mysql但是当我运行 vagrant provision 时 找不到菜谱 mysql 的 recipe ruby
我正在写一本 Recipe ,在同一台主机上安装多个 tomcat 实例。我为多个实例创建了一个散列,这个散列将包含 shutdown_port 和 startup_port 的键值对。例如 - in
我已经搞了两天了,还是没明白。基本上,我从头开始使用 JQuery Cookbook 模式。我的问题是表单 html 页面加载正常,但代码无法识别我的提交按钮。这是代码的相关部分: 单独的 HTML:
本文实例讲述了Python在字符串的开头或结尾处进行文本匹配操作。分享给大家供大家参考,具体如下: 问题:在字符串的开头或结尾处按照指定的文本模式做检查,例如检查文件的扩展名、URL协议类型等;
本文实例讲述了Python将多个映射合并为单个映射的方法。分享给大家供大家参考,具体如下: 问题:在逻辑上将多个字典或映射合并为一个单独的映射结构,以此执行某些特定的操作,比如查找值或者检查键是否
本文实例讲述了Python针对任意多的分隔符拆分字符串操作。分享给大家供大家参考,具体如下: 问题:将分隔符(以及分隔符之间的空格)不一致的字符串拆分为不同的字段; 解决方案:使用更为灵活的re
本文实例讲述了Python从字典中提取子集的方法。分享给大家供大家参考,具体如下: 问题:想创建一个字典,其本身是另一个字典的子集 解决方案:利用字典推导式(dictionary compreh
本文实例讲述了Python将名称映射到序列元素中的方法。分享给大家供大家参考,具体如下: 问题:希望通过名称来访问元素,减少结构中对位置的依赖性 解决方案:使用命名元组collections.n
本文实例讲述了Python同时对数据做转换和换算处理操作。分享给大家供大家参考,具体如下: 问题:我们需要调用一个换算函数(例如sum()、min()、max()),但是首先需对数据做转换或者筛选
本文实例讲述了Python找出序列中出现次数最多的元素。分享给大家供大家参考,具体如下: 问题:找出一个元素序列中出现次数最多的元素是什么 解决方案:collections模块中的Counter
本文实例讲述了Python通过公共键对字典列表排序算法。分享给大家供大家参考,具体如下: 问题:想根据一个或多个字典中的值来对列表排序 解决方案:利用operator模块中的itemgetter
本文实例讲述了Python实现对不原生支持比较操作的对象排序算法。分享给大家供大家参考,具体如下: 问题:想在同一个类的实例之间做排序,但是它们并不原生支持比较操作。 解决方案:使用内建的sor
本文实例讲述了Python根据字段将记录分组操作。分享给大家供大家参考,具体如下: 问题:想根据字典或者对象实例的某个特定的字典(比如日期)来分组迭代数据 解决方案:itertools.grou
本文实例讲述了Python筛选及提取序列中元素的方法。分享给大家供大家参考,具体如下: 问题:提取出序列中的值或者根据某些标准对序列做删减 解决方案:列表推导式、生成器表达式、使用内建的filt
本文实例讲述了Python从序列中移除重复项且保持元素间顺序不变的方法。分享给大家供大家参考,具体如下: 问题:从序列中移除重复的元素,但仍然保持剩下的元素顺序不变 解决方案: 1、如果序列中
本文实例讲述了Python对切片命名清除索引的方法。分享给大家供大家参考,具体如下: 问题:如何清理掉到处都是硬编码的切片索引 解决方案:对切片命名 假设有一些代码用来从字符串的固定位置中取出
我已经在这本 Recipe 上苦苦挣扎了一段时间了。 我正在尝试将包括 Azure SDK 在内的许多资源安装到 Windows Server 2012 R2 实例上。 最初我在堆栈跟踪中收到以下错误
我是一名优秀的程序员,十分优秀!