自动化运维工具Saltstack详细介绍
? ? Saltstack是一個新的基礎設施管理工具。目前處于快速發展階段,可以看做是pssh+弱化的Puppet的組合。間接的反映出了saltstack的兩大功能:遠程執行和配置管理。
??
? ?Saltstack使用Python開發,是一個非常簡單易用和輕量級的管理工具。由Master和Minion構成,通過ZeroMQ進行通信。
?
? ? Saltstack的master端監聽4505與4506端口,4505為salt的消息發布系統,4506為salt客戶端與服務端通信的端口;salt客戶端程序不監聽端口,客戶端啟動后,會主動連接master端注冊,然后一直保持該TCP連接,master通過這條TCP連接對客戶端控制,如果連接斷開,master對客戶端就無能為力了。當然,客戶端若檢查到斷開后會定期的一直連接master端的。
?
1.saltstack安裝
centos/redhatserver端安裝
#導入EPEL YUM源?
rpm?-Uvh?http://mirror.pnl.gov/epel/5/i386/epel-release-5-4.noarch.rpm#服務器master的安裝?
?yum?-y?install?salt-mastercentos/redhat客戶端minion安裝
#導入EPEL YUM源?
rpm?-Uvh?http://mirror.pnl.gov/epel/5/i386/epel-release-5-4.noarch.rpm yum?-y?install?salt-minionubuntu/debian server端和client端安裝
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-syndic2.saltstacks配置文件修改
master端配置文件修改
vi?/etc/salt/master interface:?115.28.2.1??#此處是server端監聽的地址。 auto_accept:?True????#此處是自動接受客戶端發送過來的key,如果服務器很多的話,需要開啟該功能。啟動master
/etc/salt/master?-d??#后臺啟動 /etc/salt/master??#前臺啟動,方便調試minion端配置文件修改:
#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.highstateminutes:?5啟動minion:
/etc/salt/minion?-d?#后臺啟動 /etc/salt/minion??#前臺啟動,方便調試注:minion啟動后,自動會生成公鑰私鑰,并把公鑰發送到master端。minion不監聽端口,全靠和master保持長連接,可通過netstat -an|grep ES來查看是否有連接。
3.salt-key證書管理
master端證書存放路徑:/etc/salt/pki/master/minions
salt-key??-L????????????#查詢所有接收到的證書 salt-key??-a?<證書名>???#接收單個證書 salt-key??-A????????????#接受所有證書 salt-key??-d?<證書名>???#刪除單個證書 salt-key??-D????????????#刪除所有證書4.salt實時批量操作
語法:
1
salt [選項] ?'<target>' ? <function> ?[arguments]
常用命令舉例:
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中加入如下內容:
[root@yang?salt]#?vimaster.d/group.conf nodegroups:group1:?'L@DG-Server-27,DG-Server-28'group2:?'L@qsmind'#分組格式可在/etc/salt/master中搜索group看示例
分組執行:
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,則該處不準。
salt-run?manage.status?#查看所有客戶端up/down狀態 salt-run?manage.up????#只顯示up狀態的客戶端 salt-run?manage.down??#只顯示down狀態的客戶端8. ? ? salt-cp批量拷貝文件
在master端執行:
語法:
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分鐘同步,效果一樣。
? ? ? ? ? schedule:
? ? ? ? ? highstate:
? ? ? ? ? ? ? ? ?function:state.highstate
? ? ? ? ? ? ? ? ?seconds:300
?
10.saltstack自動分發目錄
指定同步的目錄后,以后文件只需放到該目錄下就會自動同步到minion端。
[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上,并設置為對應的文件權限。
[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:?root12.saltstack進程狀態管理
?例:如httpd的配置文件進行更改時,自動重新加載配置文件。(該圖取于網上,說明見圖上)
?
13.saltstack自定義模塊
當有需要使用一些statstack沒有的方法時,可以自己增加模塊。
參考峰云大神的文章吧。
http://rfyiamcool.blog.51cto.com/1030776/1262537
saltstack常用功能也就批量執行命令或腳本,批量分發文件,自動同步目錄與文件,整體來說很簡單實用。但salt有一個缺點,zeromq雖性能很高,但穩定性略差,經常出現minion與master連接斷開的情況,導致有些服務器會執行命令失敗,這個請大家要注意。
轉載于:https://blog.51cto.com/bobbie/1674070
總結
以上是生活随笔為你收集整理的自动化运维工具Saltstack详细介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac下制作Ubuntu的启动U盘
- 下一篇: Entity Framework Ext