七天學會 SALT STACK 自動化運維 1

2022-05-06 10:24:10 字數 3959 閱讀 7148

簡單理解 salt stack

筆者是初次接觸 自動化運維 這一技術領域,也是初次接觸salt stack這一自動化運維工具, 所以這裡的簡單理解 saltstack之意為筆者的簡單理解,可以看做是作者的學習筆記,文中較多記述筆者在配置安裝過程中遇到的問題,可能會有紕漏以及錯誤的地方,具體的新手指南,最好是參見這裡.

saltstack是一款自動化運維軟體,使用python編寫,使用zeromq用作通訊協議,主要功能包括命令批量執行,伺服器環境批量配置,配置檔案託管,伺服器狀態監控,配合強大的 grains&pillar 和自定義sls配置檔案,可以實現複雜功能,筆者會從最簡單的場景開始著手學習並且記錄配置過程, 簡單使用過後,筆者的觀點是,即使只是使用 saltstack 管理單台vps,也比ssh要好用一些,稍後會說到原因。同類產品有 puppet 和 chef,因為沒有使用過所以無法進行比較.

安裝與配置

這裡有詳細的安裝指南,因為該產品的更新迭代速度很快,所以不建議大家去看他人的中文教程,今天筆者安裝的是pypi上的最新穩定版本,和網上的大部分中文教程的安裝方法有所出入,所以筆者認為最好的方法就是直接參考官方的安裝指南。

筆者使用ubuntu桌面版系統,安裝指南建議的安裝方式是新增saltstack的軟體源,使用apt進行安裝,可以自動處理依賴,但是筆者無法鏈結到該源,所以採用了最直接的python setup.py install的安裝方法. 根據安裝指南,需要安裝 salt-master, salt-minion, salt-syndic 與zeromq.

安裝:

python setup.py install

pip install -r _requirements.txt

pip install -r pip install -r zeromq-requirements.txt

在安裝的過程中可能會遇到乙個swig的bug:

attributeerror: 'module' object has no attribute 'pkcs5_salt_len'
由於pyzmq引用了 m2crypto這個包,而這個包需要使用swig,我安裝的swig版本是3.0.5,當你的swig是3.0.5的時候便會報上面的錯誤,詳細的issue參見這裡, 不過這個帖子也是重新編譯了3.0.4版本的swig從而跳過這個錯誤的。

重新編譯swig 3.0.4版本之後,安裝完畢.

配置在安裝指南中,預設的配置檔案位置是

/etc/salt/master

/etc/salt/minion

但是在我安裝完畢 saltstack之後並沒有這2個配置檔案,但是使用如下命令

sudo salt-master -d

sudo salt-minion -l debug -d

服務也是可以成功開啟,所以我的安裝是沒有問題的,但是文件中並沒有說明在通過pip手動編譯安裝的情況下需要手動複製配置檔案,

跳過這個坑的方法就是執行如下命令:

