1、ansible概述和运行机制
1.1、ansible概述
ansble是一个远程主机管理工具,ansible通过SSH协议实现远程节点和管理节点之间的通信的。ansible是python开发的,以来一些python库和组件,如paramiko,pyYaml和jinja三个关键组件。
1.2、ansible基本架构
ansble系统由管理节点和被管理节点组成,ansible在管理节点将ansible模块通过SSH协议管理远程服务器。
由上面图可以看出来ansible的组成是由5个部分组成
剧本:palybooks
ansible :ansible的核心程序
Midules:包括ansible自带的核心模块及自定义模块
1、Core Modules:Ansible管理主机之前先调用core Modules中的模块,然后指明管理Host Inventory中的主机,就可以完成管理主机
2、Custom Modules:自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写
Plugins:模块功能补充,通过插件来实现记录日志,发送邮件或其他的功能
Connectior Plugins:连接插件,ansible基于连接插件连接到各个主机上,默认使用SSH
playbooks:剧本,YAML格式文件。实现自动化部署文件
Host Inventory:记录由ansible管理的主机信息,包括端口,密码,ip等
1.3、ansible任务执行方式
分为两种
1、an-hoc:ansible命令,命令行界面,单条命令的批量执行
2、playbook:剧本方式,通过多个任务完成一个总体的目标
这两种方式没有本质区别,Hoc用于临时命令,playbook也可以理解成是Hoc的集合,通过一定规则的编排在一起,也就是剧本
1.4、anisble的特点
1、部署简单,只需要在管理端部署ansibel环境,被管理端不需要做任何操作
2、默认使用SSH协议对设备进行管理
3、易读的语法:基于yaml语法编写playbook
4、模块化设计,调用特定的模块来完成特定的任务
5、基于python语言实现,由Paramiko(python的一个可并发连接ssh主机功能库), PyYAML和Jinja2(模板化)三个关键模块实现。支持API(供第三方程序调用的应用程序编程接口(API))及自定义模块,可通过Python轻松扩展
6、支持playbook剧本,通过playbook来定制强大的配置,状态管理
7、幂等性:一个任务执行一遍和执行n 遍效果是一样的,不会因为重复执行带来意外情况