可编程网络自动化

Book description

与系统管理员一样,网络工程师如今也发现无法再手动完成所有工作。随着网络行业迎来新协议、新技术、新交付模型,企业对敏捷性和灵活性的需求愈加迫切,网络自动化也随之变得至关重要。本书向网络工程师展示了如何使用包括Linux、Python、JSON和XML在内的一系列工具,通过代码实现网络自动化。

网络自动化的核心是简化与网络设备、网络拓扑、网络服务和网络连通性的配置、管理、操作相关的任务。通过学习本书,你将掌握完成这一关键转变所需的基本技能和工具。

本书包含以下内容。

  • Python基础知识:数据类型、条件逻辑、循环、函数、类、模块
  • 网络自动化涉及的Linux基础知识
  • 数据格式与数据模型:YAML、XML、JSON、YANG
  • 网络配置模板,如Jinja模板
  • 使用网络API实现网络自动化
  • 在自动化过程中使用Git控制源代码
  • 使用Ansible、Salt、StackStorm等自动化工具
  • 关键的持续集成工具和技术

Table of contents

  1. 封面
  2. 扉页
  3. 版权页
  4. 版权声明
  5. O’Reilly Media, Inc.介绍
  6. 目录 (1/2)
  7. 目录 (2/2)
  8. 本书赞誉
  9. 前言
    1. 本书内容
    2. 本书结构
    3. 目标读者
      1. 网络工程师
      2. 系统管理员
      3. 软件开发人员
    4. 本书中用到的工具
    5. 在线资源
    6. 排版约定
    7. O’Reilly在线学习平台(O’Reilly Online Learning)
    8. 联系我们
    9. 致谢
    10. 电子书
  10. 第1章 网络行业发展趋势
    1. 1.1 SDN的兴起
      1. 1.1.1 OpenFlow
      2. 1.1.2 什么是软件定义网络 (1/2)
      3. 1.1.2 什么是软件定义网络 (2/2)
    2. 1.2 小结
  11. 第2章 网络自动化
    1. 2.1 为什么要实现网络自动化
      1. 2.1.1 简化架构
      2. 2.1.2 确定性结果
      3. 2.1.3 业务敏捷性
    2. 2.2 网络自动化的类型
      1. 2.2.1 设备配给
      2. 2.2.2 数据采集
      3. 2.2.3 迁移
      4. 2.2.4 配置管理
      5. 2.2.5 合规性
      6. 2.2.6 报告
      7. 2.2.7 故障排除
    3. 2.3 管理平面从SNMP向设备API的演变
      1. 2.3.1 应用程序接口(API)
      2. 2.3.2 开放网络运动的影响
    4. 2.4 SDN时代的网络自动化
    5. 2.5 小结
  12. 第3章 Linux
    1. 3.1 网络自动化场景中的Linux
    2. 3.2 Linux简史
    3. 3.3 Linux发行版
      1. 3.3.1 Red Hat Enterprise Linux、Fedora和CentOS
      2. 3.3.2 Debian、Ubuntu和其他衍生版
      3. 3.3.3 其他Linux发行版
    4. 3.4 Linux交互
      1. 3.4.1 文件系统导航
      2. 3.4.2 操作文件和目录
      3. 3.4.3 运行程序
      4. 3.4.4 守护进程
    5. 3.5 Linux联网
      1. 3.5.1 使用接口
      2. 3.5.2 作为端主机的路由
      3. 3.5.3 作为路由器的路由
      4. 3.5.4 桥接(交换)
    6. 3.6 小结
  13. 第4章 在网络场景中学习Python
    1. 4.1 网络工程师是否应该学习代码
    2. 4.2 使用Python交互式解释器
    3. 4.3 理解Python数据类型
      1. 4.3.1 学习使用字符串
      2. 4.3.2 学习使用数字
      3. 4.3.3 学习使用布尔值
      4. 4.3.4 学习使用Python列表
      5. 4.3.5 学习使用Python字典
      6. 4.3.6 学习Python集合与元组
    4. 4.4 向代码中添加条件逻辑
    5. 4.5 理解容纳
    6. 4.6 在Python中使用循环
      1. 4.6.1 理解while循环
      2. 4.6.2 理解for循环
    7. 4.7 使用Python函数
    8. 4.8 处理文件
      1. 4.8.1 读取文件
      2. 4.8.2 写入文件
    9. 4.9 创建Python程序
      1. 4.9.1 创建一个基本的Python脚本
      2. 4.9.2 理解shebang
      3. 4.9.3 将代码从Python解释器迁移到Python脚本
    10. 4.10 使用Python模块
    11. 4.11 传入Python脚本参数
    12. 4.12 使用pip与安装Python包
    13. 4.13 使用Python时的其他一些提示、技巧和一般信息
    14. 4.14 小结
  14. 第5章 数据格式与数据模型
    1. 5.1 数据格式简介
    2. 5.2 YAML
      1. 5.2.1 YAML基础
      2. 5.2.2 在Python中使用YAML
      3. 5.2.3 YAML的数据模型
    3. 5.3 XML
      1. 5.3.1 XML基础
      2. 5.3.2 将XML模式定义用于数据模型
      3. 5.3.3 使用XSLT转换XML
      4. 5.3.4 使用XQuery搜索XML
    4. 5.4 JSON
      1. 5.4.1 JSON基础
      2. 5.4.2 在Python中使用JSON
      3. 5.4.3 使用JSON模式描述数据模型
    5. 5.5 使用YANG描述数据模型
      1. 5.5.1 YANG概述
      2. 5.5.2 深入YANG
    6. 5.6 小结
  15. 第6章 网络配置模板
    1. 6.1 现代模板语言的兴起
      1. 6.1.1 使用模板进行Web开发
      2. 6.1.2 拓展模板应用
    2. 6.2 模板在网络自动化中所体现的价值
    3. 6.3 使用Jinja生成网络配置模板
      1. 6.3.1 为什么是Jinja
      2. 6.3.2 在基本Jinja模板中动态插入数据
      3. 6.3.3 在Python中渲染Jinja模板
      4. 6.3.4 条件与循环
      5. 6.3.5 Jinja过滤器
      6. 6.3.6 Jinja模板继承
      7. 6.3.7 在Jinja中创建变量
    4. 6.4 小结
  16. 第7章 使用网络API
    1. 7.1 理解网络API
      1. 7.1.1 熟悉基于HTTP的API
      2. 7.1.2 深入NETCONF (1/2)
      3. 7.1.2 深入NETCONF (2/2)
    2. 7.2 探究网络API
      1. 7.2.1 探究基于HTTP的API
      2. 7.2.2 探究NETCONF (1/2)
      3. 7.2.2 探究NETCONF (2/2)
    3. 7.3 使用网络API实现自动化
      1. 7.3.1 使用requests库
      2. 7.3.2 使用Python ncclient库 (1/4)
      3. 7.3.2 使用Python ncclient库 (2/4)
      4. 7.3.2 使用Python ncclient库 (3/4)
      5. 7.3.2 使用Python ncclient库 (4/4)
      6. 7.3.3 使用netmiko
    4. 7.4 小结
  17. 第8章 使用Git控制源代码
    1. 8.1 源代码控制用例
    2. 8.2 源代码控制的好处
      1. 8.2.1 跟踪变更
      2. 8.2.2 可审计性
      3. 8.2.3 流程和工作流
    3. 8.3 源代码控制对网络的好处
    4. 8.4 Git
      1. 8.4.1 Git简史
      2. 8.4.2 Git术语
      3. 8.4.3 Git架构概述
    5. 8.5 使用Git
      1. 8.5.1 安装Git
      2. 8.5.2 创建仓库
      3. 8.5.3 向仓库中添加文件
      4. 8.5.4 向仓库提交变更
      5. 8.5.5 变更并提交已跟踪的文件
      6. 8.5.6 撤销暂存
      7. 8.5.7 从仓库中排除文件
      8. 8.5.8 查看仓库的更多信息
      9. 8.5.9 找出文件不同版本之间的差异
    6. 8.6 Git分支
      1. 8.6.1 创建分支
      2. 8.6.2 检出分支
      3. 8.6.3 合并分支和删除分支
    7. 8.7 使用Git进行协作
      1. 8.7.1 在运行Git的多个系统之间协作 (1/3)
      2. 8.7.1 在运行Git的多个系统之间协作 (2/3)
      3. 8.7.1 在运行Git的多个系统之间协作 (3/3)
      4. 8.7.2 使用基于Git的在线服务进行协作
    8. 8.8 小结
  18. 第9章 自动化工具
    1. 9.1 回顾自动化工具
    2. 9.2 使用Ansible
      1. 9.2.1 理解Ansible的工作原理
      2. 9.2.2 构建清单文件 (1/2)
      3. 9.2.2 构建清单文件 (2/2)
      4. 9.2.3 执行Ansible剧本
      5. 9.2.4 使用变量文件
      6. 9.2.5 编写用于实现网络自动化的Ansible剧本 (1/3)
      7. 9.2.5 编写用于实现网络自动化的Ansible剧本 (2/3)
      8. 9.2.5 编写用于实现网络自动化的Ansible剧本 (3/3)
      9. 9.2.6 使用第三方Ansible模块
      10. 9.2.7 Ansible小结
    3. 9.3 使用Salt实现自动化
      1. 9.3.1 理解Salt架构
      2. 9.3.2 熟悉Salt (1/3)
      3. 9.3.2 熟悉Salt (2/3)
      4. 9.3.2 熟悉Salt (3/3)
      5. 9.3.3 使用Salt管理网络配置 (1/2)
      6. 9.3.3 使用Salt管理网络配置 (2/2)
      7. 9.3.4 远程执行Salt函数
      8. 9.3.5 深入Salt的事件驱动基础设施
      9. 9.3.6 进一步深入Salt
      10. 9.3.7 Salt小结
    4. 9.4 使用StackStorm实现事件驱动网络自动化
      1. 9.4.1 StackStorm概念
      2. 9.4.2 StackStorm架构
      3. 9.4.3 动作和工作流 (1/2)
      4. 9.4.3 动作和工作流 (2/2)
      5. 9.4.4 传感器和触发器
      6. 9.4.5 规则
      7. 9.4.6 StackStorm小结
    5. 9.5 小结
  19. 第10章 持续集成
    1. 10.1 重要的先决条件
      1. 10.1.1 越简单越好
      2. 10.1.2 人、流程和技术
      3. 10.1.3 学习编写代码
    2. 10.2 CI简介
      1. 10.2.1 CI基础
      2. 10.2.2 持续交付
      3. 10.2.3 测试驱动开发
      4. 10.2.4 为什么要对网络进行CI
    3. 10.3 用于网络的CI管道
      1. 10.3.1 同行评审
      2. 10.3.2 构建自动化
      3. 10.3.3 测试/开发/类生产环境
      4. 10.3.4 部署工具
      5. 10.3.5 测试工具和测试驱动的网络自动化
    4. 10.4 小结
  20. 第11章 打造网络自动化文化
    1. 11.1 组织策略和灵活性
      1. 11.1.1 改造旧日组织
      2. 11.1.2 获得管理层认同的重要性
      3. 11.1.3 构建与购买
    2. 11.2 拥抱失败
    3. 11.3 技能和教育
      1. 11.3.1 探索未知
      2. 11.3.2 注重基础
      3. 11.3.3 认证
      4. 11.3.4 自动化不会抢走我的饭碗吗
    4. 11.4 小结
  21. 附录A Linux高级联网
    1. A.1 使用macvlan接口
      1. A.1.1 macvlan接口用例
      2. A.1.2 创建、配置和删除macvlan接口
    2. A.2 虚拟机联网
      1. A.2.1 使用网桥
      2. A.2.2 使用macvtap接口
    3. A.3 使用网络名称空间
      1. A.3.1 网络名称空间用例
      2. A.3.2 创建和删除网络名称空间
      3. A.3.3 在网络名称空间中加入接口
      4. A.3.4 在网络名称空间中执行命令
      5. A.3.5 使用veth pair连接网络名称空间
    4. A.4 Linux容器联网
      1. A.4.1 配置LXC联网
      2. A.4.2 配置Docker联网
    5. A.5 使用Open vSwitch
      1. A.5.1 安装OVS
      2. A.5.2 配置OVS
      3. A.5.3 将工作负载连接到OVS (1/2)
      4. A.5.3 将工作负载连接到OVS (2/2)
  22. 附录B 使用NAPALM
    1. B.1 理解NAPALM的配置管理
      1. B.1.1 执行配置替换
      2. B.1.2 执行配置合并
    2. B.2 使用NAPALM检索数据
    3. B.3 NAPALM集成
      1. B.3.1 在Ansilbe中使用NAPALM
      2. B.3.2 在Salt中使用NAPALM
      3. B.3.3 在StackStorm中使用NAPALM
  23. 关于作者
  24. 关于封面

