對於大規模的集群,相信都有一整套比較完好的自己主動化部署方案。自己主動化部署有非常多問題值得思考。比方怎樣均衡的利用每乙個節點的資源,保證整個集群的負載打散;假設方便的增加新機器。怎樣在機器物理故障時下線它,然後將部署的任務遷移到其它的備機。有點資源管理的意味了。
本文不會討論這些問題。僅僅涉及乙個非常easy的場景:怎樣將應用部署到一定數量的機器。然後啟動它。比方你在上線前。須要壓力測試,須要評測效能,都可能須要人工的部署幾十台機器。
我們知道。ssh能夠遠端執行一些命令
ssh hostname "command lines"
可能唯一的障礙就是須要輸入密碼。當然了你可能說能夠設定ssh免密碼登陸,那麼你至少要每台機器操作一下吧,還是沒有繞過輸入密碼。
使用sshpass 能夠解決輸入密碼的問題。
$ sshpass
usage: sshpass [-f|-d|-p|-e] [-hv] command parameters
-f filename take password to use from file
-d number use number as file descriptor for getting password
-p password provide password as argument (security unwise)
-e password is passed as env-var "sshpass"
with no parameters - password will be taken from stdin
-h show help (this screen)
-v print version information
sshpass不是預設安裝的。
接下來的工作就非常easy了,
sshpass -p your_password ssh "command1; command2;..."
那設定ssh 密碼登陸來說,實際上就是先wget 中控機的id_rsa.pub, 然後加到目標機的authorized_keys就可以。幾條命令的羅列。
假設你能夠通過上述命令解決你的問題,那麼恭喜你,否則,接著向下看吧。
有時候邏輯的確是複雜,有的應用還是須要人工互動才幹搞定。
。。我們須要全然人工化,那麼使用expect能夠滿足你的要求。
相信大家都熟悉awk,sed等一眾非常實用的linux 命令。那麼expect也是。以下以設定ssh密碼登陸為例,解說expect的使用方法。
uploadrsakey()
"last login"
}eof
}
當然了,要注意.ssh 的許可權要設定為700, .ssh/authorized_keys的許可權是600;假設許可權不正確,系統是不會讓你免密碼登陸的。
最後給出乙個通用的執行乙個命令的函式吧:
exec_shell()
{expect <
逐步轉向自己主動化測試
從mac team轉到ssoteam的時間差點兒相同也有乙個多月的時間了,當時bruce問我要不要轉team的時候,我也有考慮過一段時間。糾結於各種原因。然後。自己最後還是轉了。經過大半個月的適應,還是蠻喜歡ssoteam,這幾周都一直在做培訓,主要是學習python和 ta的知識,都是關於自己主動...
AC自己主動機
要學會ac自己主動機,我們必須知道什麼是trie。也就是字典樹。最好對kmp演算法也有些了解。trie樹和kmp演算法我之前部落格都有寫過。感興趣的能夠看看。簡單敘述下問題,如今給出 hsay ah sahe he say herhb aher erhs 答案是7。這就是乙個多模式匹配問題。ac自己...
chrome 關閉自己主動更新
一不小心,把chrome更新成了37,chrome 37不支援模態窗體 window.showmodaldialog 折騰死人了。實在抵不住,僅僅好降級成36.0.1985.143m 至 2014 09 04日為止的chrome 版本號 僅僅好找到登錄檔 hkey local machine sof...