可编程网络自动化

可编程网络自动化
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (Jason Edelman) , [美]
2023-01
版次: 1
ISBN: 9787115606181
定价: 139.80
装帧: 其他
开本: 其他
纸张: 胶版纸
页数: 456页
字数: 624千字
2人买过
  • 本书提供了可编程网络自动化的基本技能,使用了包括Linux、Python、JSON和XML在内的一系列技术。本书涵盖以下内容:Python编程基础、网络自动化所需的Linux基础、数据格式和数据模型,并介绍了Jinja模板及其在创建网络设备配置中的适用性、应用程序接口在网络自动化中的作用、使用Git进行源代码管理以在自动化过程中管理代码更改,等等。 贾森·埃德尔曼(Jason Edelman),网络工程师,持有CCIE认证和VCDX-NV认证,典型的“CLI爱好者”和“路由器玩家”。他的公司Network to Code致力于帮助厂商和用户利用新的工具和技术提高工作效率。 斯科特·S. 洛(Scott S. Lowe),VMware公司的工程架构师,在从事计算虚拟化工作多年后投身于云计算和网络虚拟化,著有多本关于vSphere和OpenStack的技术图书。 马特·奥斯瓦尔特(Matt Oswalt),Cloudflare公司的软件工程师,致力于解决软件开发和网络基础设施交叉领域的技术和非技术难题,同时讲授与Docker和可编程网络自动化相关的在线课程。 本书赞誉 xiii

    前言 xv

    第 1 章 网络行业发展趋势 1

    1.1 SDN的兴起 1

    1.1.1 OpenFlow 1

    1.1.2 什么是软件定义网络 4

    1.2 小结 13

    第 2 章 网络自动化 14

    2.1 为什么要实现网络自动化 15

    2.1.1 简化架构 15

    2.1.2 确定性结果 15

    2.1.3 业务敏捷性 16

    2.2 网络自动化的类型 16

    2.2.1 设备配给 16

    2.2.2 数据采集 18

    2.2.3 迁移 19

    2.2.4 配置管理 20

    2.2.5 合规性 20

    2.2.6 报告 21

    2.2.7 故障排除 21

    2.3 管理平面从SNMP向设备API的演变 22

    2.3.1 应用程序接口(API) 22

    2.3.2 开放网络运动的影响 25

    2.4 SDN时代的网络自动化 26

    2.5 小结 26

    第 3 章 Linux 27

    3.1 网络自动化场景中的Linux 27

    3.2 Linux简史 28

    3.3 Linux发行版 28

    3.3.1 Red Hat Enterprise Linux、Fedora和CentOS 29

    3.3.2 Debian、Ubuntu和其他衍生版 30

    3.3.3 其他Linux发行版 31

    3.4 Linux交互 31

    3.4.1 文件系统导航 32

    3.4.2 操作文件和目录 35

    3.4.3 运行程序 40

    3.4.4 守护进程 42

    3.5 Linux联网 46

    3.5.1 使用接口 46

    3.5.2 作为端主机的路由 54

    3.5.3 作为路由器的路由 58

    3.5.4 桥接(交换) 59

    3.6 小结 64

    第 4 章 在网络场景中学习Python 65

    4.1 网络工程师是否应该学习代码 65

    4.2 使用Python交互式解释器 67

    4.3 理解Python数据类型 69

    4.3.1 学习使用字符串 69

    4.3.2 学习使用数字 77

    4.3.3 学习使用布尔值 79

    4.3.4 学习使用Python列表 81

    4.3.5 学习使用Python字典 85

    4.3.6 学习Python集合与元组 89

    4.4 向代码中添加条件逻辑 90

    4.5 理解容纳 92

    4.6 在Python中使用循环 93

    4.6.1 理解while循环 94

    4.6.2 理解for循环 94

    4.7 使用Python函数 97

    4.8 处理文件 101

    4.8.1 读取文件 101

    4.8.2 写入文件 103

    4.9 创建Python程序 105

    4.9.1 创建一个基本的Python脚本 105

    4.9.2 理解shebang 105

    4.9.3 将代码从Python解释器迁移到Python脚本 107

    4.10 使用Python模块 108

    4.11 传入Python脚本参数 109

    4.12 使用pip与安装Python包 111

    4.13 使用Python时的其他一些提示、技巧和一般信息 112

    4.14 小结 117

    第 5 章 数据格式与数据模型 118

    5.1 数据格式简介 118

    5.2 YAML 121

    5.2.1 YAML基础 121

    5.2.2 在Python中使用YAML 123

    5.2.3 YAML的数据模型 124

    5.3 XML 125

    5.3.1 XML基础 125

    5.3.2 将XML模式定义用于数据模型 126

    5.3.3 使用XSLT转换XML 128

    5.3.4 使用XQuery搜索XML 131

    5.4 JSON 131

    5.4.1 JSON基础 131

    5.4.2 在Python中使用JSON 133

    5.4.3 使用JSON模式描述数据模型 134

    5.5 使用YANG描述数据模型 135

    5.5.1 YANG概述 135

    5.5.2 深入YANG 136

    5.6 小结 139

    第 6 章 网络配置模板 140

    6.1 现代模板语言的兴起 140

    6.1.1 使用模板进行Web开发 141

    6.1.2 拓展模板应用 142

    6.2 模板在网络自动化中所体现的价值 142

    6.3 使用Jinja生成网络配置模板 143

    6.3.1 为什么是Jinja 143

    6.3.2 在基本Jinja模板中动态插入数据 143

    6.3.3 在Python中渲染Jinja模板 144

    6.3.4 条件与循环 146

    6.3.5 Jinja过滤器 151

    6.3.6 Jinja模板继承 154

    6.3.7 在Jinja中创建变量 155

    6.4 小结 155

    第 7 章 使用网络API 156

    7.1 理解网络API 156

    7.1.1 熟悉基于HTTP的API 157

    7.1.2 深入NETCONF 160

    7.2 探究网络API 166

    7.2.1 探究基于HTTP的API 166

    7.2.2 探究NETCONF 172

    7.3 使用网络API实现自动化 180

    7.3.1 使用requests库 180

    7.3.2 使用Python ncclient库 206

    7.3.3 使用netmiko 226

    7.4 小结 231

    第 8 章 使用Git控制源代码 233

    8.1 源代码控制用例 233

    8.2 源代码控制的好处 234

    8.2.1 跟踪变更 234

    8.2.2 可审计性 234

    8.2.3 流程和工作流 234

    8.3 源代码控制对网络的好处 234

    8.4 Git 235

    8.4.1 Git简史 235

    8.4.2 Git术语 236

    8.4.3 Git架构概述 236

    8.5 使用Git 237

    8.5.1 安装Git 237

    8.5.2 创建仓库 238

    8.5.3 向仓库中添加文件 238

    8.5.4 向仓库提交变更 239

    8.5.5 变更并提交已跟踪的文件 242

    8.5.6 撤销暂存 244

    8.5.7 从仓库中排除文件 246

    8.5.8 查看仓库的更多信息 249

    8.5.9 找出文件不同版本之间的差异 253

    8.6 Git分支 256

    8.6.1 创建分支 260

    8.6.2 检出分支 261

    8.6.3 合并分支和删除分支 263

    8.7 使用Git进行协作 266

    8.7.1 在运行Git的多个系统之间协作 267

    8.7.2 使用基于Git的在线服务进行协作 279

    8.8 小结 283

    第 9 章 自动化工具 284

    9.1 回顾自动化工具 284

    9.2 使用Ansible 286

    9.2.1 理解Ansible的工作原理 286

    9.2.2 构建清单文件 287

    9.2.3 执行Ansible剧本 294

    9.2.4 使用变量文件 297

    9.2.5 编写用于实现网络自动化的Ansible剧本 299

    9.2.6 使用第三方Ansible模块 314

    9.2.7 Ansible小结 316

    9.3 使用Salt实现自动化 317

    9.3.1 理解Salt架构 317

    9.3.2 熟悉Salt 320

    9.3.3 使用Salt管理网络配置 333

    9.3.4 远程执行Salt函数 341

    9.3.5 深入Salt的事件驱动基础设施 342

    9.3.6 进一步深入Salt 347

    9.3.7 Salt小结 350

    9.4 使用StackStorm实现事件驱动网络自动化 350

    9.4.1 StackStorm概念 350

    9.4.2 StackStorm架构 352

    9.4.3 动作和工作流 353

    9.4.4 传感器和触发器 362

    9.4.5 规则 364

    9.4.6 StackStorm小结 366

    9.5 小结 366

    第 10 章 持续集成 367

    10.1 重要的先决条件 368

    10.1.1 越简单越好 369

    10.1.2 人、流程和技术 369

    10.1.3 学习编写代码 369

    10.2 CI简介 369

    10.2.1 CI基础 370

    10.2.2 持续交付 371

    10.2.3 测试驱动开发 372

    10.2.4 为什么要对网络进行CI 374

    10.3 用于网络的CI管道 374

    10.3.1 同行评审 376

    10.3.2 构建自动化 380

    10.3.3 测试/开发/类生产环境 384

    10.3.4 部署工具 387

    10.3.5 测试工具和测试驱动的网络自动化 388

    10.4 小结 390

    第 11 章 打造网络自动化文化 391

    11.1 组织策略和灵活性 392

    11.1.1 改造旧日组织 392

    11.1.2 获得管理层认同的重要性 393

    11.1.3 构建与购买 393

    11.2 拥抱失败 394

    11.3 技能和教育 395

    11.3.1 探索未知 396

    11.3.2 注重基础 396

    11.3.3 认证 397

    11.3.4 自动化不会抢走我的饭碗吗 397

    11.4 小结 398

    附录A Linux高级联网 399

    附录B 使用NAPALM 423
  • 内容简介:
    本书提供了可编程网络自动化的基本技能,使用了包括Linux、Python、JSON和XML在内的一系列技术。本书涵盖以下内容:Python编程基础、网络自动化所需的Linux基础、数据格式和数据模型,并介绍了Jinja模板及其在创建网络设备配置中的适用性、应用程序接口在网络自动化中的作用、使用Git进行源代码管理以在自动化过程中管理代码更改,等等。
  • 作者简介:
    贾森·埃德尔曼(Jason Edelman),网络工程师,持有CCIE认证和VCDX-NV认证,典型的“CLI爱好者”和“路由器玩家”。他的公司Network to Code致力于帮助厂商和用户利用新的工具和技术提高工作效率。 斯科特·S. 洛(Scott S. Lowe),VMware公司的工程架构师,在从事计算虚拟化工作多年后投身于云计算和网络虚拟化,著有多本关于vSphere和OpenStack的技术图书。 马特·奥斯瓦尔特(Matt Oswalt),Cloudflare公司的软件工程师,致力于解决软件开发和网络基础设施交叉领域的技术和非技术难题,同时讲授与Docker和可编程网络自动化相关的在线课程。
  • 目录:
    本书赞誉 xiii

    前言 xv

    第 1 章 网络行业发展趋势 1

    1.1 SDN的兴起 1

    1.1.1 OpenFlow 1

    1.1.2 什么是软件定义网络 4

    1.2 小结 13

    第 2 章 网络自动化 14

    2.1 为什么要实现网络自动化 15

    2.1.1 简化架构 15

    2.1.2 确定性结果 15

    2.1.3 业务敏捷性 16

    2.2 网络自动化的类型 16

    2.2.1 设备配给 16

    2.2.2 数据采集 18

    2.2.3 迁移 19

    2.2.4 配置管理 20

    2.2.5 合规性 20

    2.2.6 报告 21

    2.2.7 故障排除 21

    2.3 管理平面从SNMP向设备API的演变 22

    2.3.1 应用程序接口(API) 22

    2.3.2 开放网络运动的影响 25

    2.4 SDN时代的网络自动化 26

    2.5 小结 26

    第 3 章 Linux 27

    3.1 网络自动化场景中的Linux 27

    3.2 Linux简史 28

    3.3 Linux发行版 28

    3.3.1 Red Hat Enterprise Linux、Fedora和CentOS 29

    3.3.2 Debian、Ubuntu和其他衍生版 30

    3.3.3 其他Linux发行版 31

    3.4 Linux交互 31

    3.4.1 文件系统导航 32

    3.4.2 操作文件和目录 35

    3.4.3 运行程序 40

    3.4.4 守护进程 42

    3.5 Linux联网 46

    3.5.1 使用接口 46

    3.5.2 作为端主机的路由 54

    3.5.3 作为路由器的路由 58

    3.5.4 桥接(交换) 59

    3.6 小结 64

    第 4 章 在网络场景中学习Python 65

    4.1 网络工程师是否应该学习代码 65

    4.2 使用Python交互式解释器 67

    4.3 理解Python数据类型 69

    4.3.1 学习使用字符串 69

    4.3.2 学习使用数字 77

    4.3.3 学习使用布尔值 79

    4.3.4 学习使用Python列表 81

    4.3.5 学习使用Python字典 85

    4.3.6 学习Python集合与元组 89

    4.4 向代码中添加条件逻辑 90

    4.5 理解容纳 92

    4.6 在Python中使用循环 93

    4.6.1 理解while循环 94

    4.6.2 理解for循环 94

    4.7 使用Python函数 97

    4.8 处理文件 101

    4.8.1 读取文件 101

    4.8.2 写入文件 103

    4.9 创建Python程序 105

    4.9.1 创建一个基本的Python脚本 105

    4.9.2 理解shebang 105

    4.9.3 将代码从Python解释器迁移到Python脚本 107

    4.10 使用Python模块 108

    4.11 传入Python脚本参数 109

    4.12 使用pip与安装Python包 111

    4.13 使用Python时的其他一些提示、技巧和一般信息 112

    4.14 小结 117

    第 5 章 数据格式与数据模型 118

    5.1 数据格式简介 118

    5.2 YAML 121

    5.2.1 YAML基础 121

    5.2.2 在Python中使用YAML 123

    5.2.3 YAML的数据模型 124

    5.3 XML 125

    5.3.1 XML基础 125

    5.3.2 将XML模式定义用于数据模型 126

    5.3.3 使用XSLT转换XML 128

    5.3.4 使用XQuery搜索XML 131

    5.4 JSON 131

    5.4.1 JSON基础 131

    5.4.2 在Python中使用JSON 133

    5.4.3 使用JSON模式描述数据模型 134

    5.5 使用YANG描述数据模型 135

    5.5.1 YANG概述 135

    5.5.2 深入YANG 136

    5.6 小结 139

    第 6 章 网络配置模板 140

    6.1 现代模板语言的兴起 140

    6.1.1 使用模板进行Web开发 141

    6.1.2 拓展模板应用 142

    6.2 模板在网络自动化中所体现的价值 142

    6.3 使用Jinja生成网络配置模板 143

    6.3.1 为什么是Jinja 143

    6.3.2 在基本Jinja模板中动态插入数据 143

    6.3.3 在Python中渲染Jinja模板 144

    6.3.4 条件与循环 146

    6.3.5 Jinja过滤器 151

    6.3.6 Jinja模板继承 154

    6.3.7 在Jinja中创建变量 155

    6.4 小结 155

    第 7 章 使用网络API 156

    7.1 理解网络API 156

    7.1.1 熟悉基于HTTP的API 157

    7.1.2 深入NETCONF 160

    7.2 探究网络API 166

    7.2.1 探究基于HTTP的API 166

    7.2.2 探究NETCONF 172

    7.3 使用网络API实现自动化 180

    7.3.1 使用requests库 180

    7.3.2 使用Python ncclient库 206

    7.3.3 使用netmiko 226

    7.4 小结 231

    第 8 章 使用Git控制源代码 233

    8.1 源代码控制用例 233

    8.2 源代码控制的好处 234

    8.2.1 跟踪变更 234

    8.2.2 可审计性 234

    8.2.3 流程和工作流 234

    8.3 源代码控制对网络的好处 234

    8.4 Git 235

    8.4.1 Git简史 235

    8.4.2 Git术语 236

    8.4.3 Git架构概述 236

    8.5 使用Git 237

    8.5.1 安装Git 237

    8.5.2 创建仓库 238

    8.5.3 向仓库中添加文件 238

    8.5.4 向仓库提交变更 239

    8.5.5 变更并提交已跟踪的文件 242

    8.5.6 撤销暂存 244

    8.5.7 从仓库中排除文件 246

    8.5.8 查看仓库的更多信息 249

    8.5.9 找出文件不同版本之间的差异 253

    8.6 Git分支 256

    8.6.1 创建分支 260

    8.6.2 检出分支 261

    8.6.3 合并分支和删除分支 263

    8.7 使用Git进行协作 266

    8.7.1 在运行Git的多个系统之间协作 267

    8.7.2 使用基于Git的在线服务进行协作 279

    8.8 小结 283

    第 9 章 自动化工具 284

    9.1 回顾自动化工具 284

    9.2 使用Ansible 286

    9.2.1 理解Ansible的工作原理 286

    9.2.2 构建清单文件 287

    9.2.3 执行Ansible剧本 294

    9.2.4 使用变量文件 297

    9.2.5 编写用于实现网络自动化的Ansible剧本 299

    9.2.6 使用第三方Ansible模块 314

    9.2.7 Ansible小结 316

    9.3 使用Salt实现自动化 317

    9.3.1 理解Salt架构 317

    9.3.2 熟悉Salt 320

    9.3.3 使用Salt管理网络配置 333

    9.3.4 远程执行Salt函数 341

    9.3.5 深入Salt的事件驱动基础设施 342

    9.3.6 进一步深入Salt 347

    9.3.7 Salt小结 350

    9.4 使用StackStorm实现事件驱动网络自动化 350

    9.4.1 StackStorm概念 350

    9.4.2 StackStorm架构 352

    9.4.3 动作和工作流 353

    9.4.4 传感器和触发器 362

    9.4.5 规则 364

    9.4.6 StackStorm小结 366

    9.5 小结 366

    第 10 章 持续集成 367

    10.1 重要的先决条件 368

    10.1.1 越简单越好 369

    10.1.2 人、流程和技术 369

    10.1.3 学习编写代码 369

    10.2 CI简介 369

    10.2.1 CI基础 370

    10.2.2 持续交付 371

    10.2.3 测试驱动开发 372

    10.2.4 为什么要对网络进行CI 374

    10.3 用于网络的CI管道 374

    10.3.1 同行评审 376

    10.3.2 构建自动化 380

    10.3.3 测试/开发/类生产环境 384

    10.3.4 部署工具 387

    10.3.5 测试工具和测试驱动的网络自动化 388

    10.4 小结 390

    第 11 章 打造网络自动化文化 391

    11.1 组织策略和灵活性 392

    11.1.1 改造旧日组织 392

    11.1.2 获得管理层认同的重要性 393

    11.1.3 构建与购买 393

    11.2 拥抱失败 394

    11.3 技能和教育 395

    11.3.1 探索未知 396

    11.3.2 注重基础 396

    11.3.3 认证 397

    11.3.4 自动化不会抢走我的饭碗吗 397

    11.4 小结 398

    附录A Linux高级联网 399

    附录B 使用NAPALM 423
