Kivi

没有什么远大理想,只是永远都不会满足而已


  • 首页

  • 关于

  • 标签

  • 归档

ansible调研

发表于 2017-02-21 更新于 2017-07-02 分类于 Automation 阅读次数:
本文字数: 2.3k 阅读时长 ≈ 2 分钟

自动化运维工具

把运维人员常做的大量的重复的操作,通过一个工具很方便的去做,而运维人员只需要为这种工具提供必不可少的配置。这种工具就是自动化运维工具。(完全是个人理解)

什么是ansible

ansbile是一个自动化运维工具,它可以帮助部署应用,管理系统,简化操作,构建devops基础设施。

上面是官方的解释,不够具体,通过两周的使用,我自己的感觉最能发挥ansible价值的场景(任务),满足这样的特点:重复而且大量

首先是重复,借助ansible完成的任务一定是在某个层面(直观点的层面)是重复的,不然使用这个工具没有任何意义;其次是大量,这个比较能体现ansible轻便的优势

为什么使用ansible

主流自动化运维工具对比调研

工具 语言 架构 协议 学习曲线
puppet ruby c/s http 上手难
chef ruby c/s http 上手难
saltstack python c/s ssh/zmp 难度低于上面两个,新技术
ansible python no client ssh 上手容易

Puppet和Chef会吸引广大开发人员和注重开发的公司,而Salt和Ansible极其适合系统管理员的要求。Ansible的简洁界面和可用性非常迎合系统管理员的想法;而在拥有许多Linux和Unix系统的公司,Ansible运行起来一开始就快速又轻松。

Salt是四款工具中最漂亮最稳健的;与Ansible一样,它也会博得系统管理员的芳心。Salt拥有高扩展性和强大功能,唯一的软肋就是Web用户界面,配置文件相对ansible复杂一些

Puppet是这四款工具中最成熟的,从可用性的角度来看恐怕也最容易上手,不过竭力建议你对Ruby要有深入了解。Puppet不如Ansible或Salt来得精简,配置起来有时会变得错综复杂。对异构环境来说,Puppet是最稳妥的选择,但是你可能会发觉Ansible或Salt比较适合更庞大或更一致的基础设施。

Chef拥有稳定的、精心设计的布局,虽然它在原始功能方面远未达到Puppet的水平,但这是款功能非常强大的解决方案。要是管理员缺乏丰富的编程经验,Chef学起来可能最困难,但它也许最适合注重开发的管理员和开发部门。

总结来说,ansbile相对于其他自动化运维工具而言,有以下优势:

  • 简单,上手快
  • 安全性好
  • 无需client,配置文件容易理解(相对于salt)

ansible使用相关信息调研

环境依赖
windows server不支持,linux server只需要安装了py2.6+ 和 openssl

升级机制
推荐使用一个较新的稳定版,目前是2.2,升级多少都会因为api变动需要调整脚本
新的技术可能都会面临一个版本快速迭代的问题,不过目前ansible已经到了2.0(被红帽收购),应该算相对来说比较稳定了,不会频繁出现bug;另一方面,至于有没有非常完善的升级机制,官网上面只有一个2.2的安装方法。
这里确实存在一些问题,但是考虑到工具本身比较简单,升级带来的最大的问题就是之前使用的某些api会失效,这个可以通过不使用deprecated的api来尽量避免。
其实类似这种工具,应该尽量降低升级更新的频率,如果当前版本的功能,性能能够满足需求,可以考虑不升级。这也是为什么我们使用的Linux系统版本和node版本都比较低的原因。

学习成本
四大自动化运维工具中,ansible是最低的,不需要学习新的编程语言(以后某些复杂场景可能需要py),只需要了解playbook语法(比较简单)。
这个观点是调研的时候得出的结论,事实上经过两周的使用,现在看来还是有py编程经验会更好一些,尤其是使用过jinja2,因为配置文件模板使用的这个语法,上来不明白得到话,非常难受。

社区活跃情况
官方文档,初级问题在官方文档上基本都能找到答案
github开源项目(学习写法,因为各自公司往往有自己特定的需求,而开源项目大部分都会写成通用的,所以能直接用的不多。举个例子,开源项目中安装工具大都会使用yum,或者通过官方下载链接下载等网络途径去安装,然而我们有特定需求就是需要在不能访问公网的情况下安装)
google常见问题已经基本上都能找到答案(两周使用体验)

对当前工作流的影响
开发: 无
测试: 无
发布: 可以改变手动发布的现状,针对需求实现自动化新功能发布
这里可以说ansible对开发测试的工作流程没有什么影响,因为针对工作流,ansible能发挥作用的地方可能就是发布。这里也可以看出ansible是一个负面影响范围很小的工具,你可以在其他开发者意识不到的情况下使用它,这一点在技术选型上是比较重要的。当然,这跟ansible本身就特别简单可能也有关系(相比salt,可能我就需要运维同学配合在初始化新机器的时候,帮忙准备一下salt被管理节点所需要的环境)

ansible原理

ansible架构图 ansible工作流程

简单来说,ansible工作原来就是通过ssh将要执行的命令(python)发送到远程服务器,目标服务器执行这些命令,实现自动化运维的操作
这一点对于我们目前的情况来说,是能基本满足需求的

ansible的不足

命令传输通过ssh,是没有salt快的(zmq),如果对命令执行的速度有比较严格的要求,不能使用ansible,体验过速度确实偏慢(目前)

总结

综合以上调研情况,ansible是一个成本最低,而且又能满足基本自动化运维需求的选择。所以最终我们选择了ansible

# ansible # devops # automation # sre
冰雪大世界-黑龙江·哈尔滨
ansible入门
  • 文章目录
  • 站点概览
kivi

kivi

nodejs | server
58 日志
17 分类
32 标签
RSS
  1. 1. 自动化运维工具
  2. 2. 什么是ansible
  3. 3. 为什么使用ansible
    1. 3.1. 主流自动化运维工具对比调研
    2. 3.2. ansible使用相关信息调研
    3. 3.3. ansible原理
    4. 3.4. ansible的不足
    5. 3.5. 总结
© 2019 kivi | 173k | 2:37
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Pisces v7.3.0
|