7
7 1配置管理和 Chef Chef是一个面向(像你一样的)信息科技(IT)专家和软件工程师的配置管理工具。由 于配置管理有许多不同的定义,所以让我们先来解释在本书中配置管理代表的意思以及 为什么你需要一个配置管理工具。我们同时会介绍Chef并讲解为什么你需要它。 什么是配置管理 IT行业中,配置管理是在将软件应用程序发布给消费者的过程中对以下实体进行管理 的工程实践: 硬件 软件 基础架构 流程 配置管理源于解决团队工作中最基本的挑战。当你是唯一的系统管理员并管理少量服务 器时,变化管理一般没有多复杂;然而协调若干系统管理员和工程师来管理数百甚至成 千上万个服务器和应用程序来支持巨大数量的用户,则非常复杂,并往往需要一些工具 来支持。 现代的IT配置管理工具通常包含对Mark Burgesspass提出的自动化和基于策略的理论之 实现。他在二十世纪九十年代末到千禧早年间在奥斯陆大学学院任教授时开发了IT自动 化理论的如下核心思想。 learning_chef-all.indd 7 16/6/28 下午2:49

第1章 配置管理和Chef - tup.tsinghua.edu.cn

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

7

第1章

配置管理和Chef

Chef是一个面向(像你一样的)信息科技(IT)专家和软件工程师的配置管理工具。由

于配置管理有许多不同的定义,所以让我们先来解释在本书中配置管理代表的意思以及

为什么你需要一个配置管理工具。我们同时会介绍Chef并讲解为什么你需要它。

什么是配置管理在IT行业中,配置管理是在将软件应用程序发布给消费者的过程中对以下实体进行管理

的工程实践:

• 硬件

• 软件

• 基础架构

• 人

• 流程

配置管理源于解决团队工作中最基本的挑战。当你是唯一的系统管理员并管理少量服务

器时,变化管理一般没有多复杂;然而协调若干系统管理员和工程师来管理数百甚至成

千上万个服务器和应用程序来支持巨大数量的用户,则非常复杂,并往往需要一些工具

来支持。

现代的IT配置管理工具通常包含对Mark Burgesspass提出的自动化和基于策略的理论之

实现。他在二十世纪九十年代末到千禧早年间在奥斯陆大学学院任教授时开发了IT自动

化理论的如下核心思想。

learning_chef-all.indd 7 16/6/28 下午2:49

8 | 第1章

• 配置改变必须由一种系统化的方式处理来保证系统的配置是正确和可靠的。

• 系统本身一定要有一些自救措施,从而错误可以自动被侦测到并修复而无需明确的

指令。

当下的IT配置工具的代表包括CFEngine、Puppet、Microsoft Windows中的Desired State Configuration引擎、Ansible、SaltStack以及(毫无疑问)Chef。

为什么需要配置管理工具来实现IT自动化在管理复杂的企业基础架构时使用自动化配置管理工具,有很多至关重要的原因,以下

是其中四个重要原因。

• 一致性。如果基础架构是手动配置的,怎样才能知道所有的服务器的配置都一致?

再者,怎样才能确定所有的服务器配置都符合标准和安全需求?(比如说, 系统管

理员有没有在相应系统里记录所发生的改变?)

使用一个配置管理工具来自动化重复的任务能使系统管理员事半功倍。当这些可重

复的任务非常艰难和复杂时,人工通常很难每次都将它们一模一样地完成。而这正

好是电脑(配置管理工具)擅长做的事情。让配置管理工具来自动化这些复杂的任

务可以让系统管理员专注于其他人类擅长的重要的事情。

• 高效的变化管理。当基础架构没有使用配置管理工具而完全手动构建的时候,人们

通常害怕改变。长久以往,这些手动管理的服务器通常会包含大量难以理解和更改

的零碎配置。

在这些情况下,公司或组织机构一般会使用大量的流程去管理变化,而这些流程通

常希望最小化变化或最大化延迟变化的发生。这通常造成延迟发布用户所需要的新

功能。

当服务器永远可以轻松重建时,改变便不再可怕,相应的,管理变化的流程也会变

少。小的改变随时可以发生,比如每天,甚至每天多次。

• 简化重建。当服务器是手动建立的时候,从零重建往往不容易。那么如果服务器在

灾难性事件中被摧毁了怎么办?多久才能恢复服务?

使用配置管理工具自动部署能帮助快速地恢复服务。与其在服务器上进行更新或部

署应用程序补丁(有可能是零碎的操作),系统管理员可以快速通过自动的方式建

立一个新的、完成更新的系统然后把旧的关掉。当重建很方便的时候,系统管理员

则更无惧对基础架构进行快速的迭代和改变。

• 透明性。配置管理工具带有监视和汇报功能。监视系统管理员所做的工作并不需要

learning_chef-all.indd 8 16/6/28 下午2:49

配置管理和Chef | 9

很复杂的工具,但试图理解一个包含若干系统管理员和若干软件工程师,每天部署

若干次软件改变的工程团队都做了些什么,的确需要一个配置管理工具。

当基础架构变化由自动化系统来完成时,所有改变都可以自动登记在相应的跟踪系

统中来提高透明度,显示出团队所做的有意义的工作。

Chef是什么

Chef是可以用来配置和管理物理数据中心或云中基础架构的自动化平台。可以把它部署

到公司最适合的基础架构类型中。可以用Chef来加速应用程序部署,甚至完成持续部署

流程。Chef的关键威力在于它将基础架构变为代码。

用代码来表示基础架构意味着计算环境拥有一些与其应用程序一样的属性。

• 基础架构可以有不同版本。

• 基础架构可以被随时重建。

• 基础架构可以拥有完整的测试来保证正确性。

图1-1展示了Chef的基本架构。

Chef开发包的组件可以帮助支持你在开发机器上写Chef代码;Chef服务器的组件可以帮

助延伸配置管理能力,使你可以管理成百上千或更多的服务器。

为什么企业需要Chef当Adam Jacob在2009年最开始创建Chef时,他有三个重要的观点来解决他在其他配置管

理工具中看到的不足。

1. 配置管理工具应该对云基础架构提供顶级支持。

2. 任何一个基础架构都是独一无二的。复杂的企业基础架构要能够极大地得益于将其

IT基础架构和应用程序部署流程以代码来建模。

3. 卓越的工具和点子来源于活跃的用户社区。光靠一个人的力量是不够的。

learning_chef-all.indd 9 16/6/28 下午2:49

10 | 第1章

图1-1:Chef架构

在过去的几年里,Chef在活跃社区的支持下发展成为一个强大的、与众不同的配置管理

工具,相比其他产品,它具有以下优势。

超强的可伸缩性

类似Facebook之类的客户http://www.pcworld.com/article/2084900/facebook-uses-a-

seasoned-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服务器)运行。你也可以选择使用推送或拉(轮询)模式(或两种结合)

来做部署。

开放

C h e f完全开源并拥有一个非常活跃的由系统管理员和软件工程师组成的用户社

区。开源Chef被用来支持Dell的产品(https://www.cloudave.com/14174/opscode-

chef-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-as-

default-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)可以找到。

learning_chef-all.indd 11 16/6/28 下午2:49

12 | 第1章

图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服务器

• Chef Zero

• Roles(角色)、Data Bags(数据包)和Environments(环境)

• Knife

本书覆盖的工具都是免费和开源的。一些付费的工具会被提及,但对学习Chef而言并不

是不可缺少的。

下一章从Chef开发包安装过程来开始Chef旅程,好让你可以从一开始就动手实践,写

Chef代码。

learning_chef-all.indd 13 16/6/28 下午2:49