在現在這個時代有許多如 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 寫實在笨笨的。