over 4 years ago

起因

一開始想做的事情,其實是自動化的佈署好 nginx + supervisor + uwsgi + python webserver(whatever)。因為實在有太多設定檔,讓我覺得很囉唆。一開始想過直接寫 shell 就好啦!但是,想要透過變數控制安裝路徑,Server 的 Port,就必需不斷的使用 sed 之類的指令,又醜又煩。

一提到自動化佈署腦袋中出現的工具是 puppet,因為有聽同事提起過。看了幾個 Demo 不得不說這真的是強大的工具。但是,寫習慣 Python 的我,看到 Ruby 的一大堆箭頭,實在是頭暈、不舒服。這時突然有個念頭:像這種自動化工具難道 Python 沒有?經過了一番搜尋,發現了 Saltstack

特色

  1. Python 生產。
  2. 使用者只需專注在 Depoly Script。
  3. Script 格式令人感到親切的 yaml, json。

角色

在 SaltStack 中,角色區分為 Master 以及 Minion。Master 可以對已經接受 (Accepted) 的 Minion 下達指令。

安裝

SaltStack 提供了安裝腳本,大大的降低了進入的門檻。

  • Master

    $ curl -L http://bootstrap.saltstack.org | sudo sh -s -- -M -N git v0.17.2
    
  • Minion

    $ curl -L http://bootstrap.saltstack.org | sudo sh -s -- git v0.17.2
    

利用上面 2 個指令,即可分別安裝好 Master 及 Minion。

設定檔

SaltStack 的設定檔,預設是放在 /etc/salt/
在開始使用之前,需先設定 master 綁定的 IP。並在 minion 設定 master 的位置。

/etc/salt/master
interface: 10.10.100.125
/etc/salt/minion
master: 10.10.100.125

設定完記得要重新啟動 SaltStack 的 Service。

Key

當服務正常啟動之後,minion 會拿著一把 key 去跟 master 登記。這時只要在 master 利用 salt-key 就可以管理這些登記的機器。

$ salt-key -L # 列出所有的 Key

Accepted Keys:
Unaccepted Keys:
Salt-Minion
Rejected Keys:

如要啟用特定的機器,就下達 salt-key -a [key_name] 本例為:

$ salt-key -a Salt-Minion

到此,一台 master 與一台 minion 應該已經正常的連線了。

參考文件

SaltStack Document

← PyBabel 介紹 Why supervisor? →
 
comments powered by Disqus