Ansible优缺点
使用ansiblle这样的自动化配置管理工具,主要优点有:
1、轻量级。不需要去客户端安装agent,更新时只需要在操作机上进行一次更新即可
2、批量任务执行可以写成脚本,而且不用分发到远程就可以执行
3、使用python编写的,维护更简单
4、支持sudo
缺点:
对于几千台、上万台机器的操作,还不清楚性能,效率情况如何,需进一步了解
Ansible应用领域
ansible的编排引擎可以出色地完成配置管理,流程控制,资源部署。流程编排等多方面工作
Ansible架构模式
Ansible管理方式
Ansible
是一个模型驱动的配置管理器, 支持多节点发布、 远程任务执行。 默认使用
SSH
进行远程连接。 无需在被管节点上安装附加软件, 可使用各种编程语言进行扩展。
ansible系统架构
Ansible
是基于模块工作的, 本身没有批量部署的能力。 真正具有批量部署的是
Ansible
所运行的模块, Ansible 只是提供一种框架。
Ansible
由以下各部分组成:
•
核心引擎
:
即
Ansible
。
•
核心模块(
core modules ):
这些都是
Ansible
自带的模块。
•
自定义模块(
custom modules):
如果核心模块不足以完成某种功能,可以添加自定义模块。
•
插件(
plugins):
完成模块功能的补充,借助于插件完成记录日志,邮件等功能。
•
剧本(
playbook):
定义
Ansible
任务的配置文件,可以将多个任务定义在一个剧本中,由
Ansible
自动执行, 剧本执行支持多个任务, 可以由控制主机运行多个任务, 同时对多台远程主机进行管理。
• playbook
是
Ansible
的配置、部署和编排语言,可以描述一个你想要的远程系统执行策略,或一组步骤
的一般过程。
•
连接插件(
connectior plugins) : Ansible
基于连接插件连接到各个主机上, 负责和被管节点实
现通信。
•
主机清单(
host inventory):
定义
Ansible
管理的主机策略,默认是在
Ansible
的
hosts
配置文件中
定义被管节点
Ansible工作原理
1
、管理端支持
local
、
ssh
、
zeromq
三种方式连接被管理端,默认使用基于
ssh
的连接——这部分对应 基本架构图中的连接模块;
2
、可以按应用类型等方式进行
Host Inventory(主机群)分类,管理节点通过各类模块实现相应的操作——单个模块,单条命令的批量执行,我们可以称之为
ad-hoc
;
3
、管理节点可以通过
playbooks
实现多个
task
的集合实现一类功能,如
web
服务的安装部署、数据库服务器的批量备份等。playbooks
我们可以简单的理解为,系统通过组合多条
ad-hoc
操作的配置文件。Ansible默认是通过
SSH
通道来管理的,也就是它所说的免客户端方式管理, 它底层是通过
paramiko来
实现的
ansible
执行过程大体过程如下图,其中暖色调的代表已经模块化
Ansible特性
•
应用代码自动化部署。
•
系统管理配置自动化。
•
支持持续交付自动化。
•
支持云计算 、大数据平台( 如
AWS
、
OpenStack
、
CloudStack
、
VMWare
等) 环境。
•
轻量级, 无需在客户端安装
agent
, 更新时只需在控制机上进行一次更新即可。
•
批量任务执行可以写成脚本, 不用分发到远程就可以执行。
•
使用
Python
编写,维护更简单,
Ruby
语法过于复杂。
•
支持非
root
用户管理操作, 支持
sudo
。