目錄node
早期運維人員會根據本身的生產環境來寫特定腳本完成大量重複性工做,這些腳本複雜且難以維護。系統管理員面臨的問題主要是一、系統配置管理,二、遠程執行命令,所以誕生了不少開源軟件,系統維護方面有fabric、puppet、chef、ansible、saltstack等,這些軟件擅長維護系統狀態或方便的對大量主機進行批量的命令執行。python
salt靈活性強大,能夠進行大規模部署,也能進行小規模的系統部署。salt的設計架構適用於任意數量的服務器,從少許本地網絡系統到跨越數個數據中心,拓撲架構都是c/s模型,配置簡單。linux
無論是幾臺、幾百臺、幾千臺服務器,均可以使用salt在一箇中心節點上進行管控,靈活定位任意服務器子集來運行命令。 nginx
Salt是python編寫的,支持用戶經過python自定義功能模塊,也提供了大量的python API接口,用戶能夠根據須要進行簡單快速的擴展json
salt安裝服務器環境vim
準備兩臺機器 192.168.11.250 master端(主人,主機名) 192.168.11.167 minion端 (奴隸,主機名 )
兩臺機器配置hosts文件,用於加速域名解析,以及分別安裝 salt-master 和salt-minion軟件服務器
服務端:vim /etc/hosts 192.168.11.167 s17slave 192.168.11.250 s17master 客戶端:一樣 vim /etc/hosts 192.168.11.167 s17slave 192.168.11.250 s17master
分別安裝軟件網絡
安裝master服務端 yum install salt-master -y 安裝salve客戶端 yum install salt-minion -y
主master的配置文件架構
以下 /etc/salt/master interface: 0.0.0.0 publish_port: 4505 user: root worker_threads: 5ret_port: 4506 pidfile: /var/run/salt-master.pid log_file: /var/log/salt/master
5.從 minion的配置文件運維
master: s17master master_port: 4506 user: root id: s17slave acceptance_wait_time: 10 log_file: /var/log/salt/minion
6.分別開啓 salt-master salt-minion,查看祕鑰接收狀況
systemctl start salt-master systemctl start salt-minion salt-key * #查看全部祕鑰狀況 salt-key -a 祕鑰名 #單獨的接收一個祕鑰信息 #祕鑰接收後,就被管控了 #讓s17master這臺機器,執行一條命令 salt "s17slave" cmd.run "touch /tmp/大燒餅.txt "
在主執行 salt-key -f s17slave 在從執行 salt-call --local key.finger salt-key 只有Master接受了Minion Key後,才能進行管理。具體的認證命令爲salt-key經常使用的有以下命令。 [root@linux-node1 ~]# salt-key -L Accepted Keys: #已經接受的key Denied Keys: #拒絕的key Unaccepted Keys:#未加入的key Rejected Keys:#吊銷的key
經常使用參數
-L #查看KEY狀態 -A #容許全部 -D #刪除全部 -a #認證指定的key -d #刪除指定的key -r #註銷掉指定key(該狀態爲未被認證)
在master端/etc/salt/master配置
auto_accept: True #若是對Minion信任,能夠配置master自動接受請求
檢測從機器是否存活
salt "*" test.ping
salt的命令參數格式
salt命令 參數 目標 salt模塊的函數 遠程執行的參數
返回值的格式替換
salt --out=json "*" cmd.run "hostname"
返回yaml的語法格式
salt --out=yaml "*" cmd.run "hostname"
遠程安裝nginx
salt "*" pkg.install "nginx" salt "*" pkg.remove "nginx"
yaml語法學習
{ "s17":{ "男同窗":["帶勁","虎牙","股價爲"], "女同窗":["卜老師","於建才","溼老師"] } } yaml語法轉換以下 "s17": "男同窗": - "帶勁" - "虎牙" - "股價爲" "女同窗": - "嫖老師" - "於建才" - "股價爲"
salt數據管理之grains
salt 's17slave' grains.items salt 's17slave' grains.item ipv4 #單獨找出ipv4的信息
遠程關機
local.cmd('*','cmd.run',['poweroff'])