Product information

  • Title: 可编程网络自动化
  • Author(s): Jason Edelman, Scott S. Lowe, Matt Oswalt
  • Release date: January 2023
  • Publisher(s): Posts & Telecom Press
  • ISBN: 9787115606181

You might also like

book

Python机器学习案例精解

by Posts & Telecom Press, Yuxi (Hayden) Liu

用简单易学的示例,带你驶入机器学习的快车道 Key Features 书中示例浅显易懂,涵盖多种应用场景 讲解方式生动有趣。 Book Description 本书开篇介绍Python语言和机器学习开发环境的搭建方法。后续章节介绍相关的重要概念,比如数据分析、数据预处理、特征抽取、数据可视化、聚类、分类、回归和模型性能度量等。本书包含多个项目案例,涉及几种重要且有趣的机器学习算法,引导读者从头实现自己的模型。学完本书,你将了解机器学习生态系统的全貌,并掌握机器学习技术的实践和应用。 在本书的帮助下,你将学会用强大却很简单的Python语言来处理数据科学难题,并构建自己的解决方案。书中示例浅显易懂,涵盖多种应用场景:新闻话题分类、垃圾邮件过滤、在线广告点击率预测和股票价格预测等,讲解方式生动有趣。 • 本书包括以下内容: • 利用Python语言抽取数据、处理数据和探索数据; • 用Python对多维数据进行可视化,并抽取有用特征; • …

