基本信息
- 作者: (加)Lorin Hochstein(洛林. 霍克斯坦)
- 译者: 陈尔冬
- 出版社:电子工业出版社
- ISBN:9787121275074
- 上架时间:2015-12-4
- 出版日期:2016 年1月
- 开本:16开
- 页码:318
- 版次:1-1
- 所属分类:计算机 > 计算机组织与体系结构 > 服务器
编辑推荐
在当下百家争鸣的配置管理工具领域中,Ansible有着独特的优势:原生即轻量。你不需要在你要管理的机器上安装任何软件,并且它的学习曲线非常平缓。不管你是想要将代码部署到生产环境的开发者,还是寻求更好的自动化解决方案的系统管理员,这本实用指南都将会帮助你快速地在生产环境中使用这个工具。
作者Lorin Hochstein示范了如何编写playbook(Ansible中的配置管理脚本),如何管理远程服务器,并带你探索了这个工具的潜在法宝:内置声明模块。通过阅读本书,你会发现Ansible不仅拥有你所需要的功能,而且还异乎寻常地简单。
□ 理解Ansible区别于其他配置管理系统的特点。
□ 使用YAML语法编写你自己的playbook。
□ 学习Ansible中的变量与fact。
□ 部署一个复杂应用的完整范例。
□ 使用role来简化与复用playbook。
□ 使用SSH Multiplexing、pipelining和并行化来让playbook运行得更快。
□ 将应用部署到Amazon EC2或其他云平台。
□ 使用Ansible创建Docker镜像并部署Docker容器。
内容简介
计算机书籍
Ansible是近年用户量急速蹿升的开源配置管理工具。在Ansible之前,行业中已经有很多开源配置管理工具了,特别是鼎鼎大名的Puppet,堪称配置管理界的超级巨星。然而,Ansible依靠它的简单易用、"零依赖"及弱抽象还是获得了无数开发者和运维工程师的青睐。遗憾的是,由于Ansible还很年轻,除了官方文档外,其他相关的优秀文档可谓凤毛麟角。而《奔跑吧Ansible》恰恰就是为了缓解这一现状而写的。作者在《奔跑吧Ansible》中演示了如何使用Ansible在接近真实的生产环境进行管理的案例,这既演示了Ansible的强大功能,又能够帮助读者快速入门与上手,非常适合作为官方文档的扩展资料来阅读。
作译者
译者介绍:陈尔冬,前新浪网技术总监;现华为高级技术专家,从事公有云相关能力建设。
目录
前言 xxv
第1 章 概述 1
关于版本的说明 2
Ansible 的优点 2
Ansible 如何运作 3
Ansible 的精妙设计有哪些 4
易读的语法 4
远程主机无须安装任何依赖 5
基于推送模式 5
Ansible 管理小规模集群 6
内置模块 6
非常轻量的抽象层 7
Ansible 太过于简单了吗 8
我需要具备哪些基础知识 9
哪些内容不会涉及 9
安装Ansible10
建立一台用于测试的服务器 11
使用Vagrant 来创建测试服务器 11
将测试服务器的信息配置在Ansible 中 15
译者序
2007 年我加入了新浪平台架构部,这里的工作为我真正打开了新世界的大门。那个时候部门正在使用CFEngine 管理上百台机器、为不同功能的服务器划分角色、为相同功能的服务器进行编号(像为公牛编号那样)、为配置文件编写模板来减少硬编码,所有这一切都用一种工程实践的方法解决了我之前的所有疑问。后来,我才知道这个实践性很强的方法的名字--配置管理。
转眼之间,我已经在新浪工作了七年之久。这七年间我的职位与工作内容有多次变化,但所围绕的工作核心从未改变:如何让数千台服务器按照我们想要的方式运转。为了更好地达到这一目的,我尝试过各种配置管理的方式:从CFEngine 到Puppet、SaltStack,甚至是自行开发配置管理工具。但是每一种方式都与我理想中那个遵循"KISS 原则"、易于学习,且在功能上具有无穷扩展空间的配置管理工具相差甚远--直到经同事文旭的推荐,我认识了Ansible。Ansible 的轻量、最小化抽象层及轻松扩展与收缩一下子就吸引了我。目前为止,它是与我理想中的配置管理工具最接近的一个。
这样优秀的工具我当然不会自己独享。我曾经在各种场合向正在寻找合适配置管理工具的朋友与同事推荐Ansible。我发现有一部分朋友虽然对于Ansible 给予了正面的评价,却对缺少中文文档感觉略有不便。这让我意识到语言仍旧是部分技术人员学习技术的障碍之一。显然,我并不具备帮助技术人员提升英语阅读水平的能力,但至少我可以将这本《奔跑吧Ansible》的中文版带给大家,希望本书可以帮助一些读者快速上手Ansible。
由于水平所限,本书中难免出现一些翻译错误。诚恳地欢迎大家向我或者出版社反馈本书中的各种错误。
最后,我想要感谢赵新宇、陈明杰和刘宇等朋友,他们在翻译本书过程中提供了无私的帮助和支持。还要感谢我的夫人张若金的支持与理解。没有你们就不会有本书的出版。
前言
多年前,我使用时下流行的Python Web 框架Django 编写了我人生中的第一个Web 应用,当那个应用终于在我的台式机成功运行时,油然而生的成就感让我至今难忘。首先运行django manage.py runserver,然后打开浏览器并访问http://localhost:8000,最后是见证奇迹的时刻--我的Web 应用闪亮登场!
然而,随后我就发现让该死的应用运行在Linux 服务器上其实有非常多令人无奈的事情。除了把Django 本身和我的应用安装在服务器之外,我还必须得安装Apache 和mod_python 模块。有了mod_python 模块,Apache 才可以运行Django 应用。这还不算完,我还必须弄明白天书一般的Apache 配置文件,并把它配置为可以同时运行我的程序和其他所依赖的静态内容。
说实在的,每一步都不算难,但是想让所有的环节都配置正确也是个痛苦的过程。作为一名程序员,我才不想不停地摆弄配置文件,我只是想让我的应用运行而已。好在当我把一切都配好了之后,就不用再去动了。然而几个月后的一天,噩耗传来,在另一台服务器上还得再经历这些无奈,而且还是从头开始。
终于有一天,我发现痛苦的根源在于我用的方法不对。做这些事情的正确方法有个学名:配置管理。使用配置管理要注意的一个重要的事情是:它是一种获取那些始终保持最新的配置与信息的方法。你不再需要频繁地搜索正确的文档或者查找以前的笔记。
不久以前,一位同事出于兴趣尝试使用Ansible 部署新项目,他请我帮忙推荐一些官方文档以外的Ansible 应用实践方面的参考资料。那时我才突然发现,好像官方文档以外没有什么资料可以推荐的了。于是我决定填补这个空白,所以就有了这本书。可惜这本书对于那位同事来说太迟了,但希望对于你来说它来得正是时候。
谁适合读这本书
这本书是写给需要管理Linux 或者类Unix 服务器的人的。如果你对下列术语如数家珍:系统管理、运维、部署、配置管理(看到这也许有的读者在叹气)或者DevOps,那么看到本书你也许会觉得如获至宝。
尽管我也在管理自己的Linux 服务器,但我的专业领域其实是软件开发。这意味着本书的范例将偏向于部署领域,尽管我同意Andrew Clay Shafer(见附录D 参考文献webops)的部署与配置没有明确边界的观点。
本书引导
我对这样的提纲并不感冒:"第1 章涵盖这个;第2 章涵盖那个",类似这样的内容不会有人真正仔细去看(反正我从没看过)。我认为目录反倒更易于浏览。
本书的内容编排是适于从前向后顺序阅读的,后面的章节会基于前面的内容。本书包含大量范例,建议你按照本书指导在自己的计算机上去试验这些范例。绝大部分范例都是面向Web 应用的。
本书约定
本书使用的排版约定如下:
斜体(Italic)
新术语、URL、电子邮件地址、文件名和文件扩展名以这种字体展示。
等宽字体(Constant width)
程序代码或正文中包含的程序元素,如变量、函数名、数据库、数据类型、环境变量、语句和关键字等代码文本以这种字体展示。
等宽黑体字(Constant width bold)
需要用户输入的命令或其他文本以这种字体展示。
序言
几年前,我和尔冬都作为技术团队的一员在一起开始新浪微博的研发,研发团队开发完第一个服务后就面临服务发布及管理的问题。最开始是通过工程师手动登录服务器的方式来发布与启动。当服务请求增大、服务单元增多后,工程师便将命令写成脚本,通过SSH 在多台机器执行,半人工地解决了一段时间的问题。当服务规模进一步增大,手工运行SSH 变得困难后,我们开始寻找一些工具来使这些工作自动化,当时能找到的工具都需要在机器上安装一个agent,通过agent 接收指令来执行对应的操作。随着服务集群规模变大、依赖变多,当时使用的工具需要具备指令安全、执行进度汇报、执行结果检测等功能。于是我们自己做了一个脚本,可以通过命令行的方式控制软件发布、服务启动与进度查看。随着机器规模的增加,命令行及脚本的方式显得不是很直观,也不利于新进入团队的人了解及使用。于是我们做了一个Web 界面来中心化管理及执行脚本,并且可以很直观地查看进度,还可以选择发布任务执行的范围,较好地解决了当时服务发布遇到的问题。
几年之后,我们发现Ansible 使用相同的理念更好地解决了以上问题。其设计方法也遵循“脚本+ 可视化管理”的思路,Ansible 本身是一种脚本控制的语言,在此之上,我们可以选择其商业化的Tower 软件来可视化地进行管理。而其脚本在指令安全、执行进度汇报、执行结果检测方面,相对于直接运行操作系统脚本都具有更大的优势。
自动化管理是大势所趋,尔冬及时翻译的《奔跑吧Ansible》一书可以给国内同行带来很多启发,希望大家能够利用Ansible 工具及设计思想将应用的发布和配置管理提升到新的高度。
——TimYang
微博研发副总经理,“高可用架构”公号主
推荐序二
运维发展到今天,已经不是刀耕火种的年代,各种运维自动化工具层出不穷,运维人员也逐步摆脱了直接登录服务器进行操作所带来的烦琐、重复和高风险性。自动化工具也有一个演进过程,从Puppet、Saltstack 到Chef,运维人员在学习和使用的过程中也深深因其复杂性而苦恼,特别是客户端机制。相比之下,Ansible 的使用简单很多,这也是它广受欢迎的主要原因。
运维自动化工具本来是用来简化运维工作的,但如果工具本身比较复杂,甚至需要一定的程序开发能力,就会增加使用和推广的难度。Ansible 有三个最吸引人的地方:无客户端、简单易用和日志集中存储。很多时候,运维人员对服务器仅具有临时权限,甚至没有权限,所以无法部署客户端程序。另外,客户端机制往往也是运维自动化容易出问题的地方,这涉及客户端的安装、配置修改和卸载,其中任何一步没有同步完成,都可能会带来隐患。Ansible 很简单,上手方便,不需要啃一本大部头书才能学会使用(从这一点来看,真可谓业界良心)。另外Ansible 又很好地解决了Shell 操作日志的集中存储问题——这一点在被管理服务器数量少时,貌似作用还不大,但在批量管理大量服务器时,就能显示出其便利性了。所有操作日志都存储在Ansible 发起服务器,可以采用自定义的格式,这样可以很方便地知晓哪些服务器的操作有问题,哪些已成功,而且便于日后的追溯。当然,Ansible 的配置管理功能简单而强大,所有被管理的软件配置都集中存储,如果目标服务器想安装MySQL,InnoDB 所占用内存需要从10GB 调整为12GB,那么在Ansible 发起服务器简单修改即可。
我对Ansible 的印象非常好。在2014 年年底的时候,为了给公司采购公有云提供决策支持,我选定了国内八大公有云,对它们进行了长达四个月的测试,总共进行了上万次测试。每家公有云随机选择3~5 台云主机和RDS,每台云主机测试多轮,每轮测试200 次。测试项目包括网络稳定性(探测节点涵盖全国共400 多个)、CPU、内存、磁盘及云主机整机性能测试。如果不借助于Ansible,仅仅两个人是无论如何也不可能在短时间内完成一万多次测试的。我们基于Ansible 编写了一个批量自动化测试工具,这个工具完成了对新入手云主机的一切工作,包括初始化、测试工具部署、测试数据装载及自动发起指定次数的测试流程。结果很完美,所有测试结果都汇聚在Ansible 发起服务器,我们又开发了一个日志自动分析的工具,能从Ansible log 中截取有用的信息并加以汇总(就只差用Excel 出图了)。
同时,Ansible 虽然不如Puppet 等复杂,但也还是需要一些方法和技巧,而且版本更新迭代较快。因此我也很高兴看到尔冬兄亲自翻译的《奔跑吧Ansible》这本书,其英文原版由Michael DeHaan(Ansible 软件的创作者,Ansible 公司前CTO)亲自作序,其受认可度可见一斑。本书内容编排由浅入深,理论与实践并重,作者特别提到了SSHmultiplexing,Ansible 与之配合,可以用来管理成千上万的服务器节点。
尔冬兄是运维行业资深人士,深度参与了新浪微博从小到大的发展过程。每次和尔冬兄交流,总能感觉到他对运维行业深深的感情,以及关于运维的真知灼见。这次尔冬兄亲自翻译此书,可以说是国内诸多Ansible 使用者的福祉,可以帮助大家更好地学习、理解、掌握Ansible,并融会贯通。
——萧田国
开放运维联盟联合主席,高效运维社区发起人
原书推荐序
在2012 年2 月创立的时候,Ansible 还是一个非常简单的项目,随后它的快速发展令我们倍感惊喜。现在,它已经是上千人参与开发的产品了(如果包括参与贡献想法的人,还会更多),并且广泛部署于几乎每个国家。在各种技术会议中总是能找到有(至少)几个人在使用它,这在计算机领域也是件很不寻常的事。
Ansible 的不平凡源自于它的平凡。Ansible 并不企图做盘古开天地般的创新,而是从那些聪明的家伙们已经提出的想法中提炼出精华,并将这些想法尽可能地落地。
Ansible 旨在探求某些学术的IT 自动化方法(它们本身就是对大型繁杂的商业套件的一种反应)与简单粗暴解决问题的脚本之间的平衡点,另外,我们如何能将配置管理系统、部署发布系统、编配系统(orchestration project)以及千奇百怪但是非常重要的Shell 脚本库替换为一个单一系统呢?这恰恰是Ansible 要实现的理念。
媒体评论
--Matt Jaynes
Taste Test:Puppet vs Chef vs SaltStack vs Ansible 一书作者
大规模集群的配置管理工具一直都是提升效率的利器。新浪在2003 年前后开始使用Cfengine ;在2010 年前后,为了解决Cfengine 的一些问题,我们逐渐在一些业务中用SSH 进行批量命令执行和配置文件拉取,这种组合一直用到现在,管理着数万台服务器,但现在基本上已经是SSH 为主了。本文的译者在新浪负责了很多配置管理系统的开发,以我们的经验来看,基于SSH 进行配置管理有很多好处,这也是我对 Ansible 很感兴趣的地方。充分利用系统现成的机制,这不仅省去了Agent 的安装,在数千台规模的大型数据中心,少一些中心化服务还意味着少了一些路由和安全策略的配置,省去了很多不必要的麻烦。当然,Ansible 还有很多吸引人的地方,非常值得你去学习和发现。
--童剑
新浪研发中心总经理
Ansible 作为自动化系统运维的一大利器,在构建整个体系过程中有着举足轻重的地位。DSL、幂等性、playbook、大量的模板等都是它的魅力所在,再加上易封装、接口调用方便,Ansible 正在被越来越多的大公司采用,包括独立使用以及与其他工具(如Puppet)结合使用。
本书通过简单易用的大量实例帮忙读者快速上手,通读全书会让你对Ansible 有一个全面的了解,动手操作书中的实例,快速掌握Ansible,剩下的就交给你的灵感吧。
--刘宇
@ 守住每一天,金山西山居架构师
《Puppet 实战》作者,《Puppet 实战手册》译者之一
对于DevOps,我自己的理解是运维即开发,人管理代码,代码管理机器,而不是人直接管理机器。Ansible 帮我们实现了运维人员开始向运维开发的转型,让繁杂、危险的运维工作变得简单、安全和可控。《奔跑吧Ansible》秉承了Ansible 这一工具简明的一贯特点,不是长篇累牍地讲解复杂技术原理,而是列举了大量简明的实例,拿来阅读半小时即可上手解决实际问题。
--程辉
UnitedStack 公司创始人兼CEO