目录
一、Ansible是什么?
- 它是一款简单的自动化工具(Ansible is Simple IT Automation)
- 它不跟其他IT自动化一样,它像一个能力强大的导演,统筹所有的资源,可以按照既定的剧本完成所有的IT自动化场景
- 剧本写好了,资源到位了,场景演绎就可以按部就班的开始了。
二、Ansble能做什么?
- 支持local 、ssh、zeromq 三种方式连接被管理端,默认使用基于ssh的连接
- 远程管理用户、管理Sudo、管理服务、管理存储;远程调试系统;远程执行测试计划等。可以说想打开了windows WINRM服务一样的PowerShell类似。但比其更加的具有生产力
三、Ansible怎么工作的?
- 了解下Ansible的基本架构
- 公有云,私有云环境统统可以管理;支持SSH通道的设备都可以连接;虚拟化,容器示例都能上手。支持不同的连接类型。
- 它有的基本构成是: ansible core : ansible 自身核心模块 。 host inventory: 主机库,定义可管控的主机列表。 connection plugins: 连接插件,一般默认基于 ssh 协议连接。 modules:core modules ( 自带模块 ) 、 custom modules ( 自定义模块 )。 playbooks :剧本,按照所设定编排的顺序执行完成安排任务
四、Ansible的长短处
长处:部署较为简单, 只需要在控制主机上部署ansible环境,被控制端上只要求安装ssh和python 2.5以上版本,对于运维人员使用门槛低。
1) 被管控节点无需安装Agent
2) 无服务端,使用是直接调用控制端命令或者脚本。
3) 基于模块工作, 可以使用任意语言开发模块,其本身不会集成所有的操作功能,可以任意调用那些具有特定功能的模块,对模块开发语言没有要求。
4) 基于yaml语法编写playbook,基于SSH工作,可以实现多级调度。
5) 定义的任务已存在则不会做任何事情,意味着在同一台服务器上多次执行同一个playbook是安全的,支持Sudo.
6) Ansible是一个声明式的管理工具,在编写脚本时使用的是声明式语言,根据剧本剧情利用各种模块指令搭出来积木最终的形状。
7)Ansible具有幂等性的特点,无论执行多少次,只要你的操作系统是同一个版本,那么安装出来的环境绝对是一样的,这样也就保证了应用所处的底层环境的一致性,而不会造成同一个版本的应用在不同的机器上运行出现不同的效果的问题。
短处:
1) 学习成本:需要学习Ansible自定义的脚本语法规则。
2) 安装成本:控制主机需是一台非Windows远程主机,也就是说至少要有1台远程Server。
3) 易用性:因为必须有远程主控机,若本地有文件需同步,则需先将文件传输到对应的主控机,才能够做分发同步。
三款自动化软件总体功能对比
项目 | SaltStack | Ansible | BatchShell |
开发语言 | Python | Python | Java |
是否有客户端 | 有 | 无 | 有 |
是否支持二次开发 | 支持 | 支持 | 支持 |
服务器与远程机器是否相互验证 | 是 | 是 | 是 |
服务器与远程机器的通信是否加密 | 是,使用AES加密 | 是,使用OpenSSH | 是,使用OpenSSH、FTPS等多种加密协议 |
平台支持 | BSD, Linux , Mac OS X,Solaris,Windows | AIX , BSD , HP-UX , Linux,Mac OS X ,Solaris | AIX , BSD , HP-UX , Linux,Mac OS X, Solaris |
是否提供Web UI | 提供 | 商业版本提供 | 提供 |
配置文件格式 | YAML | YAML | 原生Shell |
命令行执行 | 支持 | 支持 | 支持 |
是否有客户端 | 有 | 无 | 有 |
是否支持二次开发 | 支持 | 支持 | 支持 |
可视化文本编辑、查询、替换 | 无 | 无 | 支持 |
五、Ansible使用的场景
目前实现的功能有如下这些:
- 系统初始化(目录,用户,软件包)
- Nginx conf配置自动生成
- 业务应用环境初始化部署
-
- 一键安装指定版本
- 全量生成全服配置
- 应用权限自动刷新
- 自动化发布(console)
-
- git打通
- 自动打包&分发
- 自动备份
- DB更新自动检测及备份
- DB自动更新
- Ansible与K8S结合初探(测试)