book

Go程序设计语言

by 艾伦A. A.多诺万, 布莱恩W. 柯尼汉

本书由《C程序设计语言》的作者Kernighan和谷歌公司Go团队主管Alan Donovan联袂撰写,是学习Go语言程序设计的权威指南。本书共13章,主要内容包括:Go的基础知识、基本结构、基本数据类型、复合数据类型、函数、方法、接口、goroutine、通道、共享变量的并发性、包、go工具、测试、反射等。

book

Kubernetes编程

by Michael Hausenblas, Stefan Schimanski

如果你打算开发原生Kubernetes应用,本书将成为你最好的向导。本书面向开发者和应用运维管理员介绍如何构建原生Kubernetes应用程序,这类应用可直接通过API服务器查询或更新资源的状态。AWS开发倡导者Michael Hausenblas和Red Hat首席软件工程师Stefan Schimanski将介绍这类应用的特性并向你展示如何编写Kubernetes程序来构建它们。 你将学到Kubernetes的基础构件,包括client-go API库以及自定义资源。你只需要具备一些初级的开发知识和系统管理工具和实践经验(包括包管理、Go语言和Git)即可上手。 介绍了Kubernetes API的基础知识并深入讲解API服务器的内部结构。 学习Go语言的Kubernetes编程接口,包括Kubernetes API对象。 学习自定义资源,它是Kubernetes生态系统中最核心的扩展工具。 使用代码标签控制Kubernetes代码生成器为自定义资源生成代码时的行为。 编写自定义的控制器和Operator,并为部署到生产环境中做好准备。 通过自定义API服务器,扩展Kubernetes的API层。

