有电书房店铺主页二维码
有电书房
微信扫描二维码,访问我们的微信店铺

可编程网络自动化(第二版)

178.20
运费: ¥ 5.00-264.00
库存: 300 件
可编程网络自动化(第二版) 商品图0
可编程网络自动化(第二版) 商品图1
可编程网络自动化(第二版) 商品图2
可编程网络自动化(第二版) 商品缩略图0 可编程网络自动化(第二版) 商品缩略图1 可编程网络自动化(第二版) 商品缩略图2

商品详情

书名:可编程网络自动化(第二版)
书号:978-7-5239-0538-8
定价:198元
作者:[美]马特·奥斯瓦尔特(Matt Oswalt) [西]克里斯蒂安·阿德尔(Christian Adell) [美]斯科特·S. 洛(Scott S. Lowe) [美]贾森·埃德尔曼(Jason Edelman) 著 门佳 译
出版时间:2026-06-12
出版社:中国电力出版社
页码: 816    字数(千字):802
开本:特16开    版次:B1    印次:Y1


品牌介绍

中国电力出版社成立于 1951 年,作为中国成立最早的中央科技出版社之一,曾隶属于水利电力部、能源部、电力工业部、国家电力公司,现为国家电网公司所属的科技出版社,在电气技术专业出版领域享有极高的声誉。该社作为以图书出版为主体,音像、电子出版物、期刊、网络出版共同发展的大型出版企业,以强大的出版资源和高素质的专业队伍,致力于向读者提供包括电力工程、电气工程、建筑工程、电子技术、信息技术、外语、大中专教材、家教等学科门类齐全的权威出版物,也竭力为广大师生提供精品教材,是教育部和北京市教委规划教材的出版基地之一。


编辑推荐

编辑推荐 如今,网络工程师越来越难仅依赖手动流程来完成工作。新的协议、技术、交付模型,以及企业对敏捷性和灵活性日益增长的需求,使得网络自动化成为必然选择。 专家推荐 “本书帮助网络专业人员和开发人员编写清晰、易于扩展的网络自动化playbook。它涵盖了掌控网络自动化所需的几乎所有内容。” —— Akhil Behl Red Hat合作伙伴经理


作者介绍

Matt Oswalt是Cloudflare的高级系统工程师,主要负责分布式系统以及互联网和Web协议相关工作。Christian Adell是Network to Code的首席架构师,拥有为本地和云环境构建及交付网络自动化解决方案的丰富经验。Scott Lowe任职于Pulumi的开发者关系团队,专注于基础设施即代码以及云基础设施与服务的自动化。Jason Edelman是领先的网络自动化解决方案提供商Network to Code的创始人兼首席技术官。Jason于2014年创立了Network to Code。


内容介绍

本书的主要内容有:基于Linux的新型网络技术与云原生环境,以及如何利用它们为网络项目搭建开发环境。Python和Go编程技能。如何通过模板技术构建一致的网络设备配置。数据格式、编码及模型:JSON、XML、YAML、Protobuf、YANG。应用程序接口(API)在网络自动化中的作用,包括HTTP API、NETCONF、RESTCONF、gNMI。如何在网络自动化项目中使用Git等版本控制系统以及持续集成等开发实践。如何使用Ansible、Nornir、Terraform实现网络设备与服务的自动化。以整体化视角设计网络自动化解决方案。
本书适用于网络工程师、系统管理员和软件开发人员。


前言

