1. 程式人生 > >saltstack 安裝

saltstack 安裝

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 安裝