Ansible的基本概念

一、Ansible的基础介绍

1、Ansible是近年比较火的一款运维自动化工具,其主要功能是帮运维实现IT工作的自动化,降低人为操作出现的失误、提高业务自动化率、提升运维工作效率,常用于软件部署自动化,配置自动化、管理自动化、持续集成等。类似的工具有Puppet、Saltstack。

2、Ansible 是个与 Puppet, SaltStack, Chef 并驾齐驱的组态设定 (Infrastructure as Code) 工具,其简单易用的特性让人爱不释手,在 DevOps 界更佔有一席之地。

3、Ansible 提供一种最简单的方式用于发布、管理和编排计算机系统的工具,你可在数分钟内搞定。

4、Ansible 是一个模型驱动的配置管理器,支持多节点发布、远程任务执行。默认使用 SSH 进行远程连接。无需在被管理节点上安装附加软件,可使用各种编程语言进行扩展。

5、ansible是一个用来批量部署远程主机上服务的工具。这里“远程主机(Remote Host)”是指任何可以通过SSH登录的主机,所以它既可以是远程虚拟机或物理机,也可以是本地主机。简要总结就是:ansible是一个用来远程管理服务器的工具软件。

6、ansible通过SSH协议实现管理节点与远程节点之间的通信。理论上来说,只要能通过SSH登录到远程主机来完成的操作,都可以通过ansible实现批量自动化操作。

7、涉及管理操作:复制文件、安装服务、服务启动停止管理、配置管理等。

二、Ansible的优缺点(优势和特点)

(1)

拥有模块化的设计,Ansible能够调用特定的模块来完成特定任务 ,本身是核心组件,短小精悍 ;

(2)

Ansible是基于Python语言实现的,由Paramiko (python 的一个可并发连接 ssh 主机功能库 ) , PyYAML和Jinja2 ( 模板化 ) 三个关键模块实现;

(3)

Ansible的部署比较简单,agentless 无客户端工具;
以主从模式工作;
支持自定义模块功能;
支持playbook剧本,连续任务按先后设置顺序完成;
期望每个命令具有幂等性:

(4)

ansible基于python语言实现,由Paramiko和PyYAML两个关键模块构建。
1)安装部署过程特别简单,学习曲线很平坦。
2)不需要单独安装客户端,知识利用现有的SSHD服务(协议)即可。
3)不需要服务端(no servers)。
4)ansible playbook,采用yaml配置,提前编排自动化任务。
5)ansible功能模块较多,对于自动化的场景支持丰富。

Ansible不需要单独安装客户端,也不需要启动服务。

Ansible是Python中的一套完整的自动化执行任务模块。

Ansible Playbook采用yaml配置,对于自动化任务执行过程一目了然。

1、安装部署过程简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
2、默认使用SSH协议对设备进行管理;
3、有大量常规运维操作模块,可实现日常绝大部分操作;
4、配置简单、功能强大、扩展性强;
5、支持API及自定义模块,可通过Python轻松扩展;
6、通过Playbooks来定制强大的配置、状态管理;
7、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
8、提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台。

三、Ansible工作流程

在这里插入图片描述

在这里插入图片描述

主要模块如下

(1)

1、Ansible:Ansible核心程序。

2、HostInventory:记录由Ansible管理的主机信息,包括端口、密码、ip等。

3、Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。

4、CoreModules:核心模块,主要操作是通过调用核心模块来完成管理任务。

5、CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。

6、ConnectionPlugins:连接插件,Ansible和Host通信使用。

(2)

1、连接插件connectior plugins用于连接主机 用来连接被管理端
2、核心模块 core modules 连接主机实现操作, 它依赖于具体的模块来做具体的事情
3、自定义模块 custom modules,根据自己的需求编写具体的模块
4、插件 plugins,完成模块功能的补充
5、剧本 playbooks,ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
6、主机清单 inventor,定义ansible需要操作主机的范围

四、Ansible的组成结构

1、Ansible

是Ansible的命令工具,核心执行工具;一次性或临时执行的操作都是通过该命令执行。

2、Ansible Playbook

任务剧本(又称任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,yaml格式。

3、Inventory

Ansible管理主机的清单,默认是/etc/ansible/hosts文件。

4、Modules

Ansible执行命令的功能模块,Ansible2.3版本为止,共有1039个模块。还可以自定义模块。

5、Plugins

插件,模块功能的补充,常有连接类型插件,循环插件,变量插件,过滤插件,插件功能用的较少。

6、API

提供给第三方程序调用的应用程序编程接口。

五、Ansible任务执行流程

在这里插入图片描述

Ansible 系统由控制主机对被管节点的操作方式可分为两类,即adhoc和playbook:

1、ad-hoc模式(点对点模式)

使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于bash中的一句话shell。

2、playbook模式(剧本模式)

是Ansible主要管理方式,也是Ansible功能强大的关键所在。playbook通过多个task集合完成一类功能,如Web服务的安装部署、数据库服务器的批量备份等。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件。

3、简单说就是Ansible在运行过程当中, 首先读取ansible.cfg中的配置文件, 根据规则获取Inventory中的管理主机列表, 并行的在这些主机中执行配置的任务, 最后等待执行返回的结果。

六、Ansible命令执行过程

(1)加载自己的配置文件,默认/etc/ansible/ansible.cfg;

(2)查找对应的主机配置文件,找到要执行的主机或者组;

(3)加载自己对应的模块文件,如 command;

(4)通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;

(5)对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;

(6)给文件 +x 执行权限;

(7)执行并返回结果;

(8)删除临时py文件,sleep 0退出;
发布了108 篇原创文章 · 获赞 30 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/aaronszm/article/details/104186120
今日推荐