发表于2024-11-23
在云时代,Chef作为DevOps运动的重要工具之一,主要用于实现自动化配置管理和运维,帮助大大小小的企业解决各种运维问题。本书针对刚开始接触配置管理的开发人员和系统管理员,阐述了如何在短短几分钟或者几个小时之内搭建和部署应用,而不像以往那样要花几天或者几周时间。
本书介绍如何写基于Ruby的Chef代码,通过实例来引导读者逐步掌握各种Chef工具和配置管理概念。只要略懂命令行,熟悉基本的系统管理,就可以通过本书迅速掌握Chef。
Chef作为 DevOps运动的重要工具之一,用于快速实现云端自动化配置管理。全书共16章,主题涉及Chef配置管理、Ruby及其语法、如何写Chef recipe,如何用Test Kitchen管理沙盒测试环境,如何用Chef客户端管理单个节点,Chef cookbook如何写和如何用,如何用Chef服务器管理多个节点,搜索、数据包、角色、开发环境和测试等都有介绍。
本书是一本介绍Chef基础架构自动化平台的入门书,有比较强的实操性,很适合刚开始接触Chef、配置管理和自动化编程的读者阅读和参考。
Mischa Taylor是一名Chef咨询师,这家位于西雅图的高成长新创公司,主营业务为打造Chef平台,快速实现自动化配置,并将业务过程移到云端。他的兴趣聚焦于打造高质量的产品和提升组织内部工程实践的生产力。他能说会道且擅长指导,同时在软件开发和神经网络计算方面也颇有专研和造诣。
Seth Vargo是HashiCorp的软件工程师和开源倡导者。他先后任职于Chef (Opscode), CustomInk和匹兹堡的多家新创公司。他对技术和组织文化有很强烈的爱好。在写代码和开源相关工作之余,他喜欢参与本地用户组和会议。他是匹兹堡DevOps Days的组织者。
闫诺,Chef创始工程师。在Chef软件公司任职期间作为主要工程师研发了托管企业Chef服务。2011年离开Chef参与创办消费者推荐搜索引擎公司Livestar,2013年并入以图片为基础的推荐、探索引擎公司Pinterest。在Pinterest任职期间,他参与构建综合性实时认知及响应平台,后者服务于Pinterest的自动化垃圾内容处理、通知推送服务、广告服务及内容推荐服务等。2015年底,他离开Pinterest,目前正在为解决新的工程挑战而忙得乐此不彼。
闫诺毕业于美国华盛顿大学(西雅图),大学主修应用及计算数学。平时对世界各地的文化和各类艺术很感兴趣。工作之余,时常为朋友圈内有需要的创业公司提供帮助,积极参与鼓励大学生学习科学、技术、工程及数学的公益项目。
前言 .1
第1章 配置管理和Chef ...........7
什么是配置管理 ........7
为什么需要配置管理工具来实现IT自动化 ........8
Chef是什么 ...9
为什么企业需要Chef .9
接下来要做什么 ......12
第2章 配置Chef开发环境 ..... 15
安装一个适合程序员使用的文本编辑器 ..........16
Chef开发工具 ..........17
在Linux下安装Chef开发工具 ..18
在Windows下安装Chef开发工具 .........32
小结 41
第3章 Ruby和Chef语法 ....... 43
Ruby概述 ....43
Ruby语法和案例......44
Chef语法和案例 ......54
第4章 如何写第一个Chef配方单 ........... 61
创建代码的目录结构 ...........61
写下第一个Chef配方单 .......62
验证第一个Chef配方单 .......63
用配方单指定理想配置 .......65
卸载时,须明确指定不要做什么 ........69
小结 71
第5章 用Test Kitchen管理沙盒测试环境 73
安装Vagrant和VirtualBox ....75
启动自己的第一个虚拟机 ...79
YAML概览 .84
用.kitchen.yml配置Test Kitchen .........86
小结 87
第6章 用Chef客户端管理节点 .. 89
什么是节点 .89
在一个节点上创建沙盒环境 90
用Test Kitchen在节点上安装Chef客户端 .........91
第一次运行Chef客户端 .......93
Chef客户端的三种模式 .......95
命令行工具Ohai ......96
访问节点信息 ..........98
小结 ..........100
第7章 撰写和使用菜谱 ....... 103
你的第一个菜谱:每日消息 ..103
你的第一个菜谱:每日消息(使用Chef开发包) .....104
Cookbook_file资源简介 ....106
你的第一个菜谱:每日消息(Chef客户端) .107
Cookbook_file资源简介 ....109
第一次运行Chef .... 110
验证结果 .. 112
剖析Chef运行 ........ 113
菜谱结构 .. 116
必须了解的四个资源 ......... 119
Apache菜谱:手把手教你创建菜谱 .. 119
小结 ..........130
第8章 属性 133
Motd-Attributes菜谱 ..........134
设定属性 ..136
属性优先级基础 ....138
Include_Recipe ......139
属性优先级 142
属性排错 ..143
小结 ..........146
第9章 用Chef服务器同时管理多个节点 147
手动安装企业Chef .149
使用菜谱来自动化安装企业Chef服务器 ........151
幂等性简介 154
配置企业Chef服务器 .........159
测试连接 ..165
准备一个新节点 ....166
用Chef Solo配置Chef服务器 173
小结 ..........174
第10章 社区以及Chef-Client菜谱 ....... 175
使用社区菜谱 ........175
Chef-Client菜谱 .....177
Knife Cookbook Site插件 ..180
使用Knife Cookbook Site搜索社区菜谱 .........181
通过Knife Cookbook Site管理Chef服务器中的社区菜谱 ...........182
Chef-Client配方单 .184
配置Knife使用生产环境SSL设置 ......186
配置Chef-Client使用生产环境的SSL设置 ......188
小结 ..........196
第11章 Chef Zero .. 197
Test Kitchen和Chef Zero ...197
用Chef-Playground在宿主机器上运行Chef-Zero .......200
小结 ..........205
第12章 搜索 .......... 207
从命令行搜索 ........207
用Knife从命令行搜索 ........208
使用Test Kitchen从配方单中搜索 ..... 211
小结 ..........215
第13章 数据包 ....... 217
在配方单中使用数据包项目的数据创建本地用户 .....222
验证用户 ..226
加密数据包 227
小结 ..........233
第14章 角色 .......... 235
创建一个网页服务器角色 .236
属性和角色 238
角色和搜索 239
角色菜谱 ..241
小结 ..........242
第15章 环境 .......... 243
创建一个开发环境 .244
属性和环境 245
完整实例 ..247
小结 ..........258
第16章 测试 .......... 259
关于测试 ..259
重温Apache菜谱 ....262
使用Serverspec进行自动化测试 ........266
使用Foodcritic进行自动化测试 .........283
使用ChefSpec进行自动化测试 ..........287
小结 ..........295
第17章 结语 .......... 297
词汇表 ......298
附录A 开源Chef服务器 ...... 301
附录B 托管企业Chef .......... 323
learning_chef-table.indd 9 16/6/28 下午3:32
第1章 配置管理和Chef
Chef是一个面向(像你一样的)信息科技(IT)专家和软件工程师的配置管理工具。由
于配置管理有许多不同的定义,所以让我们先来解释在本书中配置管理代表的意思以及
为什么你需要一个配置管理工具。我们同时会介绍Chef并讲解为什么你需要它。
什么是配置管理
在IT行业中,配置管理是在将软件应用程序发布给消费者的过程中对以下实体进行管理
的工程实践:
? 硬件
? 软件
? 基础架构
? 人
? 流程
配置管理源于解决团队工作中最基本的挑战。当你是唯一的系统管理员并管理少量服务
器时,变化管理一般没有多复杂;然而协调若干系统管理员和工程师来管理数百甚至成
千上万个服务器和应用程序来支持巨大数量的用户,则非常复杂,并往往需要一些工具
来支持。
现代的IT配置管理工具通常包含对Mark Burgesspass提出的自动化和基于策略的理论之
实现。他在二十世纪九十年代末到千禧早年间在奥斯陆大学学院任教授时开发了IT自动
化理论的如下核心思想。
? 配置改变必须由一种系统化的方式处理来保证系统的配置是正确和可靠的。
? 系统本身一定要有一些自救措施,从而错误可以自动被侦测到并修复而无需明确的
指令。
当下的IT配置工具的代表包括CFEngine、Puppet、Microsoft Windows中的Desired State
Configuration引擎、Ansible、SaltStack以及(毫无疑问)Chef。
为什么需要配置管理工具来实现IT自动化
在管理复杂的企业基础架构时使用自动化配置管理工具,有很多至关重要的原因,以下
是其中四个重要原因。
? 一致性。如果基础架构是手动配置的,怎样才能知道所有的服务器的配置都一致?
再者,怎样才能确定所有的服务器配置都符合标准和安全需求?(比如说, 系统管
理员有没有在相应系统里记录所发生的改变?)
使用一个配置管理工具来自动化重复的任务能使系统管理员事半功倍。当这些可重
复的任务非常艰难和复杂时,人工通常很难每次都将它们一模一样地完成。而这正
好是电脑(配置管理工具)擅长做的事情。让配置管理工具来自动化这些复杂的任
务可以让系统管理员专注于其他人类擅长的重要的事情。
? 高效的变化管理。当基础架构没有使用配置管理工具而完全手动构建的时候,人们
通常害怕改变。长久以往,这些手动管理的服务器通常会包含大量难以理解和更改
的零碎配置。
在这些情况下,公司或组织机构一般会使用大量的流程去管理变化,而这些流程通
常希望最小化变化或最大化延迟变化的发生。这通常造成延迟发布用户所需要的新
功能。
当服务器永远可以轻松重建时,改变便不再可怕,相应的,管理变化的流程也会变
少。小的改变随时可以发生,比如每天,甚至每天多次。
? 简化重建。当服务器是手动建立的时候,从零重建往往不容易。那么如果服务器在
灾难性事件中被摧毁了怎么办?多久才能恢复服务?
使用配置管理工具自动部署能帮助快速地恢复服务。与其在服务器上进行更新或部
署应用程序补丁(有可能是零碎的操作),系统管理员可以快速通过自动的方式建
立一个新的、完成更新的系统然后把旧的关掉。当重建很方便的时候,系统管理员
则更无惧对基础架构进行快速的迭代和改变。
? 透明性。配置管理工具带有监视和汇报功能。监视系统管理员所做的工作并不需要
很复杂的工具,但试图理解一个包含若干系统管理员和若干软件工程师,每天部署
若干次软件改变的工程团队都做了些什么,的确需要一个配置管理工具。
当基础架构变化由自动化系统来完成时,所有改变都可以自动登记在相应的跟踪系
统中来提高透明度,显示出团队所做的有意义的工作。
Chef是什么
Chef是可以用来配置和管理物理数据中心或云中基础架构的自动化平台。可以把它部署
到公司最适合的基础架构类型中。可以用Chef来加速应用程序部署,甚至完成持续部署
流程。Chef的关键威力在于它将基础架构变为代码。
用代码来表示基础架构意味着计算环境拥有一些与其应用程序一样的属性。
? 基础架构可以有不同版本。
? 基础架构可以被随时重建。
? 基础架构可以拥有完整的测试来保证正确性。
图1-1展示了Chef的基本架构。
Chef开发包的组件可以帮助支持你在开发机器上写Chef代码;Chef服务器的组件可以帮
助延伸配置管理能力,使你可以管理成百上千或更多的服务器。
为什么企业需要Chef
当Adam Jacob在2009年最开始创建Chef时,他有三个重要的观点来解决他在其他配置管
理工具中看到的不足。
1. 配置管理工具应该对云基础架构提供顶级支持。
2. 任何一个基础架构都是独一无二的。复杂的企业基础架构要能够极大地得益于将其
IT基础架构和应用程序部署流程以代码来建模。
3. 卓越的工具和点子来源于活跃的用户社区。光靠一个人的力量是不够的。
图1-1:Chef架构
在过去的几年里,Chef在活跃社区的支持下发展成为一个强大的、与众不同的配置管理
工具,相比其他产品,它具有以下优势。
超强的可伸缩性
类似Facebook之类的客户http://www.pcworld.com/article/2084900/facebook-uses-aseasoned-
chef-to-keep-servers-simmering.html[使用Chef管理上万台服务器],而仅仅
需要少量人力资源。
极其强大
Chef(客户端)建立在Ruby编程语言之上,当你需要的时候,可以直接使用Ruby来
自定义Chef。
learning_chef-all.indd 10 16/6/28 下午2:49
配置管理和Chef | 11
多种用法
你可以通过很多方式使用Chef。Chef可以在无服务器模式独立运行或配合中央服务
器(Chef服务器)运行。你也可以选择使用推送或拉(轮询)模式(或两种结合)
来做部署。
开放
Che f完全开源并拥有一个非常活跃的由系统管理员和软件工程师组成的用户社
区。开源Chef被用来支持Dell的产品(https://www.cloudave.com/14174/opscodechef-
the-secret-sauce-behind-dell-open-source-crowbar/)、Facebook(https://www.
getchef.com/blog/2013/02/04/facebook-likes-opscode-and-private-chef/)和亚马逊云
服务(https://www.getchef.com/blog/2013/02/20/aws-opsworks-uses-opscode-chef-asdefault-
automation-engine/)。
透明
Chef分析平台强化Chef,让你可以在重要改变生效的时候收到通知来保证对标准的
遵循。
Chef独特的特性体现出强大的灵活性。你不需要为适应Chef而挣扎,而是让Chef适应你
和你的环境。你可以部署到云或本地基础架构,也可以在代码中描述任何资源,无论它
们和标准的配置有多么不同。
使用Chef,通常并不需要从零开始写描述基础架构的代码。许多标准的基础架构配置和
任务的菜谱都已经在Chef超市(https://supermarket.chef.io/)中,免费的。
一旦掌握Chef,就可以用它来做以下事情。
? 完全自动化部署,包括内部和面向用户的系统。
? 自动化伸缩基础架构。
? 让基础架构自我修复。
举例而言,Tom Hallet使用Chef创建了一个叫SoloWizard的工具来自动化其Mac OS X开
发机器的部署。SoloWizard基于Pivotal Labs所做的促进开发者和最终用户使用自动化的
工作。正像图1-2中所示,SoloWizard允许你一键创建一个新的开发环境。你甚至可以通
过在一个简单的网站上做选择来个性化输出的脚本。此工具在SoloWizard网站(http://
www.solowizard.com)可以找到。
图1-2:SoloWizard自动化创建Mac OS X开发工作站
接下来要做什么
在本书的前半部分,我们会讲解Chef客户端的基本组件,展示如何利用代码使基础架构
可以进行版本控制和使其可以重复。我们会讲到以下三个主题:
? Test Kitchen
? Chef Solo/Chef Local
? Cookbooks(菜谱)
learning_chef-all.indd 12 16/6/28 下午2:49
配置管理和Chef | 13
我们也会利用大量动手实例来让你掌握和巩固Chef基础架构编程的基本要素。
在本书的后半部分,我们会介绍Chef服务器的基本要素,展示如何在基础架构复杂度和
学习Chef:云时代的配置管理与自动化运维技术 下载 mobi epub pdf txt 电子书 格式
学习Chef:云时代的配置管理与自动化运维技术 下载 mobi pdf epub txt 电子书 格式 2024
学习Chef:云时代的配置管理与自动化运维技术 下载 mobi epub pdf 电子书不错 不错 不错 不错 不错
评分充电,学习的,印刷和编辑都蛮好的。内容紧凑。
评分Chef是一个面向(像你一样的)信息科技(IT)专家和软件工程师的配置管理工具。由
评分看下了解下了
评分充电,学习的,印刷和编辑都蛮好的。内容紧凑。
评分看下了解下了
评分看下了解下了
评分于配置管理有许多不同的定义,所以让我们先来解释在本书中配置管理代表的意思以及
评分例子不错,但是资料少没有办法
学习Chef:云时代的配置管理与自动化运维技术 mobi epub pdf txt 电子书 格式下载 2024