Terraform:多云、混合云环境下实现基础设施即代码:第2 版

Book description

Terraform工具已经成为DevOps领域的关键角色。在各种云平台和虚拟化环境(如AWS、Goolge Cloud、Azure等)中,可以对基础设施即代码(IaC)进行定义、部署和管理。作为Terraform: Up & Running的第2版,本书针对Terraform 0.12版本的重大升级,进行了内容的拓展和更新,展示了如何快速学习和使用Terraform的优秀实践。

Gruntwork公司的联合创始人Yevgeniy(Jim)Brikman将通过丰富的代码示例展示Terraform作为一种声明性编程语言,如何用简单的执行命令部署和管理基础设施。

无论你是经验丰富的系统管理员、DevOps工程师,还是初出茅庐的开发人员,都可以通过学习本书,迅速掌握Terraform的基础知识,并能够部署一整套支持大量并发访问的全栈环境,同时学到如何支持大型开发团队的协同工作。

  • 介绍Terraform 0.9版本到0.12版本的升级变化,包括后端、工作区和第一类表达式
  • 学习如何编写产品级的Terraform模块
  • 深入研究如何手动和自动测试Terraform代码
  • 将Terraform与Chef、Puppet、Ansible、CloudFormation和Salt Stack进行比较
  • 部署服务器集群、负载均衡器和数据库
  • 通过Terraform管理基础设施的不同状态
  • 通过Terraform模块创建可重用的基础设施
  • 通过Terraform高级语法实现零停机部署

