Saltstack 安裝部署

學習Saltstack已經有一段時間了,不過現在我還是不知道如何對Saltstack做一個全面的定義。按照大家公認的說法,我們可以這樣來定義Saltstack,一個整合了Puppet和 Chef的功能,更加強大,更適合大規模批量管理服務器的自動化工具,基於ZeroMQ通信,使用Python開發的簡單高可用工具。還是按照之前的老套路,先從安裝和入門說起。


一、Saltstack架構概述


Saltstack基於C/S架構,服務端master和客戶端minions ,其主要由以下部分組成:


spacer.gif


二、Saltstack的安裝配置


1、master的安裝


rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpmyum install salt-master


默認配置文件位於/etc/salt/master ,默認不需要更改該配置文件。master端有兩個端口需要在iptables上放行


4505(publish_port):salt 的消息發佈系統4506(ret_port):salt 客戶端與服務端通信的端口


啓動方法:/etc/init.d/salt-master start


2、minion客戶端的安裝


rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpmyum install salt-minion


客戶端的配置文件爲/etc/salt/minion ,打開該文件,這裏有兩項是必須配置項。其一、找到如下行


# resolved, then the minion will fail to start.#master: salt

在其下增加master主機的配置

# resolved, then the minion will fail to start.#master: saltmaster: 192.168.10.16

我這裏直接配置的是IP地址,也可以配置成主機名,如果配置成主機名的話,需要在/etc/hosts文件中master主機對應的IP ,如果使用內部DNS的例外,可以在內部DNS上的統一配置。



其二、找到如下段部分


# Since salt uses detached ids it is possible to run multiple minions on the# same machine but with different ids, this can be useful for salt compute# clusters.#id:

在其下增加一行內容爲:

id: host174

這裏是指定當前主機的id號,這在後面master認證和master調用命令執行時顯示的名稱,可以根據實際識別需要填寫。另外需要注意的是,以上兩處配置冒號後面都需要有一個空格,不然會報如下錯誤:

Starting salt-minion daemon: [ERROR   ] Error parsing configuration file: /etc/salt/minion - while scanning a simple key  in "<string>", line 44, column 1:    id:host172    ^could not found expected ':'  in "<string>", line 46, column 1:    # Append a domain to a hostname  ...    ^


除以上兩個必須配置項外,客戶端還有其他很多可配置項,如user(默認是root)、root_dir(默認是根目錄)等選項,這些配置後可以控制master端的權限。

配置文件配置完成後,可以通過/etc/init.d/salt-minion start命令啓動minion 。


三、C/S認證

和puppet一樣, salt 的 master 和 minions 是通過證書通信的,故存在證書的信任頒發問題。
在master端:salt-key -L 查看當前需要接受的keys(master和minions都需要把服務開啓)。


[root@localhost ]# salt-key -LAccepted Keys:host174Unaccepted Keys:Rejected Keys:

這裏可以看到我已經認證過一臺id爲host174的主機 。我再新增一個172的主機:

[root@localhost conf]# salt-key -LAccepted Keys:host174Unaccepted Keys:host172Rejected Keys:[root@localhost conf]# salt-key -AThe following keys are going to be accepted:Unaccepted Keys:host172Proceed? [n/Y] YKey for minion host172 accepted.[root@localhost conf]# salt-key -LAccepted Keys:host172host174Unaccepted Keys:Rejected Keys:


我上面用的-A參數,該參數意思是接受所有認證主機的認證,也可以使用 -a id名 只認證單獨的主機。默認認證完成後會在/etc/salt/pki/master/minions目錄找到以ID名命令的文件,裏面存放的是密鑰文件。

如果對客戶端信任,可以讓master自動接受請求,在master端/etc/salt/master配置


auto_accept: True


注:認證這裏zeromq2版本下有一個bug --minion與master的連接斷開後,不會自動重連的問題,zeromq3正常,這個主要在centos5下經常遇到。具體可以通過以下方法確認具體的版本:

[root@localhost minions]# salt '*' test.versions_reporthost172:               Salt: 2014.1.0             Python: 2.6.6 (r266:84292, Jun 18 2012, 14:18:47)             Jinja2: 2.2.1           M2Crypto: 0.20.2     msgpack-python: 0.1.13       msgpack-pure: Not Installed           pycrypto: 2.0.1             PyYAML: 3.10              PyZMQ: 2.2.0.1                ZMQ: 3.2.4host174:               Salt: 2014.1.0             Python: 2.6.6 (r266:84292, Feb 22 2013, 00:00:18)             Jinja2: unknown           M2Crypto: 0.20.2     msgpack-python: 0.1.13       msgpack-pure: Not Installed           pycrypto: 2.0.1             PyYAML: 3.10              PyZMQ: 2.2.0.1                ZMQ: 3.2.4


如果更換版本,可以到這裏下載http://download.opensuse.org/repositories/home:/fengshuo:/zeromq/CentOS_CentOS-5/x86_64/  ,centos6版本的epel源裏有,也可以在這裏找到,只需把centos-5改成centos-6就行了。


四、命令執行

1、測試master和minion之間的通信是否正常



[root@localhost minions]# salt '*' test.pinghost172:    Truehost174:    True

True代表正常,*代表所有主機,也可以選擇單臺或者按組及正則進行匹配等,這個可以參看下官方相關文檔 。其默認執行的正則是shell正則,也可以使用其他正則或組等,如下:

salt 'shell正則' 命令salt -E 'prel 正則'salt -N $group 命令salt -L 'server_id1,server_id2,server_id3'  命令



2、執行命令操作

常用的操作類似如下


salt '*' cmd.run "ab -n 10 -c 2 http://www.google.com/"salt '*' grains.ls  查看grains分類salt '*' grains.items 查看grains所有信息salt '*' grains.item osrelease 查看grains某個信息salt '*' cmd.run "/App/nginx/sbin/nginx -v"

命令執行使用cmd.run參數,由於輸出內容較多,不再一一列出,這裏只列出一臺查看nginx版本的:

[root@localhost minions]# salt '*' cmd.run "/App/nginx/sbin/nginx -v"host174:    Tengine version: Tengine/1.5.2 (nginx/1.2.9)host172:    Tengine version: Tengine/1.4.6 (nginx/1.2.9)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章