saltstack 安裝
阿新 • • 發佈:2017-05-10
zip yum安裝 覆蓋 需要 messages 基本配置 tar 開機 locale
centos 6.5
saltstack 2015.5.10 (Lithium)
tips:上個版本2015.5.3或者5.5有個bug,Python調用salt的unzip模塊報錯;
安裝
在配置了163和epel的源後使用yum安裝即可;
# yum update python*
# yum -y install salt-master #主控端 # yum -y install salt-minion #被控端
配置主控端
主控端的基本配置
# vi /etc/salt/master interface [local ip] #綁定本機IP
auto_accept: False#自動接受連接,默認就是False
file_roots:
base:
- /srv/salt #salt的文件根目錄,默認就是這個
配置開機自動啟動,並啟動:
# chkconfig salt-master on
# service salt-master start
日誌文件:/var/log/salt/master
默認使用端口4505和4506,註意防火墻的情況;
配置被控端
被控端的基本配置
# vi /etc/salt/minion
master: [主控端IP]
id: [被控端名稱] #考慮用主機名或根據業務起名,不可重復
配置開機自動啟動,並啟動:
# chkconfig salt-minion on
# service salt-minion start
日誌文件:/var/log/salt/minion
主控端接受連接
# salt-key -A #接受所有連接 # salt-key -L #查看接受或拒絕的情況
測試連接情況(這裏假設有兩臺被控端:DEV-APP-001,DEV-APP-002)
# salt ‘*‘ test.ping DEV-APP-001: True DEV-APP-002: True
使用salt批量遠程執行命令
這是salt的基本功能之一,可以很大程度減少批量機器的運維工作量;
查看下有沒有安裝telnet,或者直接yum安裝:
# salt ‘*‘ cmd.run ‘which telnet‘ # salt ‘*‘ cmd.run ‘yum -y install telnet‘
可以傳輸文件或文件夾到被控端,目標文件必須放到salt的文件根目錄,默認為/srv/salt;
假設在主控端有這個文件:/srv/salt/myfile/test.log
# salt ‘*‘ cp.get_file salt://myfile/test.log /root/test.log #傳輸文件
# salt ‘*‘ cp.get_dir salt://myfile /root #傳輸文件夾
環境變量的問題
註意環境變量的問題,很多時候一些奇怪的問題都是這個引起的;
比如用環境變量配置的Java,需要首先加載profile:
# salt ‘*‘ cmd.run ‘source /etc/profile; java -version‘
tips:遇到過一個特別的坑,使用salt遠程啟動的Java程序日誌都為亂碼,後來執行locale發現了問題:
# salt ‘*‘ cmd.run ‘locale‘ DEV-APP-001: LANG=zh_CN.UTF-8 LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_PAPER="C" LC_NAME="C" LC_ADDRESS="C" LC_TELEPHONE="C" LC_MEASUREMENT="C" LC_IDENTIFICATION="C" LC_ALL=C
LC_ALL被置為了C,覆蓋了LANG的配置,所以可以這樣解決:
# salt ‘*‘ cmd.run ‘export LC_ALL=""; locale‘ DEV-APP-001: LANG=zh_CN.UTF-8 LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_MONETARY="zh_CN.UTF-8" LC_MESSAGES="zh_CN.UTF-8" LC_PAPER="zh_CN.UTF-8" LC_NAME="zh_CN.UTF-8" LC_ADDRESS="zh_CN.UTF-8" LC_TELEPHONE="zh_CN.UTF-8" LC_MEASUREMENT="zh_CN.UTF-8" LC_IDENTIFICATION="zh_CN.UTF-8" LC_ALL=
啟動Java程序時就是這樣了:
# salt ‘*‘ cmd.run ‘source /etc/profile; export LC_ALL=""; java -version‘
over
saltstack 安裝