Thứ tư, 10/06/2015 | 00:00 GMT+7

Cách cài đặt Lita Chat Bot cho IRC trên Ubuntu 14.04

Nhiều group DevOps hiện đại đang đặt ngày càng nhiều cơ sở hạ tầng xung quanh phòng trò chuyện. Có rất nhiều phòng chat có sẵn, từ các tùy chọn thương mại (như HipChat và Slack) đến các tùy chọn DIY (như IRC hoặc Jabber / XMPP). Một trong những động lực chính đằng sau cơ sở hạ tầng phòng trò chuyện này là do các bot phòng trò chuyện, mà các group DevOps sử dụng để giúp hoàn thành công việc của họ nhanh hơn và hiệu quả hơn. Phong trào này đôi khi được gọi là ChatOps.

Bài viết này sẽ trình bày cách cài đặt bot Lita , được lấy cảm hứng từ Hubot của GitHub. Lita được viết hoàn toàn bằng Ruby và hoạt động trong nhiều loại chatroom, như HipChat, Campfire và IRC. Tiện ích của nó phần lớn đến từ các plugin bạn có thể thêm vào, có thể thực hiện những việc như thực hiện tìm kiếm trên Google hoặc triển khai trang web.

Trong hướng dẫn này, ta sẽ hướng dẫn các bước cài đặt Lita trên server Ubuntu của bạn , kết nối nó với kênh IRC và bắt đầu cài đặt các plugin.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

  • Một server Ubuntu 14.04.

  • Một user không phải root có quyền sudo , bạn có thể cài đặt theo hướng dẫn này .

  • Vì ta sẽ cài đặt Lita để sử dụng trên IRC nên bạn cũng cần tự kết nối với IRC và tham gia một kênh.

Có một số cách để truy cập IRC. Bạn có thể cài đặt server IRC của riêng mình , nhưng nếu bạn chỉ đang dùng thử Lita, thì việc sử dụng server công cộng (như freenode, IRCnet hoặc EFnet) sẽ dễ dàng hơn.

Đặc biệt, Freenode có một cuộc trò chuyện web đơn giản có sẵn để bạn có thể kết nối mà không cần phải download ứng dụng IRC. Để sử dụng nó, hãy chọn một biệt hiệu và tên kênh duy nhất, sau đó nhấp vào Kết nối . Hướng dẫn này sẽ giả sử bạn đang sử dụng Freenode.

Bước 1 - Cài đặt Lita

Trong bước này, ta sẽ cài đặt Lita và các phụ thuộc của nó.

Ta cần cài đặt Ruby, ngôn ngữ mà Lita được viết. Mặc dù Ruby có trong repository lưu trữ mặc định của Ubuntu, nhưng version Ruby có sẵn trong version 14.04 đã quá cũ để Lita hoạt động.

Vì vậy, trước tiên, hãy tải PPA ( Repository cá nhân) có version mới hơn.

  • sudo apt-add-repository ppa:brightbox/ruby-ng

Sau đó cập nhật các gói trên server của bạn.

  • sudo apt-get update

Tiếp theo, cài đặt Ruby và một số phụ thuộc bổ sung mà Lita yêu cầu.

  • sudo apt-get install ruby2.2 ruby2.2-dev build-essential libssl-dev redis-server

Cuối cùng, ta sẽ cài đặt Lita bằng cách sử dụng RubyGems, là trình quản lý gói cho ruby (giống như APT là trình quản lý gói cho Ubuntu). APT sử dụng lệnh apt-get ; RubyGems sử dụng gem lệnh.

Cài đặt Lita và bộ điều hợp Lita IRC.

  • sudo gem install lita
  • sudo gem install lita-irc

Bước 2 - Cấu hình Lita

Phần mềm cho Lita hiện đã được cài đặt, vì vậy trong bước này, ta sẽ tạo một bot và cài đặt nó để kết nối với kênh IRC của ta .

Lệnh sau sẽ tạo một bot mới. Thay your_bot_name bằng biệt hiệu duy nhất cho bot của bạn.

  • lita new your_bot_name

Lệnh đó cũng sẽ tạo một folder trong homedir của bạn, ~/ your_bot_name , chứa hai file : Gemfilelita_config.rb . Gemfile cho Ruby biết plugin nào cần tải. lita_config.rb là nơi lưu trữ tất cả các cài đặt cấu hình plugin. Đối với plugin lita-irc , lita_config.rb sẽ có thông tin về server IRC, kênh, biệt hiệu, v.v.

Trước khi có thể chạy Lita, ta cần chỉnh sửa các file cấu hình này để bot của bạn biết cách kết nối với IRC. Đầu tiên, thay đổi vào folder mới.

  • cd ~/your_bot_name/

Mở Gemfile để chỉnh sửa bằng nano hoặc editor yêu thích của bạn.

  • nano Gemfile

Tìm dòng # gem "lita-irc" và xóa dấu # `ở đầu dòng, bỏ dấu ghi chú.

