saltstack安裝轉載一

自動化運維工具Saltstack詳細介紹
2014-09-21 17:28:10
版權聲明:原創作品,如需轉載,請與作者聯繫。否則將追究法律責任。

    Saltstack是一個新的基礎設施管理工具。目前處於快速發展階段,可以看做是pssh+弱化的Puppet的組合。間接的反映出了saltstack的兩大功能:遠程執行和配置管理。

  

   Saltstack使用Python開發,是一個非常簡單易用和輕量級的管理工具。由MasterMinion構成,通過ZeroMQ進行通信。

 

    Saltstackmaster端監聽45054506端口,4505salt的消息發佈系統4506salt客戶端與服務端通信的端口;salt客戶端程序不監聽端口,客戶端啓動後,會主動連接master端註冊,然後一直保持該TCP連接,master通過這條TCP連接對客戶端控制,如果連接斷開,master對客戶端就無能爲力了。當然,客戶端若檢查到斷開後會定期的一直連接master端的。

 

1.     saltstack安裝

centos/redhatserver端安裝

1
2
3
4
#導入EPEL YUM源 
rpm -Uvh http://mirror.pnl.gov/epel/5/i386/epel-release-5-4.noarch.rpm
#服務器master的安裝 
 yum -y install salt-master

centos/redhat客戶端minion安裝

1
2
3
#導入EPEL YUM源 
rpm -Uvh http://mirror.pnl.gov/epel/5/i386/epel-release-5-4.noarch.rpm
yum -y install salt-minion

ubuntu/debian server端和client端安裝

1
2
3
4
5
6
7
wget -q -O - "http://debian.saltstack.com/debian-salt-team-joehealy.gpg.key"| apt-key add -
echo "deb http://debian.saltstack.com/debianwheezy-saltstack main" /etc/apt/sources.list
echo "debhttp://debian.saltstack.com/debian wheezy-saltstack main" |tee/etc/apt/sources.list
apt-get update
apt-get installsalt-master      # On the salt-master
apt-get installsalt-minion      # On each salt-minion
apt-get install salt-syndic

 

2.     saltstacks配置文件修改

master端配置文件修改

1
2
3
vi /etc/salt/master
interface: 115.28.2.1  #此處是server端監聽的地址。
auto_accept: True    #此處是自動接受客戶端發送過來的key,如果服務器很多的話,需要開啓該功能。

啓動master

1
2
/etc/salt/master -d  #後臺啓動
/etc/salt/master  #前臺啓動,方便調試

minion端配置文件修改:

1
2
3
4
5
6
7
8
9
#vi /etc/salt/minion
master: 115.28.2.1  #這裏改成你的master服務器地址
id: web01   #建議這裏修改成主機名,便於master端分辨
  
#在配置文件末尾加入下面內容,每隔5分鐘自動同步master配置,效果等同於在客戶端執行salt-call state.highstate或在server端執行 salt '*'state.highstate
schedule:
  highstate:
    function: state.highstate
    minutes: 5

啓動minion

1
2
3
/etc/salt/minion -d #後臺啓動
/etc/salt/minion  #前臺啓動,方便調試
注:minion啓動後,自動會生成公鑰私鑰,並把公鑰發送到master端。minion不監聽端口,全靠和master保持長連接,可通過netstat -an|grep ES來查看是否有連接。

3.     salt-key證書管理

master端證書存放路徑:/etc/salt/pki/master/minions

1
2
3
4
5
salt-key  -L            #查詢所有接收到的證書
salt-key  -a <證書名>   #接收單個證書
salt-key  -A            #接受所有證書
salt-key  -d <證書名>   #刪除單個證書
salt-key  -D            #刪除所有證書

4.     salt實時批量操作

語法:

1
salt [選項]  '<target>'   <function>  [arguments]

常用命令舉例:

1
2
3
4
5
6
7
8
9
10
11
salt '*'  test.ping   
#*爲匹配所有主機,test.ping爲salt一個函數,注:*號是正則,若分了多個組,可以類似於web*,只匹配web服務器
salt '*'  cmd.run 'df -h'  
#查看所有主機的磁盤信息,cmd.run執行單個命令
salt '*'  cmd.script salt://hello.sh 
salt '*'  cmd.script  salt://scripts/runme.sh 'arg1 arg2 "arg 3"'
#cmd.script執行一個腳本,即把本地腳本拷貝到遠程主機上執行,hello.sh要放在指定的文件存放路徑,默認是/srv/salt/
salt '*'  state.highstate
       #向客戶端推送master端配置。