Table of contents

  1. 封面
  2. 扉页
  3. 版权页
  4. O’Reilly Media, Inc.介绍
  5. 译者序
  6. 目录
  7. 前言
    1. 谁应该阅读本书
    2. 我为何撰写本书
    3. 本书包含如下内容
    4. 第2版的新增内容
    5. 在本书中找不到的内容
    6. 开源代码示例
    7. 使用代码示例
    8. 排版约定
    9. 参考资料说明
    10. O’Reilly在线学习平台(O’Reilly Online Learning)
    11. 如何联系我们
    12. 致谢
  8. 第1章 为什么使用Terraform
    1. DevOps的崛起
    2. 什么是基础设施即代码
      1. 专项脚本
      2. 配置管理工具
      3. 服务器模板工具
      4. 编排工具
      5. 服务开通工具
    3. 基础设施即代码的好处
    4. Terraform的工作原理
      1. 云服务提供商之间的透明可移植性
    5. Terraform与其他IaC工具的比较
      1. 配置管理与服务开通对比
      2. 可变基础设施与不可变基础设施对比
      3. 过程性语言与声明性语言对比
      4. 主控模式与无主控模式对比
      5. 代理方式与无代理方式对比
      6. 大型社区与小型社区对比
      7. 成熟技术与前沿技术对比
      8. 同时使用多个工具
        1. 服务开通工具+配置管理工具
        2. 服务开通工具+服务器模板工具
        3. 服务开通工具+服务器模板+编排工具
    6. 小结
  9. 第2章 Terraform入门
    1. 设置AWS账户
      1. 关于默认虚拟私有云
    2. 安装Terraform
      1. 身份验证选项
    3. 部署单个服务器
      1. 使用文档! (1/2)
      2. 使用文档! (2/2)
    4. 部署单个Web服务器
      1. 端口号 (1/2)
      2. 端口号 (2/2)
      3. 网络安全
    5. 部署可配置的Web服务器 (1/2)
    6. 部署可配置的Web服务器 (2/2)
    7. 部署Web服务器集群
    8. 部署负载均衡器 (1/2)
    9. 部署负载均衡器 (2/2)
    10. 清理工作
    11. 小结
  10. 第3章 如何管理Terraform的状态
    1. 什么是Terraform的状态
      1. 状态文件是专用API
    2. 共享存储状态文件 (1/2)
    3. 共享存储状态文件 (2/2)
    4. Terraform后端的局限性
    5. 隔离状态文件
      1. 通过工作区进行隔离 (1/2)
      2. 通过工作区进行隔离 (2/2)
      3. 通过文件布局进行隔离
        1. 避免复制/粘贴
    6. terraform_remote_state数据源
      1. 机密信息始终存储在Terraform状态中
      2. 关于外部化文件
    7. 小结
  11. 第4章 使用Terraform模块创建可重用基础设施
    1. 模块基础知识
    2. 模块的输入
    3. 模块的局部变量
    4. 模块的输出
    5. 模块中的陷阱
      1. 文件路径
      2. 内联块
        1. 网络隔离
    6. 模块版本控制
      1. 私有Git存储库
      2. 模块开发
    7. 小结
  12. 第5章 Terraform技巧和窍门:循环、if表达式、部署和陷阱
    1. 循环
      1. 使用count参数进行循环
      2. 使用for_each表达式循环 (1/2)
      3. 使用for_each表达式循环 (2/2)
      4. 通过for表达式进行循环
      5. 通过for字符串指令循环
    2. 有条件的判断
      1. 使用count参数进行条件判断
        1. 带有count参数的if表达式
        2. 带有count参数的if-else表达式
      2. 用for_each和for表达式实现条件判断
      3. 使用if字符串指令实现条件判断
    3. 零停机部署 (1/3)
    4. 零停机部署 (2/3)
    5. 零停机部署 (3/3)
    6. Terraform陷阱
      1. count和for_each的局限性
        1. 首先,你无法在count或for_each中引用任何资源输出。
        2. 其次,你不能在模块配置中使用count或for_each
      2. 零停机部署的局限性
      3. 有效的计划仍然会失败
      4. 重构需要很小心
      5. 最终一致性的问题
    7. 小结
  13. 第6章 生产级Terraform代码
    1. 为什么构建生产级基础设施需要漫长的过程
    2. 生产级基础设施检查清单
    3. 生产级基础设施模块特点
      1. 模块要小型化
      2. 可组合的模块 (1/2)
      3. 可组合的模块 (2/2)
      4. 可测试的模块
      5. 可发布的模块
      6. Terraform模块之外的内容 (1/2)
      7. Terraform模块之外的内容 (2/2)
        1. 预配器
        2. null_resource中的预配器
        3. 外部数据源
    4. 小结
  14. 第7章 如何测试Terraform代码
    1. 手动测试
      1. 手动测试基础知识
        1. 验证基础设施
      2. 清理测试环境
    2. 自动测试
      1. 警告:前方大量代码
      2. 单元测试 (1/7)
      3. 单元测试 (2/7)
      4. 单元测试 (3/7)
      5. 单元测试 (4/7)
      6. 单元测试 (5/7)
      7. 单元测试 (6/7)
      8. 单元测试 (7/7)
        1. 单元测试基础知识
        2. 依赖注入
        3. 并行运行测试
        4. 在同一文件夹中并行运行测试
      9. 集成测试 (1/4)
      10. 集成测试 (2/4)
      11. 集成测试 (3/4)
      12. 集成测试 (4/4)
        1. 重试
      13. 端到端测试 (1/2)
      14. 端到端测试 (2/2)
      15. 其他测试方法
        1. 静态分析
        2. 属性测试
    3. 小结
      1. 本书也有测试!
  15. 第8章 如何在团队环境下使用Terraform
    1. 在团队中实施IaC
      1. 说服老板
      2. 逐步开展工作
      3. 给团队学习的时间
    2. 部署应用程序代码的工作流程
      1. 使用版本控制
      2. 在本地运行代码
      3. 进行代码更改
      4. 提交更改以供评审
      5. 运行自动测试
      6. 合并和发布
      7. 部署
        1. 部署工具
        2. 部署策略
        3. 部署服务器
        4. 跨环境推广工件
    3. 部署基础设施代码的工作流程
      1. 使用版本控制
        1. 实时代码库和模块代码库
        2. Terraform的黄金法则
        3. 分支的麻烦
      2. 在本地运行代码
      3. 进行代码更改
      4. 提交更改以供评审
        1. 文档
        2. 自动测试
      5. 运行自动测试
      6. 合并和发布
      7. 部署
        1. 部署工具
        2. 部署策略
        3. 部署服务器
        4. 跨环境推广工件
    4. 将上述各点整合在一起
    5. 小结
  16. 附录A 推荐阅读资料
    1. 书籍
    2. 博客
    3. 演讲
    4. 通讯文章
    5. 在线论坛
  17. 关于作者
  18. 封面介绍

Product information

  • Title: Terraform:多云、混合云环境下实现基础设施即代码:第2 版
  • Author(s): Yevgeniy Brikman
  • Release date: January 2021
  • Publisher(s): Publishing House of Electronics Industry
  • ISBN: 9787121400223

You might also like

book

管理Kubernetes

by Brendan Burns, Craig Tracey