Trích đoạn sửa đổi của Gemfile
. . .  # Uncomment to use the IRC adapter gem "lita-irc"  . . . 

Sau đó, lưu file .

Tiếp theo, mở file lita_config.rb .

  • nano lita_config.rb

Thay đổi tham số config.robot.name ở đầu file từ Lita thành biệt hiệu của bot của bạn.

trích đoạn đã sửa đổi lita_config.rb
Lita.configure do |config|   # The name your robot will use.   config.robot.name = "your_bot_name"  . . . 

Xa hơn một chút, thay đổi tham số config.robot.adapter từ :shell thành :irc .

trích đoạn đã sửa đổi lita_config.rb
. . .    # The adapter you want to connect with. Make sure you've added the   # appropriate gem to the Gemfile.   config.robot.adapter = :irc  . . . 

Sau đó, ở cuối file , thêm các dòng sau (được đánh dấu bên dưới) trước dòng cuối cùng, end .

Đảm bảo rằng bạn sao chép chính xác thụt lề và cũng thay thế các biến giữ chỗ trong các dòng config.adapters.irc.channelsconfig.adapters.irc.user bằng tên kênh và tên bot của bạn, tương ứng. Nếu bạn đang sử dụng server IRC không phải Freenode, bạn cũng nên sửa đổi config.adapters.irc.server một cách thích hợp.

trích đoạn đã sửa đổi lita_config.rb
. . .    ## Example: Set configuration for any loaded handlers. See the handler's   ## documentation for options.   # config.handlers.some_handler.some_config_key = "value"    config.adapters.irc.server = "irc.freenode.net"   config.adapters.irc.channels = ["#your_channel_name"]   config.adapters.irc.user = "your_bot_name"   config.adapters.irc.cinch = lambda do |cinch_config|     cinch_config.max_reconnect_delay = 123   end  end 

Lưu và đóng file .

Để có danh sách đầy đủ về những tùy chọn nào có thể được chuyển đến plugin 'lita-irc', hãy xem trang GitHub của plugin lita-irc .

Bước 3 - Kết nối với một kênh

Trong bước này, ta sẽ khởi động bot và cài đặt một administrator .

Đảm bảo rằng bạn đã kết nối với IRC bằng ứng dụng client IRC mà bạn chọn hoặc ứng dụng client web và bạn đang ở trong kênh mà bạn muốn Lita tham gia. Sau đó, khởi động bot của bạn.

  • lita start

Bạn sẽ thấy rất nhiều kết quả . Sau một lúc, bạn sẽ thấy bot của bạn tham gia kênh IRC mà bạn đã chỉ định.

Đến đây, ta chưa cho bot của bạn biết cách làm bất cứ điều gì, vì vậy nó chưa thực sự hữu ích. Trước khi ta thêm một số tính năng bổ sung, hãy xác định user của ta là administrator . Để làm điều này, bạn cần hỏi bot của bạn ID của bạn là gì. Gửi dòng sau đến kênh IRC.

 your_bot_name users find your_irc_nickname 

Bot của bạn sẽ trả lời như sau:

Phản hồi của Lita trong IRC
your_irc_nickname<(ID: ff97cx41-b7fd-4x9b-x76d-e76xf443c65x, Mention name: your_irc_nickname) 

Sao chép ID, sau đó dừng Lita bằng lệnh CTRL+C vào terminal của server của bạn.

Mở lại file lita_config.rb .

  • nano lita_config.rb

Ở cuối file , trước khi kết end , hãy thêm dòng sau. Thay thế ID ở đây bằng ID bạn đã sao chép.

Trích đoạn sửa đổi của Gemfile
...    config.adapters.irc.cinch = lambda do |cinch_config|     cinch_config.max_reconnect_delay = 123   end    config.robot.admins = ["f97cx41-b7fd-4x9b-x76d-e76xf443c65x"]  end 

Lưu và đóng file .

Bước 4 - Thêm plugin

Đến đây, bot của bạn có thể kết nối với IRC, nhưng đó là tất cả những gì nó có thể làm. Trong bước này, ta sẽ cài đặt một plugin mẫu để thêm một số chức năng hữu ích.

Mặc dù bạn có thể viết các plugin của riêng mình bằng Ruby, nhưng có hàng trăm plugin tạo sẵn để bạn lựa chọn. Ta sẽ xem xét cài đặt plugin lita-dig (là một plugin tra cứu bản ghi DNS ) làm ví dụ, nhưng quá trình này rất giống với những người khác.

Đầu tiên, hãy cài đặt plugin lita-dig .

  • sudo gem install lita-dig

Tiếp theo, mở Gemfile để chỉnh sửa lại.

  • nano Gemfile

Thêm dòng sau vào cuối file .

gem "lita-dig" 

Lưu file , sau đó khởi động lại bot.

  • lita start

Đó là nó! Khi bot của bạn kết nối lại, hãy gửi dòng sau đến kênh IRC.

your_bot_name dig digitalocean.com 

