如果服务器的数量小的话,我们可以直接通过ssh连接上去,执行命令即可.也可以直接写一个脚本,通过ssh自动执行命令,将服务器修改成我们想要的状态.
然而,当我们有不只一台服务器时,就不能这么做了.当然,你要想这么做,也没人拦你,只是麻不麻烦的问题.
现在有这么一个场景,我们想要搭建一个kubernetes的微型集群,我们先设置好了一个master节点,然后让其他的node都自动加入master.而这些node上,需要配置的都差不多.
如果不使用这些自动化的运维工具,我们就需要开启多个terminal,在其中一遍遍的输入命令,然后验证结果.这种方式不仅麻烦,还容易出错.
But the tools save us!!!
这里我简单的介绍我用过的两款自动化运维工具.
第一款是Chef,在我之前的文章中,也介绍过它.看过我那些文章的朋友,应该都能感觉到其复杂性,以及功能的强大性.Chef中有三种节点,一种是我们的Workstation,一种是Chef Server,还有一种是Chef Client.我们需要在Workstation上面,编写一些代码,用这些代码来描述我们预期的服务器的状态,然后上传到Chef Server上,然后Chef Client检测之后,再在服务器上执行对应的操作,让服务器变成你预期的状态.每个服务器上,都需要安装一个Chef Client.
从上面的描述中,我们可以看到,Chef不是基于SSH的,它是服务器-客户端模式实现的.所以,我们要想使用的话,就得搭建一个Chef服务器(也可以用Chef官网免费提供的),还需要在每一台服务器上,都安装一个Chef Client.
Chef的Cookbook,写起来也不轻松.其中用到了大量的Ruby语法,如果你懂Ruby还好,不懂的话,很容易蒙圈.反正我是不懂.有点头大.
虽然Chef有诸多不便,但是,它有一个最大的好处,就是有很多cookbook,在Chef Market中,别人已经写好了,我们只需要用就好了.所以,搭建一个Kubernetes集群,我们实际上需要做的,可能很少.只需要下载下来这些Cookbook,然后修改一下,再运行就好.
另外,Chef还依赖于很多其他的东西.由于很久不用了,我也有点记不清楚具体是依赖于啥了.
第二款是Ansible,也是我现在在搭建这个微型的Kubernetes集群时,使用的一款工具.当初想到要进行自动化的时候,我就有点头大.因为之前用Chef的时候,感觉其用起来特别麻烦.后来突然想起来还有Ansible这款工具.之前看别人写的blog时,看到有人用这款工具,感觉用起来特别简单.于是就尝试了一下,果然是特别简单,轻松的.
Ansible是使用SSH对服务器进行操作的.也就是说,它只需要一个Workstation就行了,而不需要Chef中的Chef Server和Chef Client.而且它的Playbook是基于yml语法的,写起来特别简单.
它还可以给服务器分组,我们可以只给特定组中的服务器执行Playbook,这就让我们能够同时对服务器进行不同的操作.
Ansible内部支持的模块也挺多,能够满足基本的需求.
但是,它没有像Chef那样的Market,所以,我们只有自己重复造轮子了.
使用的时候,具体有什么区别,那就请各位自行尝试了.
总之,我觉得,如果Ansible能够满足你的需求,就使用Ansible吧.