虽然Kubernetes极大地简化了部署容器化应用程序的工作,但每天管理这种编排框架仍然是一项复杂的工作。站点管理人员以及 开发运营工程师可以通过本书学习如何构建、操作、管理及升级 Kubernetes集群,无论这些集群位于云基础架构之上还是在企业内部。 本书的作者Brendan Burns是Kubernetes的联合创始人,而Craig Tracey 是Heptio的现场工程师。本书详细讲解了Kubernetes的内部工作原理,并向读者展示了如何通过维护、调整和改善集群来满足特定需求。你可以通过本书学习如何从设计集群、管理访问控制、监视和报警,以及升级Kubernetes等方面来综合考虑架构的选择,还可以 通过本书深入了解如何充分利用这种编排框架的功能。 “学习如何操作集群,开发人员如何利用Kubernetes部署应用程序,以及如何利用Kubernetes减轻开发人员的负担。 通过掌握Kubernetes API以及配置选项来调整、保护,以及调节集群。 检测集群级别的问题,学习必要的响应步骤并快速恢复集群。 确定如何以及何时添加构建、扩展或以其他方式改进 Kubernetes集群的库、工具和平台。

book

SPARK學習手冊

by Holden Karau, Andy Konwinski, Patrick We

現今無論在任何領域,資料都逐漸地變大,你該如何有效率的對他們進行處理?此書介紹了Apache Spark,一個開放原始碼叢集運算系統。它使資料可以更快速的寫入以及執行。藉由Spark,你可以透過簡易的Python,Java,或是Scala的API進行快速的大量資料處理。 此書為Spark的開發者親自撰寫,可以讓資料科學家以及工程師立即應用書中的知識展開工作。讀者將學會如何透過數行的程式碼進行一個平行處理的工作。本書涵蓋了基礎的批次工作到串流處理以及機器學習等相關的應用。 ‧讓讀者可以快速地了解Spark,例如:分散式資料集、記憶體快取、以及交互式介面等。 ‧利用Spark內建的強大資料庫,包含Spark SQL、Spark Streaming以及MLib。 ‧使用一個Spark程式框架即可取代混合多種工具如Hive、Hadoop、Mahout以及Strom。 ‧學習透過Spark進行交互式、批次、以及串流式的應用程式開發 ‧與諸多資料來源進行連接,包含HDFS、HIVE、JSON以及S3 ‧學習資料切割以及共享變數等進階議題 “本書是我在大數據處理應用程式指南推薦書單中的第一名” --Ben. Lorica資料科學家主席, O’Reilly Media

book

Java持续交付

by Daniel Bryant, Abraham Marín-Pérez

持续交付为业务的持续发展和整个软件的交付周期增加了巨大的价值,但是掌握这项技术就意味着普通开发人员要跳出舒适区,学习很多新技能。本书以实践为基础,作者Daniel Bryant和Abraham Marín-Pérez通过大量的实践指导,帮助Java开发人员掌握针对不同平台的架构设计、自动化质量保证,以及打包和部署的技巧。 你将获得一些理解核心概念的帮助,以及有助于向持续交付迁移的指导意见。 你将学会如何设计能在不同平台上持续交付Java应用程序的架构。 你将学会如何构建应用程序构件,包括胖JAR文件、虚拟机镜像,以及操作系统容器(Docker)镜像。 你将学会如何使用Jenkins、PMD和FindSecBug等持续集成工具自动化地进行代码质量检查。 你将学会如何创建一个复杂的构建管道,以及如何设计独立的部署和发布流程。 你将了解为什么功能测试和系统质量属性测试对于开发和交付非常重要。 你将学会如何在本地有效地构建和测试应用程序,以及监控生产环境中运行的应用程序。

book

复杂性思考:复杂性科学和计算模型(原书第2 版)

by Allen B. Downey

复杂性科学使用计算来探索物理和社会科学。在本书中,你将使用图表、元胞自动机以及基于智能体的模型来研究物理学、生物学和经济学。 无论你是中等水平的Python程序员还是希望学习计算机建模的学生,都可以通过一系列工作示例、练习、案例研究和易于理解的解释深入学习复杂系统。 在更新后的第2版中,你将: 使用NumPy数组和SciPy方法,包括基本信号处理和快速傅里叶变换。 研究复杂物理系统的抽象模型,包括幂律、分形、粉红噪声和图灵机。 获取包含入门代码和解决方案的Jupyter笔记本,以便重复实现和扩展原始实验的复杂性以及计算模型,如Turmite、图灵机和元胞自动机。 探索科学中的哲学,包括科学规律的本质、理论选择,以及现实主义和工具主义。 作为Python编程与算法的理想教材,本书还有助于自学者掌握关于他们可能未曾谋面的主题与想法的宝贵经验。