1.常用的自动化运维工具
Puppet
—基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱
SaltStack
—基于 Python 开发,采用 C/S 架构,相对 puppet 更轻量级,配置语法使用 YMAL,使得配置脚本更简单
Ansible
—基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2 模板语言,更强的远程命令执行操作
2.Ansible简介
Ansible 是一个简单的自动化运维管理工具,可以用来自动化部署应用、配置、编排 task(持续交付、无宕机更新等),采用 paramiko 协议库(fabric也使用这个),通过 SSH 或者 ZeroMQ 等连接主机,大概每 2 个月发布一个主版本
简单的说: 让我们自动化部署APP;自动化管理配置项;自动化的持续交付;自动化的(AWS)云服务管理。 批量的在远程服务器上执行命令 。
Ansible则是提供了一套简单的流程,你要按照它的流程来做,就能轻松完成任务。
3.Ansible工作机制
基于 paramiko 开发的。这是一个纯Python实现的ssh协议库,Ansible 在管理节点将 Ansible 模块通过 SSH 协议(或者 Kerberos、LDAP)推送到被管理端执行,执行完之后自动删除,可以使用 SVN 等来管理自定义模块及编排
4.Ansible组成
Ansible:核心
Modules:包括 Ansible 自带的核心模块及自定义模块
Plugins:完成模块功能的补充,包括连接插件、邮件插件等
Playbooks:网上很多翻译为剧本,个人觉得理解为编排更为合理;定义 Ansible 多任务配置文件,有 Ansible 自动执行
Inventory:定义 Ansible 管理主机的清单
5.Ansible优点
1、轻量级,不需要去客户端安装agent,更新时,只需要在操作机上进行一次更新即可 2、批量任务执行可以写成脚本,而且不用分发到远程就可以执行 3、使用python编写的,维护更简单 4、支持sudo
思考
你是否曾经研究过类似ansible的工具?在你的持续集成平台是否应用了自动化发布工具? 是否碰到过应用发布失败问题?