《Ansible自动化运维:技术与佳实践》第一章读书笔记
Ansible 架构及特点
第一章主要讲的是 Ansible 架构及特点,主要包含以下内容:
- Ansible 软件
- Ansible 架构模式
- Ansible 特性
Ansible 软件
Ansible 的编排引擎可以完成配置管理、流程控制、资源部署等工作。 Ansible 基于 Python语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。
Ansible 应用领域
- 配置管理
- 服务即时开通
- 应用部署
- 流程编排
- 监控告警
- 日志记录
Ansible 架构模式
Ansible 维护模式通常由控制机和被管机组成。控制机是用来安装 Ansible 工具软件、执行维护指令的服务器或工作站,是 Ansible 维护的核心。被管机是运行业务服务的服务器,由控制机通过SSH来进行管理。
Ansible 管理方式
Ansible 是一个模型驱动的配置管理器,支持多节点发布、远程任务执行。默认使用SSH进行远程连接。无需再被管节点上安装附加软件,可使用各种编程语言进行扩展。
Ansible 管理系统由控制主机和一组被管节点组成。控制主机直接通过SSH控制被管节点,被管节点通过 Ansible 的资源清单来进行分组管理。

Ansible 用剧本方式对3台运行 Nginx 服务的 Ubuntu 服务器进行配置管理
编写 webservers.yml 的 Ansible 脚本,即 playbook ,其中包含被管节点的 hosts 和对这些 hosts 按照顺序执行的任务列表(task)。
hosts 包括web1、web2、web3。
任务列表包括如下过程:
- 安装 Nginx(Install Nginx)
- 创建 Nginx 配置文件(/etc/nginx/nginx.conf)
- 基于安全证书SSH方式拷贝配置文件,重启 Nginx 服务
- 确保 Nginx 服务处于启动状态
在 Ansible 系统的控制主机上执行ansible-playbook webservers.yml,Ansible 将会通过 SSH 连接并行地在web1、web2、web3上面安装、配置、运行 Nginx 服务。

Ansible 系统架构

- 核心引擎:即 Ansible。
- 核心模块(core modules):Ansible 模块资源分发到远程节点使其执行特定任务或匹配一个特定的状态。
- 自定义模块(custom modules)
- 插件(plugins):模块功能的补充,借助插件完成记录日志、邮件等功能。
- 剧本(playbook):定义 Ansible 任务的配置文件,可将多个任务定义在一个剧本中,由 Ansible 自动执行,可由控制主机运行多个任务,同时对多台远程主机进行管理。
- 连接插件(connectior plugins):Ansible 基于连接插件连接到各个主机,负责和被管节点实现通信。因为支持除SSH连接方法外的其他连接方法,所以需要连接插件。
- 主机清单(host inventory):定义 Ansible 管理的主机策略。
Ansible 采用 paramiko 协议库,通过 SSH 或 ZeroMQ 等连接主机。Ansible 在控制主机将 Ansible 模块通过 SSH协议推送到被管节点执行,执行完自动删除。控制主机与被管节点之间支持 local、SSH、ZeroMQ 三种连接方式,默认使用基于 SSH 连接,在大规模情况下,使用 ZeroMQ 连接方式执行速度更快。
任务执行模式
Ansible 系统由控制主机对被管节点的操作方式可分为两类,即 ad-hoc 和 playbook。
- ad-hoc 模式使用单个模块,支持批量执行单条命令。
- playbook 模式是 Ansible 主要管理方式,playbook 通过多个 task 集合完成一类功能。(可以把 playbook 理解为通过组合多条ad-hoc 操作的配置文件)

Ansible 特性
Ansible 是基于一致性、安全性、高可靠性设计的轻量级自动化工具,具有功能强大、部署便捷、描述清晰等特性,很好地解决了统一配置、统一部署、流程编排等复杂的 IT 自动化管理问题。
Ansible 功能特性
- 语法简单、易读
- 不需要再被管节点安装客户端软件
- 基于推送(Push)方式
- 方便管理小规模场景
- 大量内置模块
- 非常轻量级的抽象层
Ansible 与其他配置管理的对比
| 项目 | Puppet | SaltStack | Ansible |
|---|---|---|---|
| 开发语言 | Ruby | Python | Python |
| 是否有客户端 | 有 | 有 | 无 |
| 是否支持二次开发 | 不支持 | 支持 | 支持 |
| 服务器与远程机器通信协议 | 标准 SSL 协议 | 使用AES加密 | 使用 OpenSSH |
| 配置文件格式 | Ruby语法格式 | YAML | YAML |
与其他自动化工具比较,Ansible 不需要安装客户端就可以轻松地管理、配置。