salt '*' cmd.run 'df -h '  -t 5   
    #超時控制


 

5.     salt分組管理

在配置文件/etc/salt/master中加入如下內容:

1
2
3
4
5
6
[root@yang salt]# vimaster.d/group.conf
  
nodegroups:
  group1: 'L@DG-Server-27,DG-Server-28'
  group2: 'L@qsmind'
#分組格式可在/etc/salt/master中搜索group看示例

分組執行:

1
salt -N group1 cmd.run'hostname'

 

6.     salt-ssh遠程主機批量自動登陸

salt-ssh批量密碼認證登陸,參考峯雲大神的博文

http://rfyiamcool.blog.51cto.com/1030776/1305710

 

7.     salt-run檢查客戶端up狀態

注:該處狀態檢查salt使用的是test.ping,如果服務器禁ping,則該處不準。

1
2
3
salt-run manage.status #查看所有客戶端up/down狀態
salt-run manage.up    #只顯示up狀態的客戶端
salt-run manage.down  #只顯示down狀態的客戶端

8.     salt-cp批量拷貝文件

master端執行:

1
2
3
4
5
語法:
salt-cp [options] '<target>'SOURCE DEST
    
示例:
 salt-cp '*'  /etc/hosts   /etc/hosts #把master上的hosts文件分發到所有主機。

9.     saltstack定時同步

可以把salt-call state.highstate命令放在minion端的定時任務中,來進行自動請求同步。

也可以把salt '*' state.highstate放在master端的定時任務中,來進行自動推送到所有機器。

也可以在/etc/salt/minion配置文件中加入如下內容,如下是每隔5分鐘同步,效果一樣。

1
2
3
4
          schedule:
          highstate:
                 function:state.highstate
                 seconds:300

 

10.             saltstack自動分發目錄

指定同步的目錄後,以後文件只需放到該目錄下就會自動同步到minion端。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@yang salt]# cat /srv/salt/top.sls
base:
  "DG-Server*":
    - ssh_key.key
- zabbix.zabbix
#在top.sls文件中指定哪些主機訪問哪些目錄
  
[root@yang salt]# cat /srv/salt/zabbix/zabbix.sls
/usr/local/zabbix/scripts:     #指定minion端同步後生成的目錄
  file.recurse:
source: salt://zabbix/zabbix_scripts    #指定要master端同步的原始目錄,以後只要把想要分發的文件放在這個目錄中,就會自動同步了。
- dir_mode: 755
- file_mode: 744
  
#用dir_mode和file_mode來設置文件和目錄的權限

 

11.             saltstack自動分發文件

如下配置,當文件出現變更時,匹配DG-Server開頭的主機,同步文件到這些minion上,並設置爲對應的文件權限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@yang salt]# cat /srv/salt/top.sls
base:
  "DG-Server*":
    - ssh_key.key
- zabbix.zabbix
  
[root@yang zabbix]# cat /srv/salt/zabbix/zabbix.sls
/usr/local/zabbix/etc/zabbix_agentd.conf.d/UserParameter.conf:   #指定在minion端生成的文件名
file.managed:
  source: salt://zabbix/UserParameter.conf    #指定在master同步的原始文件
  - backup: minion           #當文件發生變化時,都會把原文件備份,備份文件目錄:/var/cache/salt/minion/file_backup/
  - mode: 744
  - user: root
  - group: root

 

12.             saltstack進程狀態管理

 例:如httpd的配置文件進行更改時,自動重新加載配置文件。(該圖取於網上,說明見圖上)

 

13.             saltstack自定義模塊

當有需要使用一些statstack沒有的方法時,可以自己增加模塊。

參考峯雲大神的文章吧。

http://rfyiamcool.blog.51cto.com/1030776/1262537

 

 

saltstack常用功能也就批量執行命令或腳本,批量分發文件,自動同步目錄與文件,整體來說很簡單實用。但salt有一個缺點,zeromq雖性能很高,但穩定性略差,經常出現minionmaster連接斷開的情況,導致有些服務器會執行命令失敗,這個請大家要注意。


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