Saltstack是繼 Puppet、Chef 之后新出現的配置管理及遠程執行工具, 目前,SaltStack 正得到越來越多的矚目。與 Puppet 相比,SaltStack 沒有那么笨重,較為輕量;不像 Puppet 有一套自己的 DSL用來寫配置,SaltStack 使用YAML作為配置文件格式,寫起來既簡單又容易,同時也便於動態生成;此外,SaltStack 在遠程執行命令時的速度非常快,也包含豐富的模塊。SaltStack 是開源軟件,其源代碼托管於GitHub上,安裝及使用盡可參考其官方文檔,也可以參考燦哥的blog
官方文檔:http://docs.saltstack.com/topics/installation/rhel.html
對於集群中的多個節點,當在新加入的節點上直接使用yum安裝salt-minion后,默認安裝的是最新的版本(2014.1.0);而原來安裝的salt-master的版本則是比較舊的0.17.4。安裝完成后,更改minion端的配置文件,指定master和id,然后發現minion和master可以正常的通信。使用簡單的測試命令,如test.ping,cmd.run 'ls /tmp/'等也可以正常使用。這樣以為就安裝完成了,打算收工做其他事情了。
后來,由於需要在salt-master端為minion端推送腳本,並在minion端執行,便在master端向新裝minion端的節點,推送了腳本,如下所示:
salt '*' cmd.script salt://scripts/testWriteTime.sh
觀察來自minion端的返回,發現了如下問題:有的minion可以執行成功,有的不可以。
不可以成功執行的輸出信息如下:
可以成功執行的輸入信息如下:
觀察來自minion端的日志可以看到,命令已經成功的被傳遞到minion端了,只是在解析的時候發生了問題,如下:
通過分析發現,應該是由於salt的版本更新,里面的解析函數發生了變化,導致master端和minion端不能正常解析的。所以最簡單的方法是在新裝minion端的節點卸載了salt-minion,並下載0.17.4版本的salt重新安裝。
具體操作如下:
yum remove salt-minion -y
cd ~/Downloads/
wget https://codeload.github.com/saltstack/salt/zip/0.17
unzip 0.17 && cd salt-0.17
python setup.py bulid && python setup.py intall
然后更改minion端的配置文件,指定master和id,啟動salt-minion即可。