新書推薦:
《
透过器物看历史(全6册)
》
售價:HK$
490.6
《
我在台北故宫博物院读名画
》
售價:HK$
109.8
《
尼罗河往事:古埃及文明4000年
》
售價:HK$
76.2
《
一个人·谁也不是·十万人(诺贝尔文学奖得主反思自我的巅峰之作)
》
售價:HK$
54.9
《
重写晚明史(全5册 精装)
》
售價:HK$
781.8
《
汉末晋初之际政治研究
》
售價:HK$
132.2
《
强者破局:资治通鉴成事之道
》
售價:HK$
80.6
《
鸣沙丛书·鼎革:南北议和与清帝退位
》
售價:HK$
121.0
|
編輯推薦: |
Gruntwork公司的联合创始人Yevgeniv(Jim)Brikman将通过丰富的代码示例展示Terraform作为一种声明性编程语言,如何用简单的执行命令部署和管理基础设施。无论你是经验丰富的系统管理员、DevOps工程师,还是初出茅庐的开发人员,都可以通过学习本书,迅速掌握Terraform的基础知识,并能够部署一整套支持大量并发访问的全栈环境,同时学到如何支持大型开发团队的协同工作。
介绍Terraform 0.9版本到O.12版本的升级变化,包括后端、工作区和*类表达式
学习如何编写产品级的Terraform模块
深入研究如何手动和自动测试Terraform代码
将Terraform与Chef、Puppet、Ansible、CloudFormation和SaltStack进行比较
部署服务器集群、负载均衡器和数据库
通过Terraform管理基础设施的不同状态
通过Terraform模块创建可重用的基础设施
通过Terraform高级语法实现零停机部署
|
內容簡介: |
Terraform工具已经成为DevOps领域的关键角色。在各种云平台和虚拟化环境(如AWS、Goolge Cloud、Azure等)中,可以对基础设施即代码(laC进行定义、部署和管理。这本书介绍了如何通过Terraform在多云和混合云的环境下使用基础设施即代码,把软件工程的优秀实践应用于硬件的管理。作为Terraform首著的第2版,本书针对Terraform 0.12版本的重大升级,进行了内容的拓展和更新,展示了如何快速学习和使用Terraform的优秀实践。书中通过大量的代码示例,介绍了Terraform的基本功能、企业级模块化部署、自动化测试,以及团队环境下使用IaC的开发部署流程。本书不仅充分展现了Terraform作为一种IaC工具的魅力,还通过多角度的对比,使读者能够准确把握如何在实战中使用和配置该软件。系统管理员、DevOps工程师、开发人员和云服务技术从业者,都能从本书中找到所需要的知识与指导。
|
關於作者: |
Yevgeniy(Jim)Brikman喜欢编程、写作、演讲、旅行和举重。他是Gruntwork公司的联合创始人,该公司提供DevOps服务。他还是O''Reilly Media出版的另一本书《你好,初创公司:构建产品、技术和团队的程序员指南》的作者。作为一名软件工程师,他曾就职于领英(LinkedIn)、TripAdvisor、思科(Cisco)及Thomson Financial,并在康奈尔大学获得学士和硕士学位。更多信息请访问ybrikman.com。
白宇,曾担任西部数据、贝尔、加拿大丰业银行、飞利浦半导体、西门子通信、松下高通等多家500强公司的系统架构工程师、运维架构师,以及Atlassian 产品认证专家,长期从事 DevOps、SRE、企业云部署、SaaS、IaaS、IaC等软件工程相关的技术咨询。
|
目錄:
|
第1章 为什么使用Terraform 1
DevOps的崛起 1
什么是基础设施即代码 4
基础设施即代码的好处 16
Terraform的工作原理 18
Terraform与其他IaC工具的比较 20
小结 35
第2章 Terraform入门 36
设置AWS账户 37
安装Terraform 41
部署单台服务器 42
部署单个Web服务器 50
部署可配置的Web服务器 58
部署Web服务器集群 64
部署负载均衡器 69
清理工作 77
小结 78
第3章 如何管理Terraform的状态 80
什么是Terraform的状态 81
共享存储状态文件 83
Terraform后端的局限性 91
隔离状态文件 93
terraform_remote_state数据源 104
小结 115
第4章 使用Terraform模块创建可重用基础设施 117
模块基础知识 120
模块的输入 123
模块的局部 127
模块的输出 130
模块中的陷阱 132
模块版本控制 136
小结 142
第5章 Terraform技巧和窍门:循环、if条件语句、部署和陷阱 144
循环 145
有条件的判断 165
零停机部署 179
Terraform陷阱 189
小结 198
第6章 生产级Terraform代码 199
为什么构建生产级基础设施需要漫长的过程 201
生产级基础设施检查清单 203
生产级基础设施模块特点 205
小结 237
第7章 如何测试Terraform代码 239
手动测试 240
自动测试 247
小结 305
第8章 如何在团队环境下使用Terraform 308
在团队中实施IaC 308
部署应用程序代码的工作流程 315
部署基础设施代码的工作流程 325
将上述各点整合在一起 348
小结 350
附录A 推荐阅读资料 252
关于作者 352
后记 356
|
內容試閱:
|
译者序
当我在2019年7月,第一次看到本书第2版的预发行版本时,就深深地被它的内容所吸引,并下定决心一定要将这本不可多得的、关于Terraform和基础设施即代码(IaC,Infrastucture as Code)的优秀出版物介绍给国内的读者。
作为一名在软件工程领域摸爬滚打近20年的从业人员,我在感叹各种技术快速迭代的同时,也深深体会到软件工程领域发展的周期性特点,每3到5年,就会有新的热点名词出现:Scrum、CICD(持续集成)、SRE、中台、AI,等等;每10年就会有一个大的转型:Agile(敏捷开发)、DevOps、云计算、机器学习。这些让人眼花缭乱的热点名词,每一个都代表着对一类问题的思考,以及解决这类问题的方法论。它们从出现开始,经历着被质疑、被接受、被追捧,直到被取代的过程。这个过程也标志着软件工程领域对已有难题的解决和继续对未知领域的探索。每一个热点的出现,往往代表着新的机遇、新的挑战,有时甚至会是整个行业的洗牌。所以我们在追捧名词和追赶明星技术的同时,也要冷静地去挖掘其背后的根本问题,这样才能在五花八门的解决方案中,做出正确的选择。
软件开发自上世纪60年代出现后,经历了快速的发展:从结构化编程(以瀑布模型为代表)到敏捷开发;在融合了极限编程、Scrum、DSDM、FDD等当时流行的软件开发实践的理念后,在2001年的雪鸟会议 上著名的《敏捷宣言》被提出。宣言重申了敏捷开发将专注于团队成员间的协作、客户需求的及时响应、软件产品的快速迭代。重点关注在软件开发领域中如何加强产品项目部门和软件开发团队之间的紧密协作,如何将客户的需求快速、准确地转化为软件产品。敏捷开发的出现大大提高了软件开发的效率。
在敏捷开发相对成熟后,下一个10年是DevOps运动的兴起。DevOps公认起源于2009年的Velocity大会,可以被看作敏捷开发向IT和运维领域的延伸。DevOps关注如何通过对工具、文化和流程的改进,提升部署自动化和发布的效率。DevOps兴起到成熟的过程,也是软件开发团队和产品运维团队间直接协作与融合的过程。其间也有不同的侧重点:行业最初主要关注CICD,甚至DevOps一时成为持续集成的代名词;后来又变成自动测试提高代码测试覆盖率、减少手动测试、增加自动测试,自动测试成了DevOps工程师所追求的目标;再后来,在很多场合下,DevOps又被称作DevSecOps,很显然,安全性成了DevOps要解决的问题;再后来又提出了治理与合规(Governance and Compliance)、AIOps、ChatOps,等等。但是一个贯穿始终的关注点就是:运维(Ops)。
DevOps的重点之所以是运维,一个原因是在开发团队实施敏捷开发后,运维团队成了新的瓶颈;另一方面是运维领域的硬件虚拟化(服务器变成了虚拟机,数据中心变成了云计算平台)所带来的挑战硬件的搭建和改变更加频繁,使原有的思想和技术很难继续支持业务的发展。虚拟化一方面增加了运维团队的压力,另一方面也为运维团队DevOps的改进提供了机遇。那就是将基础设施代码化,使用代码对硬件进行管理,在运维领域借用软件领域的最佳实践,将基础设施的运维纳入软件工程的范畴,最终整体改善软件开发和软件交付的过程。
运维团队要适应的另一个变化是云计算。什么是云计算?如果形象地进行比喻,云计算是企业IT服务中的共享经济。因为云计算完全符合共享经济的定义:通过互联网进行、充分利用闲置资源、按需分配下的重复使用。无论是私有云上组织内部门间的资源共享,还是公有云上不同公司之间的资源(算力、基础设施、安全、冗余、融灾)共享,都把共享经济的特点体现得淋漓尽致。而且随着人工智能、机器学习等领域的快速发展出现的算力匮乏,以及互联网经济活动(例如双十一)对运营伸缩能力的刚性需求,还有各种复杂架构系统导致的维护成本的增加,使人们对云服务的需求也从基础设施即服务(IasS),演进到平台即服务(PaaS),再到最新的软件即服务(SaaS),无论在广度上还是深度上都有了更高的要求。所以说,云计算作为共享经济在企业IT服务领域的落地,注定会进一步呈现百花齐放式的发展,多云和混合云是不可避免的趋势。
在多云和混合云的环境下,使用基础设施即代码,如何把软件工程的最佳实践,用于管理云相关的运维活动,就成了一个迫切需要解决的问题。而Terraform就是针对这个问题而出现的一个解决方案。作为HashiCorp公司开发的一种用于多云和混合云环境的IaC工具,Terraform专注于服务开通功能。虽然Terraform还很年轻(处于pre-1.0版本),但是近年来有了突飞猛进的发展(请参阅第1章表格1-2),这就导致了相关书籍、培训的短缺,而本书则是一本不可多得的、关于Terraform入门和实战内容的精品。
首先,这是一本贴近工程实战的教材,没有照搬官方手册,没有局限于介绍各种参数,而是突出了企业级、工程领域的实战操作。除基本功能外,它还突出了使用Terraform时的安全性、重用性、可维护性和可拓展性。例如,本书的第6章,从模块的复用角度出发,介绍了生产级Terraform代码的编写;第7章更是突出了如何在企业工程环境下测试Terraform代码;第8章介绍了如何在大型团队中使用Terraform协同开发基础设施代码。
其次,这是一本需要动手操作的教程。本书精心准备数十个代码示例,从动手编写Hello,world开始,逐步深入,到最后实现一个部署整套服务器集群的脚本,以及相关的测试。它使读者能够在短短几章内,超越运行简单介绍性示例的层次,深刻体会Terraform实战的特点。
还有就是,本书的第1章并没有匆忙地介绍如何安装和使用软件。而是退后一步,从更高的角度介绍了DevOps、IaC的最佳实践,以及IaC工具的分类:配置管理(configuration management)、编排(orchestration)、服务开通(provisioning)和服务器模板(server templating),并对广泛使用的IaC工具进行了多个维度的比较。
本书作者本身是一位软件工程和软件开发领域的专家,所以并没有仅仅将Terraform作为一个应用软件来进行介绍,而是在讲解工具的同时,穿插了大量DevOps和IaC的最佳实践、开发人员日常使用的小技巧,以及周边的阅读和学习资源(请参考附录A),极大地拓展了读者的知识面。作为第2版,本书经过第1版出版后的反馈,以及Terraform软件本身的演进,增加了很多读者希望看到的内容,以及对最新发布版本的支持(0.12版本包含重大语法变化)。具体信息请参考前言:第2版新增内容。
云计算、基础设施即代码和DevOps这些热门术语,在2009年前后才出现,而诸如Terraform、Docker、Packer和Kubernetes之类的工具在2018年前后才稳定发布。所有这些相对较新的工具和技术都在迅速地变化着,这也意味着它们并不特别成熟,也缺乏经验丰富的从业人员。随着运维团队的主要任务逐渐从硬件管理转移到软件管理上,加上云计算经过了一段时间的积累,将在今后3~5年内再一次出现爆炸性增长(企业服务领域),如何在多云和混合云下使用IaC管理基础设施,将成为下一个热点。这次你能把握住机会吗?
感谢Jim(本书作者Yevgeniy Brikman)给我们带来了这本精彩图书的第2版。感谢博文视点出版社的编辑能够把这个优秀的作品引进到国内,并让我有机会参与翻译工作。感谢所有为本书出版做出贡献的人。
白宇 2020年1月 美国硅谷
|
|