前面學習了Saltstack安裝和基本的配置,可以通過Saltstack批量執行系統命令,包括系統重啓,查看系統負載,添加/刪除用戶等等。也可以把線上WEB,DB,BBS等安裝和配置相同或相近的服務器分爲一組,通過Saltstack的group功能批量執行管理。下面通過Saltstack來實現批量安裝,卸載RPM軟件包,批量分發文件,壓縮包和推送目錄到指定的minion,定期修改Apache/Nginx/Mysql等配置文件並實施推送到minion。
1.物理環境
2.配置Saltstack master
1)編輯/etc/salt/master, 取掉下面註釋行,目錄/srv/salt是Saltstack核心配置文件目錄。
file_roots: base: - /srv/salt/
2)查看我規劃的Saltstack的.sls,配置文件和軟件包的目錄結構。
3)在/srv/salt目錄下面新建top.sls文件,該文件是Saltstack入口配置文件。Saltstack "top.sls"文件開頭一般用base:書寫,通配符'*'表示所有的minion,-conf.pack表示conf目錄下面的pack.sls文件,在這裏我定義的是RPM軟件包管理。
base: '*': - conf.pack - conf.nginx - conf.apache - conf.mysql - conf.software
3.軟件包的管理
1)創建軟件包管理的配置文件pack.sls 文件,httpd表示要安裝軟件包,pkg:表示Saltstack安裝包管理,-name表示安裝軟件包名稱,-installed表示安裝,-removed表示卸載,service:表示Saltstack服務管理,後兩行保證apache的服務是開啓的。
httpd: pkg: - name: httpd - installed service: - running - enable: True
2)軟件包管理測試,在ID爲WEB2013-10-23的服務器上面已經安裝apache服務並啓動。
4.Nginx/apache配置文件的分發
1)創建Nginx sls配置文件nginx.sls ,第一行表示分發到minion文件路徑,-managed表示Saltstack文件管理,-source:表示master端配置文件地址,是從master配置文件定義的路徑/srv/salt開始查找的,下面三行表示文件的屬性。
/usr/local/nginx/conf/nginx.conf: file: - managed - source: salt://nginx/nginx.conf - user: www - group: www - mode: 644 - backup: minion
2)Nginx/apache配置文件的分發測試,在ID爲WEB2013-10-23的服務器查看Nginx配置文件及其屬性都是OK的。
5.Saltstack常用命令總結
通過salt '*' sys.doc | grep "salt '*'"可以查看所有salt幫助文檔的說明。
1)Saltstack通過cp.get_file可以將master文件分發到minion,/software/Install_Centos_LAMP_v.0.1.sh表示把文件分發到minion上的文件路徑,makedirs=True表示如果目錄不存在自動創建,在傳輸大文件的時候還支持壓縮傳輸,在傳輸大文件的時候還支持壓縮傳輸gzip。
2)cp.get_dir和cp.get_file一樣,不過get_dir是用來下載整個目錄的,也支持壓縮傳輸。
3)Saltstack cmd.run 命令可以執行系統命令並把結果返回。
3)Saltstack state.highstate命令表示主動推送master和minion同步,也可以通過schedule方式讓客戶端minion定期同步master。
salt '*' state.highstate
4)2013.12.27補充,上次網友和博友提問說如何只同步top.sls下面的nginx或者mysql的配置文件,而不是全部同步。當然應該也支持N(分組)和E(正則)參數。
salt '*' state.sls conf.nginx