加入收藏
您好,欢迎访问中国开源云联盟官网!

当前位置:

【OpenStack悉尼峰会快报】OpenStack悉尼峰会 |悉尼峰会爆款话题-Ansible
2018-03-28

在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"。