關於自己主動化部署

2021-09-22 09:16:28 字數 1591 閱讀 9803

對於大規模的集群,相信都有一整套比較完好的自己主動化部署方案。自己主動化部署有非常多問題值得思考。比方怎樣均衡的利用每乙個節點的資源,保證整個集群的負載打散;假設方便的增加新機器。怎樣在機器物理故障時下線它,然後將部署的任務遷移到其它的備機。有點資源管理的意味了。

本文不會討論這些問題。僅僅涉及乙個非常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...