運維工具SaltStack之一安裝部署node
1、概述centos
salt是一個異構平臺基礎設置管理工具,使用輕量級的通信器ZMQ,用Python寫成的批量管理工具,徹底開源,遵照Apache2協議,與Puppet,Chef功能相似,有一個強大的遠程執行命令引擎,也有一個強大的配置管理系統,一般叫作Salt State System。緩存
2、基本原理bash
採用C/S模式,server端就是salt的master,client端就是minion,minion與master之間經過ZeroMQ消息隊列通訊。minion上線後先與master端聯繫,把本身的pub key發過去,接受該minion-key後,也就是master與minion已經互信master能夠發送任何指令讓minion執行了。同時SaltStack也支持SSH的方式無需安裝Agent,經過SSH實現管理。 運維
實現步驟:tcp
1.Salt stack的Master與Minion之間經過ZeroMq進行消息傳遞,使用了ZeroMq的發佈-訂閱模式,鏈接方式包括tcp,ipcide
2.salt命令,將cmd.run ls命令從salt.client.LocalClient.cmd_cli發佈到master,獲取一個Jodid,根據jobid獲取命令執行結果。工具
3.master接收到命令後,將要執行的命令發送給客戶端minion。測試
4.minion從消息總線上接收到要處理的命令,交給minion._handle_aes處理spa
5.minion._handle_aes發起一個本地線程調用cmdmod執行ls命令。線程執行完ls後,調用minion._return_pub方法,將執行結果經過消息總線返回給master
6.master接收到客戶端返回的結果,調用master._handle_aes方法,將結果寫的文件中
7.salt.client.LocalClient.cmd_cli經過輪詢獲取Job執行結果,將結果輸出到終端。
參考連接:
官方站點:http://www.saltstack.com/
官方文檔:http://docs.saltstack.com/
中文站點:http://www.saltstack.cn/
中文手冊:http://docs.saltstack.cn/
3、安裝部署
環境準備:
操做系統:centos 7.2
配置EPEL源:# rpm -Uvh http://mirrors.zju.edu.cn/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
Master端:192.168.2.5
Minion端:192.168.2.71
Master端安裝# yum install salt-master -y
Minion端安裝# yum install salt-minion -y
注:安裝完以後,Master配置文件在/etc/salt/master,minion配置文件在/etc/salt/minion,默認初始安裝配置文件都是被註釋,可自定義。
SaltStack經常使用的目錄結構:
/var/cache/salt/master/minions/ #存放minions的緩存數據
/srv/salt #存放salt的sls文件,默認沒有,需新建
/srv/pillar #存放pillar配置文件,默認沒有,需新建
/etc/salt #存放salt的自身配置文件
/var/log/salt #存放salt的日誌目錄
4、配置Minion端與Master通訊,並簡單測試。
1.打開Master端的自動簽發證書,默認是關閉的,若是不打開minion啓動時會報以下錯誤:
3月 08 14:47:46 node02 salt-minion[2736]: [WARNING ] ** Restarting minion ** 3月 08 14:54:56 node02 salt-minion[2736]: [ERROR ] Attempt to authenticate with the salt master failed 3月 08 14:59:07 node02 salt-minion[2736]: [ERROR ] The Salt Master has cached the public key for thi...cate
修改Master端配置文件以下:/etc/salt/master
修改:#auto_accept: False
爲:auto_accept: True
# systemctl restart salt-master.service #重啓Master端
2.修改Minion端配置文件以下:/etc/salt/minion
修改:#master: salt
master: 192.168.2.5 #指向主Master端
修改:#id: salt
id: minion01 #本端Minion id號
# systemctl restart salt-minion.service #重啓Minion端
這時Master查看salt-key,minion01客戶端自動添加到簽發列表中
[root@node03 ~]# salt-key #查看全部端key Accepted Keys: minion01
注:salt-key經常使用命令
-a #添加指定id
-A #添加所有
-R #拒絕所有
-d #刪除指定id
-D #刪除所有
測試:
[root@node03 ~]# salt 'minion01' cmd.run 'uname -r' #命令含義已經用法後續介紹 minion01: 3.10.0-327.el7.x86_64
###################Master端和Minion端經常使用配置參數說明#####################
Master端經常使用的配置參數說明:
interface:指定bind的地址,默認爲0.0.0.0
publish_port:指定發佈端口,默認爲4505
ret_port:指定結果返回端口,與minion配置文件中的master_port對應,默認爲4506
uesr:指定master進程的運行用戶,若是調整,則須要調整部分目錄的權限,默認權限爲root
timeout:指定timeout時間,若是minion規模龐大或絡情況很差,建議增該值,默認5s
keep_jobs:默認狀況下,minion會執行結果會返回master,master會緩存到本地的cachedir目錄,該參數指定緩存多長時間,以供查看以前的執行結果,會佔用磁盤空間,默認爲24h
job_cache:master是否緩存執行結構,若是規模龐大(超過5000臺),建議使用其餘方式來存儲jobs,關閉本選項,默認爲True
file_recv:是否容許minion傳送文件到master上,默認是Flase
file_roots:指定file server目錄,默認爲:
file_roots:
base:
- /srv/salt
pillar_roots:指定pillar目錄,默認爲:
pillar_roots:
base:
- /srv/pillar
log_level:執行日誌級別,支持的日誌級別由'garbage', 'trace', 'debug', info', 'warning', 'error', ‘critical ’ ,默認爲’warning’
Minion端經常使用的配置參數說明:
master:指定master主機,默認爲salt
mastar_port:指定認證和執行結果發送到master的哪一個端口,與master配置文件中的ret_port對應,默認爲4506
id:指定minion的標識,Salt內部使用id做爲標識,惟一標識符,默認爲主機名
user:指定運行minion的用戶,因爲安裝包,啓動服務等操做須要特殊用戶,推薦使用root,默認爲root
cache_jobs:minion是否緩存執行結果,默認爲False
backuo_mode:在文件操做(file.managed或file.recurse)時,若是文件發送更改,指定備份目錄,當前有效的值爲minion,備份在cachedir/file_backups目錄下,以原始文件名稱加時間戳來命名,默認爲Disabled
providers:指定模塊對應的providers,若是RHRL系列中,pkg對應的providers是yumpkg5
renderer:指定配置管理系統中的渲染器,默認值爲:yaml_jinja
file_client:指定file client默認去哪裏(remotr或local)尋找文件,默認值爲remote
loglevel:指定日誌級別,默認爲warnning
tcp_keepalive:minion是否與master保持keepalive檢查,zeromq3一下版本存在keepalive bug,會致使某些狀況下連接異常後minion沒法重連master,建議有條件的話吧zeromq3以上版本,默認爲True