book

写给系统管理员的Python脚本编程指南

by Posts & Telecom Press, Ganesh Sanjiv Naik

Python脚本编程手册,Python脚本编程指南 Key Features 从基础到高级编程,全面系统地介绍Python脚本在系统管理中的作用。 市场上少见的介绍将Python脚本应用于系统管理的图书。 本书附有配套资源,帮助读者学以致用,将所学应用到真实场景中。 Book Description 本书是一本介绍Python编程的进阶图书,包含了大量关于Python脚本设计的主题。本书共18章,首先带领读者快速复习Python基础知识,然后循序渐进地介绍了一些实用主题,包括Python脚本的调试和分析、编写单元测试、系统管理、处理文件和数据、文件归档以及文本处理等。然后介绍了网络编程、处理电子邮件、远程控制主机、创建图形用户界面、处理日志文件、编写网络爬虫、数据收集和可视化以及操作数据库等更加高阶的主题。本书中每一知识点都结合可以运行的源码讲解,帮助读者更好地掌握Python脚本编程。 本书要求读者具备Python的基础知识,非常适合对Python编程有基本了解并且有兴趣将编程技能扩展到命令行脚本和系统管理的读者阅读。 What you will learn 了解如何安装Python和调试Python脚本; 了解和编写用于自动化测试和日常管理活动的脚本; …