今天有幸參加devopsdays活動蚊伞,首先感謝老板為我提供了這次機會(主要是給報銷,贊T汀)矛渴,起個大早我就一路奔襲而去了,然后就是排了個很長隊等候安檢惫搏,是的你沒看錯具温,是安檢。之后一上午的分享和演講不想多說筐赔,直到devops之父Patrick站上講臺铣猩,亮了!演講很精彩茴丰,贊达皿!演講末尾他分享了很多實踐,其中講到GitHub的時候他問了一個問題贿肩,“有誰知道chatops峦椰?”結(jié)果1000多人的場子,算上我最多也就不到5個人舉手汰规,于是乎我覺得我應該把之前做過的一些關于chatops的研究以及經(jīng)驗寫下來汤功,讓更多的人知道。
chatops顧名思義溜哮,翻譯的直白一點就是用聊天的方式來做ops工作滔金,大體也差不多是這個意思。chatops用人類最原始和最直接的以會話來驅(qū)動的方式來做事情茂嗓。什么是以會話驅(qū)動餐茵?其實這種方式充斥著我們的生活,舉個很普通的例子述吸,我對你說忿族,“請幫我去拿一個蘋果”,然后你拿了一個蘋果給我。就是這么簡單肠阱,只不過chatops中票唆,“幫我拿蘋果的”是個虛擬的機器人。
首先我們要先搞明白chatops涉及到了哪些資源 -- 交付團隊, 一個團隊IM工具(slack, IRC, hipchat...)屹徘,chat機器人與基礎設施(包括服務器走趋,數(shù)據(jù)庫,配置管理以及系統(tǒng)管理工具等)噪伊。接下來我們就以slack做為團隊IM工具來舉個小例子說明一下chatops是如何運做的簿煌。交付團隊的成員會在slack的一個channel(可以把它理解成微信群)中交流和工作,在這個channel中有這樣一個特殊的同事鉴吹,他是一個聊天機器人姨伟,之后的文章中我們叫他chatbot,當交付團隊的成員輸入“@chatbot restart 10.34.33.22"之后豆励,chatbot會調(diào)用后臺的api將ip地址是”10.34.33.22“的vm重起夺荒,然后把重啟后的狀態(tài)回復到slack channel中。想像一下沒有chatops的情況下團隊成員會如何完成這件小事兒 -- 1.打開terminal 2. ssh到相應的vm 3. 輸入密碼 4.run "reboot" 5. 等一會兒 6. 再次ssh到vm 7. 再次輸入密碼 8. 檢查相關信息良蒸,是不是有一些繁瑣技扼,而chatops只是@了一下chatbot而已,很方便嫩痰,很cool對嗎剿吻?
那么這樣一件有趣且有價值的事情是如何做到的呢,我來解釋一下串纺,slack channel中的chatbot會監(jiān)聽address給他的消息(當然也可以監(jiān)聽當前channel的所有消息丽旅,以后有機會會給大家解釋),通過一個叫做“正擇匹配”的古老且長青的技術來篩查是不是有需要響應的關鍵字纺棺,一旦匹配到chatbot就會堅定不移的執(zhí)行相對應的action榄笙。就上面的例子來說就是chatbot監(jiān)聽到“@chatbot restart 10.34.33.22",然后“正擇匹配”匹配到了restart命令五辽,于是他對命令做出響應办斑,執(zhí)行了restart命令對應的function去重啟vm并回傳結(jié)果外恕。這只是一個簡單的例子用來說明chatops是如何工作的杆逗,chatops的功能很強大應用很廣泛,尤其在大型合做項目和大型互聯(lián)網(wǎng)或云計算項目中最為明顯鳞疲。
如果大家對chatops感興趣罪郊,接下來我會分享我對chatops一些感悟以及如何從零開始做一個chatbot.