自动化运维工具 ansible(一)ansible的简介+工作原理+基本架构

文章目录

  • ansible是什么
  • ansible能做什么?
  • 几种自动化运维工具的比较
  • 为什么选择Ansible?
  • ansible的基本架构
  • ansible程序的目录结构
  • ansible工作原理
  • ansible的任务模式
  • ansible的工作流程
  • ansible通信机制

ansible是什么

Ansible是近年越来越火的一款运维自动化工具,其主要功能是帮助运维实现IT工作的自动化、降低人为操作失误、提高业务自动化率、提升运维工作效率

ansible是一种自动化运维工具,基于paramiko开发的,并且基于模块化工作

Ansible基于Python语言实现,由paramiko和PyYAML两个关键模块构建。Ansible的编排引擎可以出色地完成配置管理,流程控制,资源部署等多方面工作。ansible主要承担的工作有以下几种:

配置管理
服务即时开通
应用部署
流程编排
监控告警
日志记录

ansible是一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台

它是基于python语言,由Paramiko和PyYAML两个关键模块构建
集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能

ansible是基于模块工作的,本身没有批量部署的能力,真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.
ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的

常见的部署管理工具有Chef、Puppet、Ansible、SaltStack、Fabric

Ansible发布于2012年,其作者兼创始人是Michael DeHaan。

红帽2015收购了Ansible母公司。

ansible能做什么?

自动化运维工具 ansible(一)ansible的简介+工作原理+基本架构_第1张图片

几种自动化运维工具的比较

自动化运维工具 ansible(一)ansible的简介+工作原理+基本架构_第2张图片

为什么选择Ansible?

  1. Ansible完全基于Python开发,而DevOps在国内已然是一种趋势,Python被逐步普及,运维人员自己开发工具的门槛逐步降低,得益于此,方便对Ansible二次开发。
  2. Ansible丰富的内置模块,甚至还有专门为商业平台开发的功能模块,完全可以满足日常功能所需。
  3. 在Ansible去中心化概念下,一个简单的复制操作即可完成管理配置中心的迁移。
  4. Agentless(无agent客户端),客户端无需任何配置,由管理端配置好后即可使用,这点非常诱人
  5. 支持playbook剧本,连续任务按先后设置顺序完成;
  6. 期望每个命令具有幂等性
  7. 模块化设计,调用特定的模块来完成特定任务,本身是核心组件,短小精悍;

幂等性是什么?

自动化运维工具 ansible(一)ansible的简介+工作原理+基本架构_第3张图片
也就是定义的任务已存在则不会做任何事情,意味着在同一台服务器上多次执行同一个playbook是安全的

ansible的基本架构

自动化运维工具 ansible(一)ansible的简介+工作原理+基本架构_第4张图片
ansible系统由控制主机和被管理主机组成,控制主机不支持windows平台.

核心: ansible

Core Modules: ansible自带的模块

Custom Modules: 核心模块功能不足时,用户可以添加扩展模块

Plugins: 通过插件来实现记录日志,发送邮件或其他功能

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

Connectior Plugins: ansible基于连接插件连接到各个主机上,默认是使用ssh

Host Inventory: (清单)记录由Ansible管理的主机信息,包括端口、密码、ip等

ansible程序的目录结构


/etc/ansible/ansible.cfg   #配置文件
/etc/ansible/hosts   #主机库(host inventory

执行文件目录: /usr/bin/

/usr/bin/ansible   #主程序
/usr/bin/ansible-doc   #文档
/usr/bin/ansible-playbook   #剧本

lib依赖库: /usr/lib/python2.7/site-packages/ansible/
help文件: /usr/lib/python2.7/site-packages/ansible

ansible工作原理

自动化运维工具 ansible(一)ansible的简介+工作原理+基本架构_第5张图片
ansible主要组成部分功能说明:

PLAYBOOKS:任务剧本(任务集),编排定义Ansible任务集的配置文件,
由Ansible顺序依次执行,通常是JSON格式的YML文件

INVENTORY:Ansible管理主机的清单/etc/anaible/hosts

MODULES:Ansible执行命令的功能模块,多数为内置的核心模块,也可自定义,ansible-doc –l 可查看模块

PLUGINS:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用

API: 供第三方程序调用的应用程序编程接口

ANSIBLE:组合INVENTORY、 API、 MODULES、PLUGINS的绿框,
可以理解为是ansible命令工具,其为核心执行工具

ansible的任务模式

1.ad-hoc模式(点对点模块)
使用单个模块,支持批量执行单条命令,相当与在bash中执行一句shell命令

2.playbook模式(剧本模式)
ansible主要的管理方式,通过多个task的集合完成一类功能,
可以理解为多个ad-hoc的配置文件

ansible的工作流程

自动化运维工具 ansible(一)ansible的简介+工作原理+基本架构_第6张图片
自动化运维工具 ansible(一)ansible的简介+工作原理+基本架构_第7张图片
linux系统下是自带python2.X版本的,Linux的软件升级工具,红帽系的 yum,Debain/Ubuntu系的apt-get,都是基于Python。而且它们的版本要保持原始的一致,就算是升级Python版本,也要留意老版本的那些脚本还能正常使用。

ansible通信机制

  • Ansible主推的卖点是其无需任何Daemon维护进程即可实现相互间的通信,且通信方式是基于业内统一标准的安全可靠的SSH安全连接。
  • 无客户端,只需安装SSH、Python即可。
  • 基于OpenSSH通信,底层基于SSH协议(Windows基于PowerShell。
  • 支持密码和SSH认证,建议使用公私钥方式认证,因为密码认证方式的密码需明文写配置文件,虽然配置文件可加密,但会增加Ansible使用的复杂度。
  • 支持Windows,但仅支持客户端,服务端必须是Linux系统

daemon 英 [ˈdiːmən](守护进程)

你可能感兴趣的:(自动化运维工具)