【1】Saltstack handbook:從零開始 Saltstack

 

 

寫在前面的話node

 

最近一直都在整理之前的亂七八糟的筆記,因此會有不少老舊的東西都會被拉出來從新遛遛。算是再度系統的進行學習。學習

 

 

關於 Saltstack 的一些概念測試

 

Saltstack 是基於 Python 開發的,和其相似的東西還有 Puppet(基於 rubby,更早),Ansible(基於 Python)。spa

Saltstack 主要包含 3 大功能:遠程執行 / 配置管理(狀態管理) / 雲管理。設計

Saltstack 的四種運行方式:Local,C/S(Master / Minion),Syndic,SSH。code

通常咱們用的最多的就是 C/S 的方式。blog

咱們會在不少資料上面看到這樣一個說法:Saltstack 就是簡化版的 Puppet + 強化版的 Func。ip

至於爲啥叫 Saltstack,聽說 Salt 來源於做者所在的城市是美國的鹽湖城,而 Stack 來源則是由於全部 Stack 的都火了,如 OpenStack。開發

最後,Saltstack 消息發佈系統監聽端口爲 4505,客戶端與服務端通訊端口爲 4506。 get

 

安裝 Saltstack

 

咱們這裏實現準備了 3 臺 CentOS 7 的虛擬機,信息以下:

IP地址 主機名 說明
192.168.100.111 demo-node1 Master 節點,CentOS Linux release 7.5
192.168.100.112 demo-node2 Minion 節點,CentOS Linux release 7.5
192.168.100.113 demo-node3 Minion 節點,CentOS Linux release 7.5

 

Saltstack 自己在 epel 源中就存在,但咱們這裏仍是使用官方給咱們提供的源安裝:

http://repo.saltstack.com/#rhel

咱們能夠從官方的源找到對應的系統,我這裏採用的都是 CentOS7。

1. 在三個節點都安裝源:

yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm

完成之後在 /etc/yum.repos.d/ 目錄會生成一個 salt-latest.repo 的源文件。咱們這裏建議 Saltstack 採用 yum 安裝的方式而非源碼安裝,後者容易出現各類問題。

 

2.  在主節點安裝 Salt master 和 minion:

yum -y install salt-master salt-minion

 

3. 在其餘節點上只須要按照 Salt minion: 

yum -y install salt-minion

從按照過程咱們能夠看到會安裝不少 Python 依賴包,這就是不推薦源碼安裝的主要緣由:

至此,Saltstack 安裝完成!

 

 

配置 Saltstack 

 

安裝完成後不表明咱們就能使用了,還須要對服務進行配置,具體方法以下:

1. 主節點啓動 Master:

systemctl start salt-master

 

2. 全部節點配置 Minion:配置文件爲 /etc/salt/minion

# 第 16 行,通常寫 Master 的域名最好,沒用域名寫 IP
master: 192.168.100.111

# 第 112 行,配置每臺主機的 id,要求惟一且具備意義,用於區分主機
id: saltstack-node-01

 

3. 全部節點啓動 Minion: 

systemctl start salt-minion

 

4. 此時查看目錄變化(這裏咱們作個拓展,幫助咱們更好的瞭解 saltsatck):

tree /etc/salt/

若是沒有 tree 命令 yum 安裝一個便可,查看當前的目錄結構變化:

Master 節點:

Minion 節點:

能夠看到,在 Master 和 Minion 節點的 pki/minion 目錄下都生成了公鑰私鑰文件。同時,Minion 都會把本身的公鑰文件發給 Master 節點。並改名爲咱們設置的 id 名字。咱們能夠經過 MD5 查看兩個文件是否爲同一個。

在 Master 節點查看 node3 的公鑰:

在 node3 查看 pub 文件:

能夠看到兩個 MD5 值是相同的,因此這實際上是同一個文件。

注意:在其餘資料上可能見到生成 minion_id 文件,緣由是沒配置 minion 配置中的 id ,若是有配置是不會生成的。

 

5. 在 Master 上面查看 Key:

啓動了 Minion 並不就能表明着可以連入 Master,這還牽扯到受權,咱們能夠查看目前受權的主機狀態:

salt-key

以下圖:

 

6. 容許受權:

salt-key -a saltstack-node-01

以下圖:

這裏可使用通配符,如:

salt-key -a saltstack-node-*

那麼剩下的都會被添加授信:

此時再度查看 Master 節點的目錄結構:

能夠發現,被受權的 Key 都從 minions_pre 下移動到了 minions 目錄,同時在 minion 目錄下新增了 minion_master.pub 文件,這樣就實現了互相通訊。

同時這也意味着咱們以前配置 id 的重要性,由於你修改 id,意味着這個公鑰就失效了。

同時在 id 設計的時候,咱們應該讓他具備意義,好比咱們如今有兩個項目,一個叫 erp,一個叫 mall,那麼針對 erp 的主機羣的 id 設計就應該是 erp-xxxx,mall 的 id 就應該是是 mall-xxxx,這樣咱們就能使用通配符對主機羣組進行批量管理。

固然還有一下常見的參數,經過 salt-key -h 查看,如:

salt-key 參數 說明
-L 顯示全部
-A 接受全部受權
-d 刪除某個 Key
-D 刪除全部

 

7. 測試節點通訊:

salt '*' test.ping

使用單引號的目的是轉義,咱們向全部受權的發起狀態檢測,結果如圖: 

 

8. 遠程執行命令:

salt 'saltstack-node-03' cmd.run 'ip a'

執行效果如圖:

 

其它示例:

1. 通配符使用的時候,如選擇 node1,node2,能夠寫成 node[12]

2. 選擇多臺的時候可使用逗號隔開,可是須要 -L 參數,如:salt -L 'node1,node2' test.ping

3. 相同前綴也可使用豎線分割,可是必需要 -E 參數,如:salt -E 'node(1|2)' test.ping

 

 

小結

 

至此,咱們算是簡單得了解了安裝 Saltstack 以後一些簡單的配置,接下來咱們將慢慢的正式開始談及 Saltstack 的一些更高級的用法。 

相關文章
相關標籤/搜索