如果服務器的數(shù)量小的話,我們可以直接通過ssh連接上去,執(zhí)行命令即可.也可以直接寫一個腳本,通過ssh自動執(zhí)行命令,將服務器修改成我們想要的狀態(tài).
然而,當我們有不只一臺服務器時,就不能這么做了.當然,你要想這么做,也沒人攔你,只是麻不麻煩的問題.
現(xiàn)在有這么一個場景,我們想要搭建一個kubernetes的微型集群,我們先設置好了一個master節(jié)點,然后讓其他的node都自動加入master.而這些node上,需要配置的都差不多.
如果不使用這些自動化的運維工具,我們就需要開啟多個terminal,在其中一遍遍的輸入命令,然后驗證結果.這種方式不僅麻煩,還容易出錯.
But the tools save us!!!
這里我簡單的介紹我用過的兩款自動化運維工具.
第一款是Chef,在我之前的文章中,也介紹過它.看過我那些文章的朋友,應該都能感覺到其復雜性,以及功能的強大性.Chef中有三種節(jié)點,一種是我們的Workstation,一種是Chef Server,還有一種是Chef Client.我們需要在Workstation上面,編寫一些代碼,用這些代碼來描述我們預期的服務器的狀態(tài),然后上傳到Chef Server上,然后Chef Client檢測之后,再在服務器上執(zhí)行對應的操作,讓服務器變成你預期的狀態(tài).每個服務器上,都需要安裝一個Chef Client.
從上面的描述中,我們可以看到,Chef不是基于SSH的,它是服務器-客戶端模式實現(xiàn)的.所以,我們要想使用的話,就得搭建一個Chef服務器(也可以用Chef官網(wǎng)免費提供的),還需要在每一臺服務器上,都安裝一個Chef Client.
Chef的Cookbook,寫起來也不輕松.其中用到了大量的Ruby語法,如果你懂Ruby還好,不懂的話,很容易蒙圈.反正我是不懂.有點頭大.
雖然Chef有諸多不便,但是,它有一個最大的好處,就是有很多cookbook,在Chef Market中,別人已經(jīng)寫好了,我們只需要用就好了.所以,搭建一個Kubernetes集群,我們實際上需要做的,可能很少.只需要下載下來這些Cookbook,然后修改一下,再運行就好.
另外,Chef還依賴于很多其他的東西.由于很久不用了,我也有點記不清楚具體是依賴于啥了.
第二款是Ansible,也是我現(xiàn)在在搭建這個微型的Kubernetes集群時,使用的一款工具.當初想到要進行自動化的時候,我就有點頭大.因為之前用Chef的時候,感覺其用起來特別麻煩.后來突然想起來還有Ansible這款工具.之前看別人寫的blog時,看到有人用這款工具,感覺用起來特別簡單.于是就嘗試了一下,果然是特別簡單,輕松的.
Ansible是使用SSH對服務器進行操作的.也就是說,它只需要一個Workstation就行了,而不需要Chef中的Chef Server和Chef Client.而且它的Playbook是基于yml語法的,寫起來特別簡單.
它還可以給服務器分組,我們可以只給特定組中的服務器執(zhí)行Playbook,這就讓我們能夠同時對服務器進行不同的操作.
Ansible內部支持的模塊也挺多,能夠滿足基本的需求.
但是,它沒有像Chef那樣的Market,所以,我們只有自己重復造輪子了.
使用的時候,具體有什么區(qū)別,那就請各位自行嘗試了.
總之,我覺得,如果Ansible能夠滿足你的需求,就使用Ansible吧.