自動化運維工具Saltstack學習筆記

xz43發表於2016-02-24

1.Saltstack簡介
Saltstack是一個具備puppet與func功能為一身的集中化,輕量級的自動化運維管理工具,使用python編寫,功能非常強大,可以使用EPEL快速安裝。相比較puppet,安裝和配置更加容易和簡單。下面是Saltstack安裝和基礎配置文件。(官方文件:)

2.物理環境

3.安裝前準備

修改伺服器的主機名和hosts,使其能相互解析和ping通,下面以saltmaster為例。


01.#修改主機名vim /etc/sysconfig/network
02.HOSTNAME=SaltMaster
03.#檢視主機名
04.[root@saltmaster ~]# hostname
05.saltmaster
06.#修改/etc/hosts檔案,新增如下內容
07.192.168.1.235 SaltMaster
08.192.168.1.248 WEB248
09.192.168.1.244 DB244

4.安裝Saltstack

利用EPEL源安裝saltstack。


1.#匯入EPEL YUM源
2.rpm -Uvh 
3.#伺服器master的安裝
4.yum -y install salt-master
5.#客戶端minon安裝
6.yum -y install salt-minion

5.Saltstack配置
 

1.#伺服器master的配置,vim /etc/salt/master新增master偵聽的IP地址。
2.# The address of the interface to bind to
3.interface: 192.168.1.235
4.#客戶端minion的配置,vim /etc/salt/minion,新增master IP地址和minion ID號。
5.# Set the location of the salt master server
6.master: 192.168.1.235
7.# clusters.
8.id: WEB2013-10-023

6.啟動Saltstack服務
 

1.#saltstack master啟動和設定開機自動啟動
2./etc/init.d/salt-master start
3.chkconfig salt-master on
4.#Saltstck minion啟動和設定開機自動啟動
5./etc/init.d/salt-minion start
6.chkconfig salt-minion on

7.Saltstack master認證Minion KEY

Saltstack使用公共金鑰加密來保證master和minions的安全通訊。安裝的時候Salt自動生成這些證照,但需要在master端驗證minion的證照來確認master和minion之間是授信的。


01.#salt-key -L檢視所有沒有認證,透過認證,拒絕認證的證照。
02.[root@SaltMast ~]# salt-key list
03.Accepted Keys:
04.Unaccepted Keys:
05.DB2012-08-001
06.WEB2013-10-023
07.Rejected Keys:
08.#證照認證用命令salt-key -a id
09.[root@SaltMast ~]# salt-key -a DB2012-08-001
10.The following keys are going to be accepted:
11.Unaccepted Keys:
12.DB2012-08-001
13.Proceed? [n/Y] y
14.Key for minion DB2012-08-001 accepted.
15.[root@SaltMast ~]# salt-key -a WEB2013-10-023
16.The following keys are going to be accepted:
17.Unaccepted Keys:
18.WEB2013-10-023
19.Proceed? [n/Y] y
20.Key for minion WEB2013-10-023 accepted.
21.#檢視認證透過的證照
22.[root@SaltMast ~]# salt-key list
23.Accepted Keys:
24.DB2012-08-001
25.WEB2013-10-023
26.Unaccepted Keys:
27.Rejected Keys:

8.Saltstack測試

1)通訊測試:Saltstack證照認證透過以後,就可以進行通訊,在master透過test.ping命令來測試它們之間的連線。萬用字元"*"代表了所有minion。

2)執行命令:在Saltstack master端透過執行"salt id 系統命令"來返回minion執行結果。

9.Saltstack分組及其測試

1)為什麼要分組?線上WEB,DB,IMG等安裝配置相同或者相近的伺服器可分為一組,方便批次安裝和管理,編輯 /etc/salt/master 新增如下內容,每個組可以有N多服務,每個伺服器用逗號分隔。


1.# nodegroups:
2.#   group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
3.#   group2: 'G@os:Debian and foo.domain.com'
4.nodegroups:
5.wwwgroup:  'L@WEB2013-10-023,DB2012-08-001'
6.dbgroup:  'DB2012-08-001'

2)分組測試


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核心配置檔案目錄。


1.file_roots:
2.base:
3.- /srv/salt/

2)檢視我規劃的Saltstack .sls和配置檔案,軟體包的目錄結構。

3)在/srv/salt目錄下面新建top.sls檔案,該檔案是Saltstack入口配置檔案。Saltstack "top.sls"檔案開頭一般用base:書寫,萬用字元'*'表示所有的minion,-conf.pack表示conf目錄下面的pack.sls檔案,在這裡我定義的是RPM軟體包管理。


1.base:
2.'*':
3.- conf.pack
4.- conf.nginx
5.- conf.apache
6.- conf.mysql
7.- conf.software

3.軟體包的管理

1)建立軟體包管理的配置檔案pack.sls 檔案,httpd表示要安裝軟體包,pkg:表示Saltstack安裝包管理,-name表示安裝軟體包名稱,-installed表示安裝,-removed表示解除安裝,service:表示Saltstack服務管理,後兩行保證apache的服務是開啟的。


1.httpd:
2.pkg:
3.- name: httpd
4.- installed
5.service:
6.- running
7.- enable: True

2)軟體包管理測試,在ID為WEB2013-10-23的伺服器上面檢視,已經安裝apache服務並啟動。

4.Nginx/apache配置檔案的分發

1)建立Nginx sls配置檔案nginx.sls ,第一表示分發到minion檔案路徑,-managed表示Saltstack檔案管理,-source:表示master端配置檔案地址,下面三行表示檔案的屬性。


1./usr/local/nginx/conf/nginx.conf:
2.file:
3.- managed
4.- source: 
5.- user: www
6.- group: www
7.- mode: 644
8.- 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。


1.salt '*' state.highstate

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-1993517/,如需轉載,請註明出處,否則將追究法律責任。

相關文章