saltstack自動化運維

一、Saltstack架構

Saltstack基於C/S架構,服務端master192.168.179.128和客戶端minions :192.168.179.129

二、Saltstack的安裝配置

1master的安裝

rpm -ivhhttp://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install salt-master默認配置文件位於/etc/salt/master ,默認不需要更改該配置文件。master端有兩個端口需要在iptables上放行

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

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

2minion客戶端的安裝

rpm -ivhhttp://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install salt-minion客戶端的配置文件爲/etc/salt/minion ,打開該文件,這裏有兩項是必須配置項。其一、找到如下行

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

在其下增加master主機的配置

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

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

其二、找到如下段部分
Rejected Keys:在其下增加一行內容

id: host174

[root@localhost ]# salt-key -L
Accepted Keys:
host129
Unaccepted Keys:

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

Starting salt-miniondaemon: [ERROR ] Error parsing configuration file: /etc/salt/minion - whilescanning 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 查看當前需要接受的keysmasterminions都需要把服務開啓)。

[root@localhost ]# salt-key -L
Accepted Keys:
host129
Unaccepted Keys:
Rejected Keys:這裏可以看到我已經認證過一臺idhost129的主機。我再新增一個130的主機:

[root@localhost conf]# salt-key -L
Accepted Keys:
host129
Unaccepted Keys:
host130
Rejected Keys:
[root@localhost conf]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
host1130
Proceed? [n/Y] Y
Key for minion host130 accepted.
[root@localhost conf]# salt-key -L
Accepted Keys:
host129
host130
Unaccepted Keys:
Rejected Keys:我上面用的-A參數,該參數意思是接受所有認證主機的認證,也可以使用 -a id只認證單獨的主機。默認認證完成後會在/etc/salt/pki/master/minions目錄找到以ID名命令的文件,裏面存放的是密鑰文件。

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

auto_accept: True

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

[root@localhost minions]# salt '*' test.versions_report
host130:
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.4
host129:
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、測試masterminion之間的通信是否正常

[root@localhost minions]# salt '*' test.ping
host129:
True
host130:
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.111cn.net/"
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"
host130:
Tengine version: Tengine/1.5.2 (nginx/1.2.9)
host129:
Tengine version: Tengine/1.4.6 (nginx/1.2.9)

 


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