19/09/2018, 09:51

Làm thế nào để cài đặt Bot chat Lita cho IRC trên Ubuntu 14.04

Giới thiệu Nhiều đội DevOps hiện đại đang đặt ngày càng nhiều cơ sở hạ tầng xung quanh phòng chat. Có rất nhiều phòng chat, 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 chat này là ...

Giới thiệu

Nhiều đội DevOps hiện đại đang đặt ngày càng nhiều cơ sở hạ tầng xung quanh phòng chat. Có rất nhiều phòng chat, 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 chat này là do các chương trình chatroom, mà các nhóm DevOps sử dụng để giúp công việc của họ được thực hiện nhanh hơn và hiệu quả hơn. Chuyển động này đôi khi được gọi là ChatOps.

Bài viết này sẽ phác thảo 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à làm việc trong nhiều loại phòng chat, như HipChat, Campfire và IRC. Tiện ích của nó chủ yếu đến từ các plugin bạn có thể thêm vào, có thể làm những việc như thực hiện tìm kiếm của Google hoặc triển khai một trang web.

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

Điều kiện tiên quyết

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

  • Một Ubuntu 14.04 Giọt.

  • Người dùng không phải root sudo mà bạn có thể thiết lập bằng cách làm theo hướng dẫn này.

  • Bởi vì chúng tôi sẽ thiết lập Lita để sử dụng trên IRC, bạn cũng sẽ cần phải 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ể thiết lập máy chủ IRC của riêng bạn, nhưng nếu bạn đang thử Lita, việc sử dụng máy chủ công cộng (như freenode, IRCnet hoặc EFnet) sẽ dễ dàng hơn.

Freenode nói riêng có một đơn giản web chat có sẵn để bạn có thể kết nối mà không cần tải xuống ứng dụng khách IRC. Để sử dụng, hãy chọn 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, chúng ta sẽ cài đặt Lita và các phụ thuộc của nó.

Chúng tôi sẽ cần phải cài đặt Ruby, ngôn ngữ mà Lita được viết. Mặc dù Ruby được bao gồm trong kho lưu trữ mặc định của Ubuntu, phiên bản Ruby có sẵn trong 14.04 quá cũ để Lita hoạt động.

Đầu tiên, tải PPA (Personal Package Archive) có phiên bản mới hơn.

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

Sau đó cập nhật các gói trên máy chủ 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, chúng tôi sẽ cài đặt Lita bằng RubyGems, một trình quản lý gói cho ruby ​​(giống như APT là một trình quản lý gói cho Ubuntu). APT sử dụng lệnh apt-get; RubyGems sử dụng lệnh gem.

Cài đặt bộ chuyển đổi Lita và 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, chúng tôi sẽ tạo một bot và thiết lập nó để kết nối với kênh IRC của chúng tôi.

Lệnh sau sẽ tạo một bot mới. Thay thế your_bot_name với một nick duy nhất cho bot của bạn.

lita new your_bot_name

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

Trước khi chúng tôi có thể khởi chạy Lita, chúng tôi cần chỉnh sửa các tệp 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 thư mục mới.

cd ~/your_bot_name/

Mở Gemfile để chỉnh sửa bằng cách sử dụng nano hoặc trình soạn thảo văn bản yêu thích của bạn.

nano Gemfile

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

Gemfile modified excerpt

. . .

# Uncomment to use the IRC adapter
gem "lita-irc"

. . .

Sau đó lưu và đóng tệp.

Tiếp theo, mở lita_config.rb tập tin.

nano lita_config.rb

Thay đổi config.robot.name tham số ở đầu tệp từ Lita để biệt danh của bot của bạn.

lita_config.rb modified excerpt

Lita.configure do |config|
  # The name your robot will use.
  config.robot.name = "your_bot_name"

. . .

Hơi xa hơn, thay đổi config.robot.adapter thông số từ :shell đến :irc.

lita_config.rb modified excerpt

. . .

  # 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 tệp, 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 bạn sao chép chính xác thụt đầu dòng và cũng thay thế các biến giữ chỗ trong config.adapters.irc.channels và config.adapters.irc.user các dòng có tên kênh và tên bot của bạn tương ứng. Nếu bạn đang sử dụng một máy chủ IRC khác với Freenode, bạn nên sửa đổi config.adapters.irc.server một cách thích hợp là tốt.

lita_config.rb modified excerpt

