Site icon Mr. 沙先生

用 ems 管理大量伺服器, 基於 ssh key 的自動登入工具

在現在這個時代有許多如 Puppet, Ansible, Chef 等工具來大量佈署,已經越來越趨於自動化管理的方向前進,但是小弟身在的公司環境擁有上千台主機,那些主機列表如雪花般紛飛的在我眼前,雖然自動化管理已經是趨勢,但在尚未完全自動化之前還是會有遠端登入的需求,所以就有了 ems 這個工具的出現。

 

關於

ems (Easy Manage Server) 是一個希望可以對於系統管理人員更方便去管理伺服器的一個工具,這是基於 ssh key 的方式所寫,原本只是想寫個簡單的 Script,所以用 bash 開發,殊不知這個 ems 需求越來越多,所以越來越肥 …

 

功能

 

支援

 

安裝

一般安裝會在你的家目錄建立一個 .ems 的目錄

$ git clone https://github.com/shazi7804/ems
$ cd ems
$ chmod +x setup.sh
$ ./setup.sh

 

裡面存放登入的 “使用者名稱”“SSH 金鑰”

.ems/ems.conf

.ems/key/user.secrets

.ems/key/user.secrets.public

 

加入其他的管理者

一樣會在這個使用者的家目錄建立 “使用者名稱”“SSH 金鑰”

$ ./setup.sh --add-user=otheruser

 

用 CSV(逗號分隔) 匯入主機資訊

這個 csv 必須包含

dev,dev01,devserver1,NA,22,192.168.0.2

dev,dev02,devserver2,NA,22,192.168.0.3

 

用 –import-from-all 來匯入主機資訊

$ sudo ems --import-from-all=site.csv

 

匯入後再執行 ems 即可看到已匯入的主機資訊

 

佈署

把產生的 Public Key 丟到遠端主機的 ~/.ssh/authorized_keys

如果你的主機量大,建議可以採用 Puppet、Ansible .. 等方式大量佈署。

 

使用 ems 指令

用短名稱來登入主機

$ ems go dev01

 

用短名稱來遠端執行指令

$ ems go dev01 ifconfig

 

用指定 id 來執行指令

$ ems go --id 0,1 ifconfig

使用上面指令將會在 dev01, dev02 執行 ifconfig。

 

 

用 ems 可以免去記 IP 和 Domain 的麻煩,用短名稱更能快速的用自己想要的 alias 來登入,ems 我用來定位於手動和自動之間的過渡期工具。

 

 

如果有時間再改用其他語言重寫 … 用 bash 寫實在笨笨的。

Exit mobile version