文章目录
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完全基于Python开发,而DevOps在国内已然是一种趋势,Python被逐步普及,运维人员自己开发工具的门槛逐步降低,得益于此,方便对Ansible二次开发。
- Ansible丰富的内置模块,甚至还有专门为商业平台开发的功能模块,完全可以满足日常功能所需。
- 在Ansible去中心化概念下,一个简单的复制操作即可完成管理配置中心的迁移。
- Agentless(无agent客户端),客户端无需任何配置,由管理端配置好后即可使用,这点非常诱人
- 支持playbook剧本,连续任务按先后设置顺序完成;
- 期望每个命令具有幂等性
- 模块化设计,调用特定的模块来完成特定任务,本身是核心组件,短小精悍;
幂等性是什么?
也就是定义的任务已存在则不会做任何事情,意味着在同一台服务器上多次执行同一个playbook是安全的
ansible的基本架构
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主要组成部分功能说明:
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的工作流程
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](守护进程)