前面學習了Saltstack安裝和基本的配置,可以通過Saltstack批量執行系統指令,包括系統重新開機,檢視系統負載,添加/删除使用者等等。也可以把線上WEB,DB,BBS等安裝和配置相同或相近的伺服器分為一組,通過Saltstack的group功能批量執行管理。下面通過Saltstack來實作批量安裝,解除安裝RPM軟體包,批量分發檔案,壓縮包和推送目錄到指定的minion,定期修改Apache/Nginx/Mysql等配置檔案并實施推送到minion。
1.實體環境
<a href="http://blog.51cto.com/attachment/201310/154621933.jpg" target="_blank"></a>
2.配置Saltstack master
1)編輯/etc/salt/master, 取掉下面注釋行,目錄/srv/salt是Saltstack核心配置檔案目錄。
1
2
3
<code>file_roots:</code>
<code> </code><code>base:</code>
<code> </code><code>- </code><code>/srv/salt/</code>
2)檢視我規劃的Saltstack的.sls,配置檔案和軟體包的目錄結構。
<a href="http://blog.51cto.com/attachment/201310/170953759.jpg" target="_blank"></a>
3)在/srv/salt目錄下面建立top.sls檔案,該檔案是Saltstack入口配置檔案。Saltstack "top.sls"檔案開頭一般用base:書寫,通配符'*'表示所有的minion,-conf.pack表示conf目錄下面的pack.sls檔案,在這裡我定義的是RPM軟體包管理。
4
5
6
7
<code>base:</code>
<code> </code><code>'*'</code><code>:</code>
<code> </code><code>- conf.pack</code>
<code> </code><code>- conf.nginx</code>
<code> </code><code>- conf.apache</code>
<code> </code><code>- conf.mysql</code>
<code> </code><code>- conf.software</code>
3.軟體包的管理
1)建立軟體包管理的配置檔案pack.sls 檔案,httpd表示要安裝軟體包,pkg:表示Saltstack安裝包管理,-name表示安裝軟體包名稱,-installed表示安裝,-removed表示解除安裝,service:表示Saltstack服務管理,後兩行保證apache的服務是開啟的。
<code>httpd:</code>
<code> </code><code>pkg:</code>
<code> </code><code>- name: httpd</code>
<code> </code><code>- installed</code>
<code> </code><code>service:</code>
<code> </code><code>- running</code>
<code> </code><code>- </code><code>enable</code><code>: True</code>
2)軟體包管理測試,在ID為WEB2013-10-23的伺服器上面已經安裝apache服務并啟動。
<a href="http://blog.51cto.com/attachment/201310/162528587.jpg" target="_blank"></a>
4.Nginx/apache配置檔案的分發
1)建立Nginx sls配置檔案nginx.sls ,第一行表示分發到minion檔案路徑,-managed表示Saltstack檔案管理,-source:表示master端配置檔案位址,是從master配置檔案定義的路徑/srv/salt開始查找的,下面三行表示檔案的屬性。
8
<code>/usr/local/nginx/conf/nginx</code><code>.conf:</code>
<code> </code><code>file</code><code>:</code>
<code> </code><code>- managed</code>
<code> </code><code>- </code><code>source</code><code>: salt:</code><code>//nginx/nginx</code><code>.conf</code>
<code> </code><code>- user: www</code>
<code> </code><code>- group: www</code>
<code> </code><code>- mode: 644</code>
<code> </code><code>- backup: minion</code>
2)Nginx/apache配置檔案的分發測試,在ID為WEB2013-10-23的伺服器檢視Nginx配置檔案及其屬性都是OK的。
<a href="http://blog.51cto.com/attachment/201310/164149904.jpg" target="_blank"></a>
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。
<a href="http://blog.51cto.com/attachment/201310/165519954.jpg" target="_blank"></a>
2)cp.get_dir和cp.get_file一樣,不過get_dir是用來下載下傳整個目錄的,也支援壓縮傳輸。
<a href="http://blog.51cto.com/attachment/201310/170043966.jpg" target="_blank"></a>
3)Saltstack cmd.run 指令可以執行系統指令并把結果傳回。
<a href="http://blog.51cto.com/attachment/201310/171756726.jpg" target="_blank"></a>
3)Saltstack state.highstate指令表示主動推送master和minion同步,也可以通過schedule方式讓用戶端minion定期同步master。
<code>salt </code><code>'*'</code> <code>state.highstate</code>
4)2013.12.27補充,上次網友和博友提問說如何隻同步top.sls下面的nginx或者mysql的配置檔案,而不是全部同步。當然應該也支援N(分組)和E(正則)參數。
<code>salt </code><code>'*'</code> <code>state.sls conf.nginx</code>
<code></code>
本文轉自 sfzhang 51CTO部落格,原文連結:http://blog.51cto.com/sfzhang88/1317802,如需轉載請自行聯系原作者