总结
Ansible 的关键想法是计算机是一组,而不是一个个分开的机器,即“多层编排”的思想。避免了证书交换,以及反向解析 DNS 和 NTP 的问题。YAML的配置文件格式,简单易用。
《Ansible自动化运维:技术与佳实践》第一章读书笔记的更多相关文章
- Python自动化运维 技术与最佳实践PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:7bl4 一.内容简介 <python自动化运维:技术与最佳实践>一书在中国运维领域将有"划时代"的重要意义:一方面,这是国内第一本从纵.深和实践角度探 ...
- 技术沙龙|京东云DevOps自动化运维技术实践
自动化测试体系不完善.缺少自助式的持续交付平台.系统间耦合度高服务拆分难度大.成熟的DevOps工程师稀缺,缺少敏捷文化--这些都是DevOps 在落地过程中,或多或少会碰到的问题,DevOps发展任 ...
- 沙龙报名 | 京东云DevOps——自动化运维技术实践
随着互联网技术的发展,越来越多企业开始认识DevOps重要性,在企业内部推进实施DevOps,期望获得更好的软件质量,缩短软件开发生命周期,提高服务稳定性.但在DevOps 的实施与落地的过程中,或多 ...
- 一文详解 Ansible 自动化运维
开源Linux 一个执着于技术的公众号 一.Ansible 概述 Ansible 是近年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误 ...
- Ansible自动化运维工具-上
[Ansible特点] 1)Ansible与saltstack均是基于Python语言开发的 2)安装使用简单,基于不同插件和模块实现各种软件,平台,版本的管理以及支持虚拟容器多层级的部署 3)不需要 ...
- ansible 自动化运维
Ansible 自动化运维 ansible安装epel #yum list all *ansible*#yum install *ansible*#yum info ansible#rpm -ql a ...
- Ansible 自动化运维工具
Ansible 自动化运维工具 Ansible是什么? Ansible是一个"配置管理工具"也是一个"自动化运维工具" Ansible 作用: Ansible是 ...
- ansible自动化运维03
ansible自动化运维常用模块 常用模块实现的功能:安装软件包:修改配置文件:创建程序用户组:创建目录,并修改所属和权限:挂载:启动服务:测试. command模块: shell模块: 注意:com ...
- 简单聊一聊Ansible自动化运维
一.Ansible概述 Ansible是今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误.Ansible通过本身集成的非常丰富的模块 ...
- Ansible自动化运维工具的使用
Ansible自动化运维工具的使用 host lnventory 管理主机 ip root账号密码 ssh端口 core mod ...
随机推荐
- JVM(二):画骨
### 概述 我们首先来认识一下`JVM`的运行时数据区域,如果说`JVM`是一个人,那么运行时数据区域就是这个人的骨架,它支撑着JVM的运行,所以我们先来学习一下运行时数据区域的分类和简单介绍. # ...
- 【译】尝试使用Nullable Reference Types
随着.NET Core 3.0 Preview 7的发布,C#8.0已被认为是“功能完整”的.这意味着它们的最大亮点Nullable Reference Types,在行为方面也被锁定在.NET Co ...
- Elasticsearch索引增量统计及定时邮件实现
0.需求 随着ELKStack在应用系统中的数据规模的急剧增长,每天千万级别数据量(存储大小:10000000*10k/1024/1024=95.37GB,假设单条数据10kB,实际远大于10KB)的 ...
- 【0726 | Day 2】编程语言分类/主流编程语言介绍/网络的瓶颈效应
编程语言分类 机器语言 与硬件交互 优点:执行效率高 缺点:开发效率低 汇编语言 间接与硬件交互 优点(相较于机器语言):开发效率高 缺点(相较于机器语言):执行效率低 高级语言 简单化指令,让人人都 ...
- 《深入理解Java虚拟机》-Java代码是如何运行的
问题一:Java与C++区别 1.Java需要运行时环境,包括Java虚拟机以及Java核心类库等. 2.C++无需额外的运行时,通常编译后的代码可以让机器直接读取,即机器码 问题一:Java为什么要 ...
- Docker 前沿概述
目录 Docker 前沿概述 什么是Docker? Docker的基本概念 容器(Container) -- 镜像运行时的实体 镜像(Image) -- 一个特殊的文件系统 仓库(Repository ...
- js拖拽上传图片
有时候,在开发中,需要遇到拖拽上传图片的需求,即从磁盘选中一张或多张图片,然后按着鼠标把图片拖动到页面上指定的区域,实现图片的上传. 1.后端上传图片的接口 我是之前用vue写一个简单的后台系统的时候 ...
- Java连载16-++传参&关系运算符
一.++再举例 int a = 10; System.out.print(a++);//这里会打印出10,因为他们内部这个print函数有参数相当于参数x=a++ System.out.println ...
- 前端面试题集锦(二)之CSS部分
1.CSS中的选择器都有哪些?权限情况如何? 解答: (1)类选择器 .className (2) ID选择器 #id (3) 元素选择器 div 可以多个,以逗号隔开 (4)父子选择器 以空格隔 ...
- ES6中比较实用的几个特性
1.Default Parameters(默认参数) in ES6 es6之前,定义默认参数的方法是在一个方法内部定义 var link = function (height, color, url) ...