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

2017-03-27 Tools

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

 

關於

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

 

功能

  • 簡單快速的遠端登入主機
  • 多人管理的模式
  • 遠端執行指令
  • 對多台主機遠端執行指令

 

支援

  • CentOS、Ubuntu、Debian、Cygwin、MacOS

 

安裝

一般安裝會在你的家目錄建立一個 .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 必須包含

  • Group – 用於分類你的主機群組,可以用 -g 參數來快速找到你的分類。
  • Alias – 用短名稱登入你的主機。
  • HostName – 用於辨識主機使用,無任何功能。
  • User – 用於登入主機的使用者,也可設定為 NA,用自定義 (~/.ems/ems.conf) 的使用者登入。
  • Port – 遠端 ssh 的端口。
  • IP – 遠端主機位置。

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
  • –import-from-all 會清除既有的主機設定後重新 insert (建議)。
  • –import-from-add 僅會新增,但不會修改和刪除,對於自己的伺服器清單無法掌握時使用。

 

匯入後再執行 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 寫實在笨笨的。

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