. . .

  ## 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 tập tin.

Để có danh sách đầy đủ các tùy chọn có thể được chuyển tới plugin 'lita-irc', hãy xem trang GitHub của plugin lita-irc.

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

Trong bước này, chúng ta sẽ bắt đầu bot và thiết lập một admin.

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

lita start

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

Tại thời điểm này, chúng tôi đã không nói với bot của chúng tôi làm thế nào để làm bất cứ điều gì, vì vậy nó không phải là rất hữu ích nào được nêu ra. Trước khi chúng tôi thêm một số tính năng bổ sung, hãy xác định người dùng của chúng tôi là quản trị viên. Để làm điều này, bạn sẽ cần phải 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 với một cái gì đó như thế này:

Lita's response in 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 cách nhập CTRL+C trong terminal của máy chủ.

Mở lại lita_config.rb tập tin.

nano lita_config.rb

Vào cuối tập tin, trước khi kết thúc end, thêm dòng sau đây. Thay thế ID tại đây bằng ID bạn đã sao chép.

Gemfile modified excerpt

...

  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 tập tin.

Bước 4 - Thêm Plugins

Tại thời điểm 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, chúng tôi sẽ cài đặt một plugin ví dụ để thêm một số chức năng hữu ích.

Trong khi bạn có thể viết các plugin của riêng bạn trong Ruby, có hàng trăm premade plugins để lựa chọn. Chúng tôi sẽ đi qua cài đặt Plugin lita-dig (mà là một DNS plugin tìm kiếm bản ghi) làm ví dụ, nhưng quá trình này rất giống với những người khác.

Trước tiên, hãy cài đặt lita-dig cắm vào.

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 của tập tin.

gem "lita-dig"

Lưu và đóng tệp, 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 với một vài dòng, bắt đầu bằng một thứ như ;; Answer received from 8.8.8.8:53 (114 bytes). Điều này có nghĩa là plugin của bạn đang hoạt động!

Bước 5 - Viết một Script Khởi động

Trong mỗi bước cho đến nay, chúng tôi đã phải tự khởi động bot. Đ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, chúng ta sẽ tạo một kịch bản Upstart để quản lý bot, giúp dễ dàng khởi động, dừng và khởi động lại nó. Để có cái nhìn chi tiết hơn về các tập lệnh Upstart, hãy xem Hướng dẫn mới nổi.

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

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

Dán phần sau vào tệp, thay thế your_username với tên người dùng của người dùng không phải root của bạn trên máy chủ 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ề những gì tập lệnh này thực hiện:

Các start on và stop on dòng lệnh cho Ubuntu biết khi nào bắt đầu và dừng bot. Các chdir line cho Upstart biết thư mục nào sẽ ở trong khi thực thi exec lệnh, mà thực sự bắt đầu bot.

Các env là bắt buộc để ứng dụng Ruby biết vị trí của các tệp cài đặt của nó. Các setuid và setgid bảo Upstart khởi động bot như một người dùng nào đó; nếu những dòng này bị bỏ qua, Upstart sẽ khởi động bot là root.

Các respawn dòng lệnh cho Upstart khởi chạy lại bot nếu nó bị gián đoạn hoặc bị lỗi. Các respawn limit ngăn chặn Upstart từ respawning nếu bot bị treo 10 lần trong 5 giây, đó là dấu hiệu của một vấn đề lớn hơn.

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

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

Nếu cú ​​pháp là chính xác, bạn sẽ thấy kết quả sau.

Correct linter output

File /etc/init/lita-your\_bot\_name.conf: syntax ok.

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

sudo start lita-your_bot_name

Bạn sẽ thấy một dòng trông như thế này:

Upstart output

lita-your_bot_name start/running, process 1234

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

Phần kết luận

Trong hướng dẫn này, chúng tôi đã cài đặt và cấu hình Lita với một plugin và một kịch bản Upstart. Với tên bot độc đáo và kịch bản Upstart, bạn thậm chí có thể chạy nhiều bot trong các phòng chat khác nhau với các plugin khác nhau.

Toàn bộ các công ty chạy toàn bộ cơ sở hạ tầng CNTT của họ từ chatbots giống như thế này. Từ các móc tùy chỉnh vào các dịch vụ xây dựng CI phổ biến như Jenkins để kiểm soát kho lưu trữ GitLabs của bạn, 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.

0