在2017届OpenStack summit中,我们除了了解OpenStack的一些动向、技术等,还有另外一个感受,那就是ansible的重要性越来越高。
使用关键字ansible搜索,标题中带ansible的话题就有11个,其它与ansible相关的话题也有很多。
1.Deploying OpenStack at scale with TripleO, Ansible, and Containers
2.OpenStack-Ansible users and ops feedback session
3.Migrating your job from jenkins Job Builder to Ansible Playbooks, a Zuulv3 story
4.Ansible - Project Onboarding
5.Ansible: State of the Union, our friendship with OpenStack, and more
6.Windmill 101: Ansible based deployment for Zuul / Nodepool
7.Deploying Multi-Container Applications with Ansible Service Broker
8.Heat orchestration using Ansible
9.OpenStack-Ansible - Project Update
10.Using Ansible to Automate the Entire IT Stack
11.Practical Kubernetes with Magnum and OpenStack-Ansible
其实在ansible之前,市面上已经有很多常见的自动化运维工具,如chef,puppet,saltstack。ansible之所以火爆,笔者分析有两点很重要:
1. ansible是基于python的
python*近几年非常受欢迎,目前从事运维和部署的人,或多或少都有一些使用python的能力。而chef和puppet都基于ruby,saltstack也基于python。所以很多人在选择自动化运维工具的时候,会倾向于ansible和saltstack。
2. ansible是无代理的
无代理,即不需要在被管理的节点安装任何客户端或者其它软件,它只需要被管理节点支持ssh和python,而这两项基本上在管理节点上是默认支持的。这无疑是一个很强的特点,不仅使人们容易上手,更减少了维护客户端的成本。从另一个方面讲,当ansible有新的版本发布时,运维人员只需要在ansible控制节点更新软件,并做出相应调整即可。而saltstack的亮点则是使用了消息队列(zero mq)和客户端,所以在ansible和saltstack之间,大家会倾向于ansible。
ansible其他特点
除了上面的讲的以外,ansible还有其它一些特点,这些同样也是很吸引人的:
1.简单
ansible的ad-hoc命令和playbook都是用户和机器可读的,所以学习成本很低,不需要特殊的代码技能,很容易上手所以学习成本很低,不需要特殊的代码技能,很容易上手。
2.强大
它能帮助我们做什么?
几乎我们能想到的日常操作,它都可以实现。不仅原生提供1000+的模块,还可以从ansible galaxy分享自己的和别人的模块
3.可扩展
ansible支持用户自定义模块,而且不限定这些模块所使用的语言。ansible执行模块时,主要是将相应的脚本传到被管理节点,然后执行它,只要脚本能以json格式返回结果即可。
4.可编排
ansible playbook可以将host与role进行编排,所以可以在不同的host节点执行不同的任务。在ansible中,task是按序执行的,当管理多个节点时,只有当一个task在所有节点执行完成,下一个task才会被执行。
如何提高ansible的运行速度
可能会有一些反对的声音,因为ansible使用ssh与被控节点通讯,所以运行起来会比较慢。实际情况可能是这样的,但我们可以做一些事情来提高ansible的运行速度,比如
1. 开启SSH pipelining
一般情况下,ansible在执行task时,会有3次ssh连接,包括:
1.1 在被管理节点创建临时目录
1.2 将脚本发送到临时目录
1.3 执行脚本并返回结果
开启SSH pipelining后,ansible在执行task时,不需要建立临时目录和发送脚本,只需要一次ssh连接,在这次连接中把脚本作为stdin写入。
2. 开启ControlPersist
这可能需要升级ssh到比较新的版本。开启ControlPersist之后,当断开ssh会话时,连接并没有被销毁,所以下次建立会话时,可以直接使用该连接,这可以节省很多时间。
总结
综合上面的分析,相信大家能够体会到ansible的强大之处。
它不仅能帮助解决日常的IT运维问题,就连部署OpenStack和kubernetes都能轻松应对。正如今天峰会上的一个议题一样,"Using Ansible to Automate the Entire IT Stack"。