實戰 | 使用Slack、Docker來打造你的運維機器人
在運維領域中一個比較新鮮也比較有意思的技術是ChatOps, 即通過與一個控制機器人對話來做運維工作。在本文中Digia 高級架構師Jussi Nummelin介紹了他在這方面的一些實踐。
作者介紹:Jussi Nummelin, Digia 高級架構師。Jussi當前正在將客戶和內部的項目進行Dockerizing。他的推ter帳號 @JNummelin。
ChatOps
近來有趨勢將團隊協作搬到在線消息應用上, 例如 Slack、 Flowdock 或者其它類似工具。一些組織甚至走的更超前,已經將他們的一些運維工具集成到這些消息應用里。 實際上這項工作比聽起來簡單的多,因為這些工具提供了相當直白的API和客戶端庫很方便做集成。當我發現情況如此時實在忍不住一試。: )通過Slack消息控制Kontena
作為 Kontena和 Slack的用戶,我覺得如果能夠使用Slack來控制我的Kontena grid將會是非常的酷。優點就是運維現在對于整個團隊來說都是透明的,因為與Kontena的通訊都是通過與一個cahnnel里面的機器人對話來完成 的。與同事一起做調試也變得十分的簡單,只需要你們建立一個私聊的會話然后邀請機器人加入就行了。通過這種方式你們兩人都可以看見與Kontena grid實時的控制流。集成
機器人是使用Node.js和Slack的 Node客戶端寫 的。Slack客戶端簡化了我的工作,因為它提供了幾個簡單的回調來對進來的消息做反饋。接下來的一步是解決如何與Kontena做集成。Kontena 本身已經有了一個相當好的命令行工具,我真的不想再另外寫一個選項解析和其它類似的“樣板“工具。所以這個Node.js APP就直接使用Kontena命令行工具來集成Kontena grid。由于Slack客戶端使用WebSocket并且機器人來管理連接(與Kontena的模型一致), 你就可以在任何地方運行它了。我們現在正在我們的Kontena grid中運行它。 ;)與機器人交互
在Slack上控制機器人與普通的對話無異。只需要邀請機器人加入你的channel或者給它發一個1對1的消息。kontenabot: service list
之后機器人便會將命令結果返回。因為是使用命令行工具做的集成, 所以機器人使用的命令與命令行工具里面的一模一樣。以下是幾個例子:
在容器中運行機器人
我們已經將機器人做成了 Docker 鏡像, 所以現在你要搭的話也相當容易。在Slack上創建一個新的機器人集成來獲得所需的api token。 在命令行上指定所需的token(slack 和kontena都要有)以及其他的選項作為環境變量,然后就搞定!docker run -d -e SLACK_TOKEN=xoxb-1243576874-XXXXXXXXXXXXXXXXXXX \ -e KONTENA_TOKEN=kontena-token -e KONTENA_URL=https://192.168.100.100:8443 \ -e KONTENA_GRID=my-grid -e SSL_IGNORE_ERRORS=true -e BOT_NAME=kontenabot \ -e ALLOWED_USERS=user1,user2 --name kontenabot jnummelin/kontena-slack-bot:latest
在上面的例子中我們指定了SSL_IGNORE_ERRORS因為測試環境我們的證書是自簽名的。需要注意的一點: 在容器里面和slack的配置里面對機器人命名要一致。這樣機器人就知道你是發消息給一個特定的bot。ALLOWED_USERS這個列表配置組織里哪些用戶被允許控制機器人。 如果你忽略的話, 任何用戶就都可以控制它。
關于細節請查看我們的 GitHub倉庫。 如果你有點子或者找到bug了, 請創建issue和PR, :)
原文鏈接:Orchestrating Docker Containers with Slack(翻譯:姚洪)
來自:http://dockone.io/article/768
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!