查看详情
12
相关图书 / 更多
可编程网络自动化
可编程序控制器技术及应用 第2版
王烈准 徐巧玲
可编程网络自动化
可编程控制器系统应用编程(中级)
无锡信捷电气股份有限公司 全国机械行业工业机器人与智能装备职业教育集团
可编程网络自动化
可编程控制系统设计与实训
吴元修 主编
可编程网络自动化
可编程控制器技术及应用
宋春华 主编;徐超
可编程网络自动化
可编程控制器技术(第2版)
齐蓉
可编程网络自动化
可编程片上系统(PSoCTM6)原理及实训
叶朝辉 华成英 主编;赵晓燕
可编程网络自动化
可编程控制系统集成
浙江瑞亚能源科技有限公司 组编;李万军
可编程网络自动化
可编程序控制器及其应用 第3版
王成福
可编程网络自动化
可编程社会:Web3.0与智能合约
蔡维德
可编程网络自动化
可编程控制器技术项目化教程 第3版(西门子S7-1200 PLC机型)
钟苏丽 刘敏 主编
可编程网络自动化
可编程控制系统集成及应用
浙江瑞亚能源科技有限公司 组编;白国政
可编程网络自动化
可编程序控制器原理与应用基础 第3版
刘凤春 王永兴 周晓丹 巴宇
您可能感兴趣 / 更多
可编程网络自动化
语言恶女:女性如何夺回语言
[美]阿曼达·蒙特尔/著李辛/译
可编程网络自动化
过劳:好工作是如何变坏的
[美]艾琳·L.凯利(Erin;L.Kelly;[美]菲利斯·莫恩((Phyllis;Moen
可编程网络自动化
雪花的故事(用照片展示雪花的秘密,为你揭开冬日奇景的奥秘)
[美]马克·卡西诺[美]乔恩·尼尔森
可编程网络自动化
进阶书系-国际史的技艺
[美] 马克·特拉亨伯格
可编程网络自动化
杜甫传
[美]弗洛伦斯.艾思柯
可编程网络自动化
神奇的数字零:从数字0开始的极简数学史和人类发展史
[美]查尔斯·塞弗(Charles Seife)著 杨杨立汝 译
可编程网络自动化
爵士乐史(精装本)
[美]泰德·乔亚 著
可编程网络自动化
作家榜名著:夏日走过山间(王芳推荐版本!与《瓦尔登湖》齐名的经典名作!心浮气躁想要逃离现实生活?让大自然的神奇力量瞬间治愈你!)
[美]约翰·缪尔、作家榜经典名 著;刘子超 译
可编程网络自动化
环境的科学 (平装版)
[美]威廉·坎宁安 后浪
可编程网络自动化
数学侦探 游乐园里的古怪笑脸
[美]丹尼尔·肯尼 艾米丽·博艾尔 著 刘玙婧、王婧 译;小博集出品
可编程网络自动化
读懂经济学:提升“财商”、塑造价值观念的经济学读本,一本书参破瞬息万变的经济世界底层逻辑!
[美]霍华德·亚鲁斯 著;赵善江 译;斯坦威 出品
可编程网络自动化
数学侦探 神秘路线上的连环追踪
[美]丹尼尔·肯尼 艾米丽·博艾尔 著 刘玙婧、王婧 译;小博集出品