sudo cp ./conf/* /etc/salt/ #如果沒有相關目錄就手動建立目錄
然後編輯

sudo vi /etc/salt/minion

# master: salt

把第16行 master: salt 前的注釋去掉,然後把salt換成master節點的ip位址就可以了,由於筆者使用的是單機,所以把salt換成 0.0.0.0即可.

minion授權

在我們的配置檔案修改完畢,服務也正常啟動之後, 還需要給minion伺服器做授權,關於許可權一節會在後面深入研究,只有經過授權的minion才可以接受master節點的控制,最基本的授權操作也是非常簡單的,畢竟saltstack是以簡單使用而著稱的.

sudo salt-key -l

# 列印出所有授權或未授權的minion節點

sudo salt-key -a

# 授權所有節點

sudo salt-key -a name

# 授權name節點

授權完成之後,我們就可以通過master節點進行進行對minion節點的控制了.

基本的使用方法

和最經常使用的ssh做對比,那就是執行命令的功能了,最簡單的一條命令,參見如下**

salt -e 'youngershen.com' cmd.run 'ifconfig'

# 或者

salt '*' cmd.run 'ifconfig'

# 或者

salt 'webserver*' cmd.run 'service apache restart'

salt 'webserver*' cmd.run 'sudo nginx -s reload'

# 對於這類命令,多台伺服器切換起來真的是非常方便

關於 伺服器萬用字元和sls配置檔案的編寫,這裡先不說,不過我已經覺得saltstack非常了不起了,配置檔案管理非常整潔(yaml),一條命令批量更新,對各種服務的機器篩選有強大的正則支援.即使是對單節點vps的命令管理來說,不用打密碼的salt確實比ssh方便的多,而且你可能有很多vps要管理,這樣就不需要來回切換了,而且有萬用字元支援,所以文章開頭的時候筆者就說即使是管理單節點

vps,相對於ssh來說salt還是很有優勢的,不足之處就是配置方面,如果出門在外的話,還是需要ssh密碼直接登陸的.

然後是稍微複雜一點的例子.

更改 master 配置檔案

file_roots:

base:

- /srv/salt

注意格式是yaml,小心縮排哦!

然後執行:

sudo pkill salt-master

sudo salt-master -d

增加新的sls配置檔案

# /srv/salt/ 目錄下 top.sls

base:

'*':

- testconfig

#/srv/salt/ 目錄下 testconfig.sls

myconfig:

file.managed:

- name: /etc/config.cnf

- source: salt:

xchat:

pkg.installed:

- watch:

-file :myconfig

由於配置檔案的資訊量略大,所以只按照我的理解來簡單說明,用以增強自己的理解之用, sls檔案全部採用yaml格式,語法是必須小心的,master中的 file_roots 的值,實際上就是salt檔案伺服器的路徑值,在minion像master請求檔案的時候,讀取的就是這個路徑的下的檔案,base下的 * ,是說這個testconfig的配置可以用於任何minion節點,萬用字元就是體現在這裡的,可以任意配置,而testconfig.sls檔案中,定義了兩個符號,乙個是myconfig,乙個是xchat,myconfig是乙個隨意的配置檔案,xchat是乙個聊天程式,意思是說當xchat被installed函式檢測為安裝完成狀態的時候,在每次執行命令時就watch myconfig對應的檔案,也就是可以達到配置檔案更新的效果,見如下命令

sudo salt '*' state.highstate

# 執行完畢之後會發現 /etc目錄下多了乙個檔名為 config.cnf的檔案,而且更新該檔案之後,再

# 執行命令,該檔案也會更新

結束語

而關於眾多的function和配置的編寫規則,只能在以後討論了,不過我已經大致了解了如何編寫sls,配合grains,使salt即能管理配置檔案,又可以進行伺服器監控,grains的值也可以隨意編寫函式來處理監控資訊.

(本文完)

引用資源

中文使用者組知識庫:

官方文件:

七天編寫指標 股民大學七天學會指標編寫

第八課 ok.mp4 86.84m 第二課.ok.mp4 78.32m 第九課 ok.mp4 42.21m 第六課第1部分 ok.mp4 906.23m 第六課第2部分 ok.mp4 94.52m 第七課 1 ok.mp4 73.15m 第七課 2 ok.mp4 48.15m 第七課 3 ok.mp...

資料七天自動備份指令碼

usr bin perl author laomeng date 2016 04 11 pod 功能 資料七天自動備份指令碼 注意事項 檢查伺服器時間是正確 cut use strict use warnings use posix qw strftime my now date strftime ...

十天學會ASP之第七天

學習目的 學會 資料庫的基本操作3 刪除記錄 開門見山,大家直接看程式。exec delete from guestbook where id request.form id 上面這句話完成了刪除記錄的操作,不過鎖定記錄用了記錄唯一的表示id,我們前面建立 資料庫的時候用的是系統給我們的主鍵,名字是...