Bot sẽ trả lời bằng một vài dòng, bắt đầu bằng thông tin như ;; Answer received from 8.8.8.8:53 (114 bytes) . Điều này nghĩa là plugin của bạn đang hoạt động!

Bước 5 - Viết kịch bản khởi động

Trong mỗi bước cho đến nay, ta phải khởi động bot theo cách thủ công. Điều này là tốt để thử nghiệm, nhưng có một giải pháp tốt hơn. Trong bước này, ta sẽ tạo một tập lệnh Upstart để quản lý bot, giúp dễ dàng bắt đầu, dừng và khởi động lại nó. Để có cái nhìn chi tiết hơn về các script Upstart, hãy xem hướng dẫn Upstart này.

Đầu tiên, tạo một file có tên là lita- your_bot_name .conf trong /etc/init .

sudo nano /etc/init/lita-your_bot_name.conf 

Dán phần sau vào file , thay thế your_username bằng tên user của user không phải root có quyền sudo trên server của bạn.

your_bot_name.conf '> / etc / init / lita- your_bot_name .conf
 start on runlevel [2345] stop on runlevel [^2345]  chdir /home/your_username/your_bot_name env HOME=/home/your_username setuid your_username setgid your_username  respawn respawn limit 10 5  exec lita start 

Dưới đây là giải thích nhanh về chức năng của tập lệnh này:

Các dòng start onstop on cho Ubuntu biết khi nào bắt đầu và dừng bot. Dòng chdir cho Upstart biết folder nào sẽ ở trong khi thực hiện lệnh exec , lệnh này thực sự khởi động bot.

Dòng env là bắt buộc để ứng dụng Ruby biết các file cài đặt của nó nằm ở đâu. setuidsetgid yêu cầu Upstart khởi động bot với quyền là một user nhất định; nếu những dòng này bị bỏ qua, Upstart sẽ chạy bot dưới dạng root.

Dòng respawn cho biết Upstart chạy lại bot nếu nó bị gián đoạn hoặc gặp sự cố. respawn limit ngăn không cho Khởi động lại nếu bot gặp sự cố 10 lần trong 5 giây, đây là dấu hiệu của một vấn đề lớn hơn.

Ta có thể kiểm tra xem cú pháp trên tập lệnh này có đúng không bằng cách sử dụng một linter tích hợp , là một chương trình kiểm tra cú pháp, sử dụng lệnh sau.

sudo init-checkconf /etc/init/lita-your_bot_name.conf 

Nếu cú pháp đúng, bạn sẽ thấy kết quả sau.

Đầu ra linter chính xác
File /etc/init/lita-your\_bot\_name.conf: syntax ok. 

Khi bạn đã kiểm tra cú pháp của file cấu hình, hãy khởi động bot bằng tập lệnh Khởi động bằng lệnh lệnh sau.

  • sudo start lita-your_bot_name

Bạn sẽ thấy một dòng trông giống như sau:

Khởi động lại kết quả
lita-your_bot_name start/running, process 1234 

Bot của bạn sẽ sớm tham gia kênh IRC; bây giờ bạn có thể đăng xuất khỏi server của bạn và bot sẽ tiếp tục chạy.

Kết luận

Trong hướng dẫn này, ta đã cài đặt và cấu hình Lita bằng một plugin và một tập lệnh Upstart. Với các tên bot độc đáo và tập lệnh Khởi động, bạn thậm chí có thể chạy nhiều bot trong các phòng trò chuyện khác nhau với các plugin khác nhau.

Toàn bộ các công ty điều hành toàn bộ cơ sở hạ tầng CNTT của họ từ chatbot giống như cái này. Từ các móc tùy chỉnh đến các dịch vụ xây dựng CI phổ biến như Jenkins đến việc kiểm soát các repository GitLabs của bạn, việc sử dụng chatbot có thể đơn giản hóa, hợp lý hóa và tự động hóa công việc của bạn.


Tags:

Các tin liên quan

Cách cài đặt và cấu hình Ansible trên Ubuntu 14.04
2015-06-05
Triển khai ứng dụng Rails trên Ubuntu 14.04 với Capistrano, Nginx và Puma
2015-06-03
Cách xây dựng các SPA (Ứng dụng một trang) bằng NodeJS, SailsJS và DustJS trong Ubuntu 14.04
2015-05-27
Cách thiết lập môi trường puppet masterless trên Ubuntu 14.04
2015-04-29
Cách backup server Ubuntu 14.04 bằng Bacula
2015-04-17
Cách cài đặt WordPress với OpenLiteSpeed trên Ubuntu 14.04
2015-04-16
Cách triển khai Wordpress với Shipyard trên Ubuntu 14.04
2015-04-14
Cách quản lý Jenkins với Rancher trên Ubuntu 14.04
2015-03-25
Cách cài đặt Sandstorm trên Ubuntu 14.04
2015-03-19
Cách bảo vệ thông tin đăng nhập tài khoản WordPress của bạn với xác thực hai yếu tố trên Ubuntu 14.04
2015-03-16