一個配置管理系統,可以維護預約義狀態的遠程節點(好比,確保指定的報被安裝,指定的服務在運行)。html
一個分佈式遠程執行系統,用來在遠程節點(能夠是單個節點,也能夠是任意規則挑選出來的節點)上執行命令和查詢數據。linux
既要考慮大規模部署,又要考慮小規模系統,提供適應多種場合的應用讓人沮喪,但Salt很是容易設置和維護,而不用考慮項目的大小。從數量可觀的本地網絡系統,到跨數據中心的互聯網部署,Salt設計爲在任意數量的server下均可工做。salt的拓撲使用簡單的server/client模式,需求的功能內建在一組daemon中。salt在幾乎不改動配置的狀況下就能夠工做,也能夠調整從而知足特定的需求。apache
Salt的核心功能編程
使命令發送到遠程系統是並行的而不是串行的vim
使用安全加密的協議安全
使用最小最快的網絡載荷服務器
提供簡單的編程接口網絡
Salt一樣引入了更加細緻化的領域控制系統來遠程執行,使得系統成爲目標不止能夠經過主機名,還能夠經過系統屬性。架構
Salt運用大量的技術和技巧。網絡層使用卓越的`ZeroMQ`_ 網絡類庫構建,因此Salt的守護端包含了可行的和透明的AMQ代理。Salt使用公鑰和master守護端認證,而後使用更快的AES`_ 負載通訊加密; 身份認證和加密對salt是不可或缺的。Salt經過`msgpack`_創建通訊,使得速度更快而且網絡流量少。分佈式
爲了容許簡單的擴展,Salt執行程序能夠寫爲純Python模塊。數據從Salt執行過程當中收集到能夠發送回master服務端,或者發送到任何任意程序。Salt能夠從一個簡單的Python API調用,或者從命令行被調用,因此Salt能夠用來執行一次性命令,也能夠做爲一個更大的應用程序的一個組成部分。
結果是可以在1臺或多臺目標機器上快速執行命令的系統。Salt運行快速,安裝簡單,高度可定製;Salt用相同的遠程執行架構知足管理不一樣數量服務器的需求。Salt基礎設施能夠集成最好的遠程執行工具,加強了Salt的能力及用途,獲得功能豐富實用能夠適用於任何網絡的系統。
7.1)關閉iptables,selinux等
7.2)安裝教程參考:https://docs.saltstack.cn/topics/installation/index.html#installation
7.3)安裝yum源:https://docs.saltstack.cn/topics/installation/rhel.html
7.3)安裝軟件,這裏是爲了效果,因此在master上也安裝了minion
master yum install -y salt-master salt-minion slave yum install -y salt-minion
7.4)加入開機自動啓動
chkconfig salt-master on chkconfig salt-minion on
7.5)啓動服務
/etc/init.d/salt-master start minion先不要着急啓動,配置文件須要修改,以下操做 /etc/init.d/salt-minion start
7.6)配置minion
vim /etc/salt/minion master: 192.168.222.145 (16行) #id: (默認是空,能夠不配主機名,也能夠配主機名,也能夠配ip,可是必定要注意格式,後面要有個空格,配置的主機名必需要能Ping的通)
7.7)若是上述配置了主機名,那麼就要改主機名
7.8)此時能夠開啓minion了,而後配置認證,master與minion相互識別是須要認證的,在沒有認證以前,關係都是放在minions_pre下面的,認證以後放到minions下面
[root@master master]# salt-key -a 192.168* 也能夠用-A,贊成全部
在全部的minion端也存放着master的公鑰
7.9)到此,saltstack已經裝完了,測試
正常。
8.1)[root@master ~]# vim /etc/salt/master
[root@master ~]# mkdir /srv/salt/
重啓一下master
8.2)建立要執行的操做,相似於yaml
[root@master salt]# pwd /srv/salt [root@master salt]# ls apache.sls apache-install: pkg.installed: - names: - httpd - httpd-devel apache-service: service.running: - name: httpd - enable: True - reload: True
選定機器,選定操做,相似於ansible的inventer和playbook [root@master salt]# salt '*' state.sls apache
8.3)高級狀態,,上述只是一個狀態,那麼若是一個機器對應着好多個狀態,那麼就須要個相似於map的入口文件,定義一個機器所綁定的狀態,通常文件名爲top.sls,能夠修更名,但不建議,這個文件必須即只能放在basic的環境下。
[root@master salt]# vim top.sls base: '*': //全部主機 - apache //都要執行apache這個狀態
從入口文件去讀取 [root@master salt]# salt '*' state.highstate