Ansible自动化运维——ansible基本架构简介
文章目录
1.Ansible是什么?
-
ansible是近年越来越火的一款运维自动化工具,基于Python开发,集合了众多运维工具的优点;其 主要功能是帮助运维实现IT工作的自动化、降低人为操作失误、提高业务自动化率、提升运维工作效率。实现了批量系统配置、批量程序部署、批量运行命令等功能。
-
ansible是基于模块工作的,本身没有批量部署的能力。 真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。
-
常用于软件 部署自动化、配置自动化、管理自动化、系统化系统任务、持续集成、零宕机平滑升级等。
-
常见的部署管理工具有Chef、Puppet、Ansible、SaltStack、Fabric
-
Ansible发布于2012年,其作者兼创始人是Michael DeHaan。红帽2015收购了Ansible母公司。
2.为什么选择Ansible?
- Ansible完全基于Python开发,而DevOps在国内已然是一种趋势,Python被逐步普及,运维人员自己开发工具的门槛逐步降低,得益于此,方便对Ansible二次开发。
- Ansible丰富的内置模块,甚至还有专门为商业平台开发的功能模块,完全可以满足日常功能所需。
- 在Ansible去中心化概念下,一个简单的复制操作即可完成管理配置中心的迁移。
- Agentless(无agent客户端),客户端无需任何配置,由管理端配置好后即可使用,这点非常诱人。
Anaible的特点
部署简单, 只需要在控制主机上部署ansible环境,被控制端上只要求安装ssh和python2.5以上版本,这个对于类unix系统来说相当与无需配置.
- no angents: 被管控节点无需安装agent
- no server: 无服务端,使用是直接调用命名
- modules in any languages: 基于模块工作, 可以使用任意语言开发模块
- 易读的语法: 基于yaml语法编写playbook
- 基于推送模式: 不同于puppet的拉取模式,直接由调用者控制变更在服务器上发生的时间
- 模块是幂等性的:定义的任务已存在则不会做任何事情,意味着在同一台服务器上多次执行同一个playbook是安全的
3.Ansible的机制
3.1 工作机制
根据Ansible使用过程中的不同角色,将其分为:
- 使用者
- Ansible工具集
- 作用对象
使用者
- Ansible使用者来源于多种维度,分为以下几种方式:
CMDB存储和管理着企业IT架构中的各项配置信息,运维人员可以组合CMDB和Ansible,通过CMDB直接下发指令调用Ansible工具集完成操作者所希望达成的目标。- 基于PUBLIC(公有云)/PRIVATE(私有云),Ansible以API调用的方式运行,Ansible提供了丰富的API语言接口:PHP、Python等。
- 直接使用Ad-Hoc临时命令集调用Ansible工具集来完成任务执行; 通过执行Playbooks中预先编排好的任务集按序完成任务执行。
Ansible工具集
(ansible命令是Ansible的核心工具,总指挥)
INVENTORY:命令执行的目标对象配置文件
API:供第三方程序调用的应用程序编程接口
MODULES:丰富的内置模块
PLUGINS:内置和可自定义的插件作用对象
Ansible的作用对象,不仅仅是Linux和非Linux操作系统的主机,同样也可以作用于各类公有云/私有云,商业和非商业设备的网络设施。
3.2 通信机制
- Ansible主推的卖点是其无需任何Daemon维护进程即可实现相互间的通信,且通信方式是基于业内统一标准的安全可靠的SSH安全连接。
- 无客户端,只需安装SSH、Python即可。
- 基于OpenSSH通信,底层基于SSH协议(Windows基于PowerShell)。
- 支持密码和SSH认证,建议使用公私钥方式认证,因为密码认证方式的密码需明文写配置文件,虽然配置文件可加密,但会增加Ansible使用的复杂度。
- 支持Windows,但仅支持客户端,服务端必须是Linux系统
3.3 任务执行机制
Ansible任务执行模式分为以下两种:
-
ad-hoc模式(点对点模块)
使用单个模块,支持批量执行单条命令,相当于在bash中执行一句shell命令 -
playbook模式(剧本模式)
ansible主要的管理方式,通过多个task的集合完成一类功能,可以理解为多个ad-hoc的配置文件
任务执行流程:
4.Ansible应用场景
应用部署
Ansible内置网络、应用、系统、第三方云平台扩展等完善的功能模块,协助运维快速完成应用的安装、卸载、升级、启停、配置等部署类工作,即使对跨平台或知名的商业硬件也同样支持。配置管理
Ansible内置File、Template,结合Jinja、Lineinfile等内置模块,同时无缝结合GitHub、GitLab、Git、SVN、Jenkins等主流版本控制和CI持续集成工具,助力配置管理自动化。任务流编排
- 有效保证Tasks任务流按既定规则和顺序完成事先制订的目标和计划,同时Roles编排方式又能在一定程度上从书写习惯和代码层编排上保证整体项目的可架构性和规范性,协助控制项目维护成本不致过高。
- 适用于网络管理员、系统运维、应用运维、桌面运维、DevOps、基础架构运维等多领域运维行业,上手快,效率高。