前言 欢迎阅读本书! 网络行业正在发生巨变。新协议、新技术、新交付模型的不断涌现,企业为提高竞争力而对敏捷性和灵活性的更高需求,正共同推动着各类组织和网络从业者拥抱网络可编程性与自动化的理念。这股动力如今可能比以往任何时候都更强劲。但是,究竟什么是网络可编程性与自动化?本书就从解答这个问题开始。 本书内容 正如书名所示,本书聚焦于网络可编程性与自动化。从本质上讲,网络可编程性与自动化旨在简化配置、管理、运行网络设备、网络拓扑、网络服务以及网络连接时所需的各种任务。 其中涉及大量组件,包括如今在网络领域应用比过去更为广泛的操作系统、持续集成这样的新方法论,以及那些以往可能仅属于系统管理员领域的工具(例如源代码控制和配置管理系统)。由于这些内容构成了网络可编程性与自动化核心定义的一部分,因此书中也将涵盖这些主题。本书的目标是帮助你建立关于网络可编程性与自动化的基础知识体系。 本版新增内容 新版在第一版基础上进行了更新,添加全新的四章: • 第4 章,云。 • 第5 章,网络开发人员环境。 • 第7 章,Go 语言。 • 第14 章,网络自动化架构。 我们还更新了现有章节,补充了一些新概念,比如: • Google Protocol Buffers • gRPC/gNMI • Terraform • Nornir 在这些新增内容之外,我们还对每一章进行了修订和扩展,以反映自第一版出版以来所取得的技术进展和行业变化。 我们非常高兴有机会将这些令人兴奋的全新主题加入本书。由于篇幅限制,第一版的部分内容未能收录于此。不过,我们并未简单删除这些内容,而是将其免费发布在https://oreilly-npa-book.github.io。 本书的编排方式 本书并要求读者从头到尾依次阅读;相反,我们依照主题对全书进行了划分,以便你能够轻松找到最感兴趣的内容。建议你先按顺序阅读前三章,这部分提供了背景知识,为后续内容奠定了基础。之后你可自由跳转到对你最有用或最感兴趣的主题。 我们尽量使各章节保持相对独立,但正如任何技术领域一样,这并不总是完全可行。 我们尽可能提供交叉引用,帮助你找到所需的信息。 下面简要介绍一下各个主题的编排方式: 第1 章,网络行业趋势。 概述推动软件定义网络(software-defined networking,SDN)出现的主要事件和趋势。你将看到,SDN 正是引发业界关注网络可编程性与自动化的起点。 第2 章,网络自动化。 承接第1 章的SDN 讨论,聚焦网络自动化领域,涵盖自动化发展历程、自动化类型、相关工具与技术,以及自动化如何影响运维模型(包括运维模型如何反作用于自动化)。 第3 章,Linux。 概述Linux 操作系统。本章并不是对Linux 的全面讨论,而是旨在帮助网络从业者快速掌握Linux 基础、常用命令以及网络概念。 第4 章,云。 从网络视角介绍云计算,为容器与Kubernetes 网络等相关主题提供切入点。同时探讨网络工程师现有技能如何迁移至云端环境。 第5 章,网络开发人员环境。 探讨维护网络开发环境的工具和技术。这是网络自动化项目的重要组成部分,能够使团队在解决方案上更有效地开展协作,并高效地从开发阶段推进到测试阶段,直至生产环境。 第6 章,Python。 为网络从业者介绍Python( 编程的很多基础内容:数据类型、条件语句、循环结构、文件操作、函数、类以及模块。 第7 章,Go 语言。 通过探索Go 语言,为网络自动化从业者的编程语言工具箱增加第二种选择。Go语言近年来越来越受欢迎,这在很大程度上得益于云原生生态系统的发展,即使对于刚开始自动化之旅的人来说,它也是一项很有价值的技能。 第8 章,数据格式与模型。 深入讲解用于传输、存储、建模网络自动化数据的格式与方法。理解并处理数据的能力是任何网络自动化从业者的一项基本技能,本章将为后续章节奠定坚实基础。 第9 章,模板。 介绍如何使用模板语言创建网络设备配置。虽然本章主要关注Jinja 模板语言(因其与Python 原生集成),但我们也探讨了Go 模板和可扩展样式表语言转换(Extensible Stylesheet Language Transformations,XSLT)。 第10 章,使用网络API。 阐述API 在网络可编程性与自动化中的作用。我们将探讨与API 相关的关键术语和技术,并以HTTP、NETCONF、RESTCONF、gNMI 为例,展示其在网络编程与自动化中的应用。此外,还结合Python 和Go 语言库,演示如何通过这些API实现网络设备自动化。 第11 章,Git 源代码管理。 介绍广受欢迎的源代码管理工具Git(。 第12 章,自动化工具。 探讨如何使用开源自动化工具,比如Ansible(。 第13 章,持续集成。 介绍持续集成(continuous integration,CI)以及相关的重要工具和技术。我们将讨论测试驱动开发(test-driven development,TDD)的使用,探讨GitLab、Jenkins 等工具和框架,并展示一个整合所有CI 元素的网络自动化工作流示例。 第14 章,网络自动化架构。 通过提出一种整体性网络自动化解决方案参考架构,将前面各章介绍的所有概念加以统一。结合自动化与编排,探讨“事实源”这一概念,并说明在此类系统中用户交互可能的实现方式。 目标读者 如前所述,本书的目标是为你提供网络可编程性与自动化领域的基础知识和基本技能。我们相信,不同IT 领域的从业者都可以从阅读本书中受益。 网络工程师 鉴于本书聚焦网络可编程性与自动化,因此目标读者群体之一自然是“传统”网络工程师,即那些熟悉网络协议、网络设备配置以及网络运行和管理的从业者。你将学习如何使用自动化来完成配置管理、故障排查、可观测性等工作。本书将助力网络工程师通过自动化与可编程性提升工作效率,构建更可靠的基础设施。 前提条件 对网络可编程性与自动化感兴趣的网络工程师无需具备软件开发、编程、自动化或DevOps 相关工具方面的任何先验知识。唯一的前提是保持开放心态,愿意了解新技术,以及它们对你(作为一名网络从业者),乃至整个网络行业的影响。 系统管理员 系统管理员主要负责管理联网系统,可能已具备部分工具(特别是Linux、源代码控制、配置管理系统)的使用经验。因此,本书可以作为一种途径,通过讲解这些工具在不同场景中应用(例如,使用Ansible 配置网络交换机,而非配置运行Linux 发行版的服务器),帮助系统管理员拓展相关知识并加深理解。 前提条件 本书不涉及核心网络协议或概念的讲解。不过,由于系统管理员在管理联网系统的过程中通常会接触到相关内容,我们预计其中很多人也具备一定的核心网络协议基础知识。因此,对于大多数有经验的系统管理员来说,阅读本书应该不会有问题。如果你的网络知识较为薄弱,我们建议你同时阅读一本专注于网络核心概念和原理的书籍,以此作为补充。例如,Bruce Hartpence 所著的Packet Guide to Core Network Protocols(O’Reilly 出版)可能是一个不错的选择。 软件开发人员 软件开发人员同样可以从阅读本书中受益。很多开发人员可能已经使用过书中讨论的一些编程语言和开发工具(比如Python、Git)。与系统管理员类似,开发人员也可能会发现,了解这些开发工具和编程语言在以网络为中心的场景中的使用方式很有帮助(例如,了解如何使用Python 获取和存储网络相关的数据)。 前提条件 我们假设你对网络核心协议和概念有基本的理解,并且本书中的所有示例均以网络为中心。与系统管理员一样,如果软件开发人员对网络不熟悉,可能会发现有必要同时阅读一本专注于网络核心概念的书籍作为补充。 本书使用的工具 与任何技术领域一样,网络可编程性与自动化领域中的技术和工具有很多不同的版本和变体。因此,本书采用了一套我们认为最能代表实际应用场景的标准化工具。例如,Linux 发行版众多,但我们只关注Debian、Ubuntu(本身是Debian 的衍生版)以及CentOS(Red Hat Enterprise Linux 的衍生版)。为了方便读者,我们会在各工具的特定章节中明确指出所使用的具体版本。 在线资源 我们不可能在本书中涵盖关于网络自动化和网络可编程性的所有内容。因此,全书会引用各种额外的在线资源,帮助你更好地理解所介绍的概念和技能。 排版约定 本书使用以下排版约定: 斜体(Italic) 表示新术语、URL、电子邮件地址、文件名、文件扩展名。 等宽字体(Constant width) 表示程序代码,以及正文中出现的变量名、函数名、数据库、数据类型、环境变量、语句、关键字等。 等宽粗体(Constant width bold) 表示应该由用户照原样输入的命令或其他文本。 等宽斜体(Constant width italic) 表示该文本应被替换为用户输入的值或根据上下文确定的值。 示例代码的使用 本书补充材料(示例代码和练习等)可从https://github.com/oreilly-npa-book/examples/tree/v2 下载。 如果你有技术疑问或在使用代码示例时遇到问题,请发送电子邮件至support@oreilly.com。 本书旨在帮助你完成工作。一般来说,你可以在自己的程序或文档中使用本书提供的示例代码。除非需要复制大量代码,否则无须联系我们获得许可。例如,使用本书中的几个代码片段编写程序无须获得许可,销售或分发O’Reilly 图书的示例光盘则需要获得许可;引用本书中的示例代码回答问题无须获得许可,如果是将本书中的大量示例代码放入你的产品文档中则需要获得许可。 我们感谢,但不要求在引用本书内容时标注出处。出处说明通常包括书名、作者、出版社、ISBN,例如:“Network Programmability and Automation, 2nd Edition, by Matt Oswalt, Christian Adell, Scott S. Lowe, and Jason Edelman (O’Reilly). Copyright 2023 Matt Oswalt, Scott S. Lowe, and Christian Adell, 978-1-098-11083-3”。 如果你觉得自己对示例代码的用法超出了上述许可的范围,欢迎通过permissions@oreilly.com 与我们联系。 O’Reilly 在线学习平台(O’Reilly Online Learning) 近40 年来,O’Reilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。 公司独有的专家和改革创新者网络通过O’Reilly 书籍、文章以及在线学习平台,分享他们的专业知识和实践经验。O’Reilly 在线学习平台按照您的需要提供实时培训课程、深入学习渠道、交互式编程环境以及来自O’Reilly 和其他200 多家出版商的大量书籍与视频资料。更多信息,请访问网站:/。 联系我们 任何有关本书的意见或疑问,请按照以下地址联系出版社。 美国: O’Reilly Media, Inc. 141 Stony Circle, Suite 195 Santa Rosa, CA 95401 中国: 北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035) 奥莱利技术咨询(北京)有限公司 O’Reilly 的每一本书都有专属网页,其中包括勘误表、示例代码以及其他信息。本书的网址为https://oreil.ly/NPA_2e。 要了解更多O’Reilly 图书、培训课程、新闻,请访问https://oreilly.com。 对本书中文版有任何建议可以发电子邮件到errata@oreilly.com.cn。 我们的LinkedIn:。 我们的Twitter:。 我们的YouTube:。 致谢 如果没有众多人士的帮助与支持,本书难以问世。 首先,我们要向充满活力的网络自动化社区致以诚挚谢意。虽无法逐一列举姓名,但正是他们创造了NAPALM、Netmiko、Nornir、Containerlab 等开源项目,在推动行业了解网络自动化方面发挥了重要作用,并始终不遗余力地贡献知识与经验以惠泽他人。 感谢你们的努力和贡献。 我们的技术审阅专家在确保本书内容的准确性与可读性方面发挥了关键作用。谨此感谢Patrick Ogenstad、Akhil Behl、Eric Chou、Sreenivas Makam、Michael Kehoe、Arthur Chiao。感谢各位倾力相助,使本书更加完善! 最后,我们还要向O’Reilly Media 的工作人员表达谢意:编辑Simina Calin、Jennifer Pollock、Melissa Potter、产品编辑Kristen Brown、文字编辑Sharon Wilkey、校对Stephanie English 以及索引编制者Bill Morrison。


目录

目录
前言 1
第1 章 网络行业趋势 11
11 SDN 的兴起 11
111 OpenFlow 问世 11
112 为什么是OpenFlow 13
12 什么是软件定义网络 15
121 开放数据平面 16
122 网络功能虚拟化 18
123 虚拟交换 20
124 网络虚拟化 21
125 设备API 22
126 网络自动化 23
127 裸机交换 25
128 数据中心网络架构 27
129 SDWAN 28
1210 控制器网络30
1211 云原生网络 31
13 小结 32
第2 章 网络自动化 33
21 为什么要实现网络自动化 34
211 简化架构 34
212 确定性结果 34
213 业务敏捷力 35
214 安全增强与风险管控35
22 网络自动化的类型 36
221 设备制备 36
222 数据采集与丰富 39
223 迁移 41
224 配置管理 41
225 配置合规性 42
226 状态验证 43
227 报表 44
228 故障排查 44
23 从SNMP 向设备API 的管理平面演变 46
231 应用程序编程接口(API) 46
232 开放网络运动的影响50
24 SDN 时代的网络自动化 50
25 小结 51
第3 章 Linux 53
31 网络自动化场景中的Linux 53
32 Linux 简史 54
33 Linux 发行版 55
331 Red Hat Enterprise Linux 、Fedora、CentOS,以及Amazon Linux 55
332 Debian、Ubuntu 和其他衍生版 57
333 其他Linux 发行版 58
34 使用Linux 59
341 文件系统导航 60
342 操作文件和目录 64
343 运行程序 70
344 守护进程 73
35 Linux 网络技术 76
351 使用接口 77
352 作为端主机的路由 89
353 像路由器一样执行路由操作 93
354 桥接(交换) 94
36 使用bash 脚本实现Linux 自动化 99
37 eBPF 与XDP:驱动Linux 内核演进 102
38 小结 103
第4 章 云 105
41 云计算的简明定义 105
42 云环境中的网络基础 108
421 云网络基础组件 108
422 云网络拓扑 110
423 云网络自动化 116
43 容器 119
431 容器与云有什么关系? 121
432 容器与网络有什么关系? 121
433 为容器扩展Linux 网络功能 122
44 Kubernetes 132
441 Kubernetes 的关键概念 133
442 Kubernetes 网络的基础组件 134
443 服务网格 142
45 小结 143
第5 章 网络开发人员环境 145
51 文本编辑器 146
511 语法高亮 147
512 定制化 148
513 智能代码分析 149
514 文本编辑器与集成开发环境 153
52 开发工具 154
521 Virtualenv 155
522 Make 156
523 Docker 157
524 dyff 160
53 仿真/ 模拟工具 161
531 VirtualBox 162
532 Vagrant 163
533 Containerlab 167
534 其他工具 170
54 小结 170
第6 章 Python 171
61 网络工程师是否应该学习代码? 172
62 使用Python 交互式解释器 173
63 理解Python 数据类型 175
631 字符串 176
632 数值 186
633 布尔值 188
634 列表 192
635 Python 字典 198
636 集合与元组 203
64 向代码中添加条件逻辑 205
65 理解包含关系 207
66 在Python 中使用循环 208
661 while 循环 209
662 for 循环 209
67 使用Python 函数 214
68 处理文件 218
681 读取文件 218
682 写入文件 221
69 创建Python 程序 223
691 创建一个Python 基础脚本 223
692 在Python 中使用注释 224
693 将代码从Python 解释器迁移到Python 脚本 226
610 使用Python 模块 228
611 传入Python 脚本参数 231
612 使用pip 安装Python 包 232
613 理解Python 类 236
6131 使用类 236
6132 构建自定义类 237
614 使用try/except 从容应对失败 240
615 Python 程序并行化 241
616 小结 245
第7 章 Go 语言 247
71 为什么选择Go 248
711 Go 比Python 更快吗 250
712 Go 比Python 更难吗 251
72 Go 基础概念 252
721 数据类型与变量 253
722 流程控制 258
723 集合类型 262
724 函数 273
725 结构体 279
726 方法 282
727 接口 286
73 进阶概念 291
731 并发 292
732 泛型 299
74 包与模块 301
741 标准库包 303
742 第三方模块与包 315
75 小结 319
第8 章 数据格式与模型 321
81 结构化数据格式的优势与基础知识 321
811 当结构化数据不可用时:屏幕抓取 325
812 数据类型 326
813 文档与数据 326
814 数据格式的分类 327
82 文本型数据格式 327
821 YAML 329
822 XML 332
823 JSON 338
83 二进制数据格式 343
831 Protocol Buffers346
832 其他二进制数据格式352
84 数据建模 354
841 YANG 357
842 JSON Schema 363
843 XML Schema Definition 368
844 Protocol Buffers 的建模与验证 370
85 小结 370
第9 章 模板 373
91 现代模板语言的兴起 373
911 使用模板进行Web 开发 374
912 拓展模板的使用 375
92 模板在网络自动化中的价值376
93 Jinja 377
931 在Python 中渲染Jinja 模板文件 379
932 使用条件判断与循环381
933 使用Jinja 过滤器 387
934 Jinja 模板继承 390
935 在Jinja 中创建变量创建 392
94 可扩展样式表语言转换 392
95 Go 模板 396
96 小结 403
第10 章 使用网络API 405
101 理解网络API 406
1011 熟悉基于HTTP 的API 406
1012 使用NETCONF 418
1013 使用RESTCONF 433
1014 使用gRPC 与gNMI 442
1015 比较NETCONF、RESTCONF 和gNMI 455
102 使用网络API 实现自动化 460
1021 Python Requests 库 461
1022 Go net/http 包 474
1023 Python ncclient 库 478
1024 OpenConfig gNMIc Go 包 488
1025 Python Netmiko 库 496
103 小结 504
第11 章 Git 源代码管理 507
111 源代码管理的应用场景 507
112 源代码管理的优势 508
1121 变更跟踪 508
1122 责任追溯 508
1123 流程与工作流 508
113 源代码管理在网络领域中的优势 509
114 走进Git 509
1141 Git 简史 510
1142 Git 术语 511
1143 Git 架构概览 511
105 使用Git 513
1051 安装Git 513
1052 创建仓库 513
1053 向仓库中添加文件 514
1054 向仓库提交变更 516
1155 修改并提交已跟踪的文件 519
1156 取消暂存文件 522
1157 从仓库中排除文件 525
1158 查看仓库的更多信息 528
1159 提取文件版本之间的差异 533
11510 在Git 中为提交添加标签 536
116 Git 的分支机制 539
1161 重命名默认分支 544
1162 创建分支 545
1163 检出分支 546
1164 stash 机制 548
1165 分支的合并与删除 551
117 使用Git 进行协作 557
1171 在运行Git 的多系统之间开展协作 558
1172 通过基于Git 的在线服务展开协作 575
118 小结 579
第12 章 自动化工具 581
121 自动化工具回顾 582
122 使用Ansible 584
1221 认识Ansible 框架 585
1222 理解Ansible 的工作原理 586
1223 构建清单文件 587
1224 执行Ansible playbook 594
1225 使用机密信息 600
1226 使用变量文件 601
1227 编写Ansible playbook 实现网络自动化 603
1228 使用第三方集合与模块 625
1229 Ansible 小结 628
123 使用Nornir 实现自动化 629
1231 Nornir 入门 630
1232 在Nornir 中使用NAPALM 638
1233 Nornir 小结 646
124 使用Terraform 管理动态基础设施 646
1241 理解Terraform 架构 648
1242 使用Terraform 创建首个资源 652
1243 丰富Terraform 的执行能力 668
1244 在大规模场景下管理Terraform 677
1245 打破Terraform 的常规用法 688
1246 Terraform 总结 695
125 小结 695
第13 章 持续集成 697
131 重要前提 699
1311 简单胜于复杂 699
1312 人、流程与技术 700
1313 学会编程 700
132 持续集成简介 700
1321 CI 基础 701
1322 持续交付 702
1323 测试驱动开发 704
1324 为什么要在网络中实践持续集成? 705
133 面向网络的持续集成流水线 706
1331 同行评审 708
1332 构建自动化714
1333 部署验证与测试 720
1334 测试/ 开发/ 预发布环境 722
1335 部署工具与策略 724
134 小结 727
第14 章 网络自动化架构 729
141 网络自动化架构简介 729
142 架构组件概览 733
1421 用户交互 733
1422 事实源 742
1423 自动化引擎759
1424 遥测与可观测性 765
1425 编排 784
143 结合示例理解架构788
1431 确定运维工作流 788
1432 将工作流步骤转变为自动化任务 789
1433 将自动化任务映射到架构组件 790
1434 选择工具来实现每个组件的任务 792
144 小结 794


有电书房店铺主页二维码
有电书房
扫描二维码,访问我们的微信店铺

可编程网络自动化(第二版)

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