前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 14.04上为IRC安装Lita Chat Bot

如何在Ubuntu 14.04上为IRC安装Lita Chat Bot

原创
作者头像
木纸鸢
修改2018-10-10 17:08:50
2K0
修改2018-10-10 17:08:50
举报

介绍

许多现代DevOps团队在聊天室周围建立了越来越多的基础设施。有很多聊天室,从商业选项(如HipChat和Slack)到DIY选项(如IRC或Jabber / XMPP)。这个聊天室基础设施背后的主要动机之一是因为聊天室机器人,DevOps团队使用它来帮助他们更快更有效地完成工作,人们有时称为ChatOps。

本文将概述如何安装bot Lita,它受GitHub的Hubot的启发。Lita完全用Ruby编写,可以在HipChat,Campfire和IRC等多种聊天室中使用。它的实用程序主要来自您可以添加到其中的插件,可以执行诸如执行Google搜索或部署网站之类的操作。

在本教程中,我们将介绍在您自己的Ubuntu服务器上安装Lita,将其连接到IRC通道并开始安装插件的步骤。

准备

要学习本教程,您需要:

  • 一个Ubuntu 14.04 CVM,没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • 一个具有 sudo权限的非root用户,您可以按照本教程进行设置,或进入腾讯云+社区学习更多相关操作。
  • 因为我们将设置Lita用于IRC,您还需要自己连接到IRC并加入频道。

有几种方法可以访问IRC。您可以设置自己的IRC服务器,但如果您只是尝试使用Lita,则使用公共服务器(如freenode,IRCnet或EFnet)会更容易。

特别是Freenode有一个简单的网络聊天,所以你甚至无需下载IRC客户端即可连接。要使用它,请选择唯一的昵称和频道名称,然后单击“ 连接”。本教程假设您正在使用Freenode。

第一步 - 安装Lita

在这一步中,我们将安装Lita及其依赖项。

我们需要安装Ruby,这是Lita编写的语言。虽然Ruby包含在默认的Ubuntu存储库中,但是14.04中提供的Ruby版本对于Lita来说太旧了。

首先,加载具有更新版本的PPA(个人包存档)。

代码语言:javascript
复制
sudo apt-add-repository ppa:brightbox/ruby-ng

然后更新服务器上的软件包。

代码语言:javascript
复制
sudo apt-get update

接下来,安装Ruby和Lita需要的一些其他依赖项。

代码语言:javascript
复制
sudo apt-get install ruby2.2 ruby2.2-dev build-essential libssl-dev redis-server

最后,我们将使用RubyGems安装Lita,RubyGems是ruby的软件包管理器(很像是Ubuntu的软件包管理器APT)。APT使用该apt-get命令; RubyGems使用该gem命令。

安装Lita和Lita IRC适配器。

代码语言:javascript
复制
sudo gem install lita 
sudo gem install lita-irc

第二步 - 配置Lita

现在安装了Lita的软件,因此在这一步中,我们将创建一个机器人并将其设置为连接到我们的IRC频道。

以下命令将创建一个新的bot。替换your_bot_name为您的机器人的独特昵称。

代码语言:javascript
复制
lita new your_bot_name

该命令还将在homedir中创建一个~/your_bot_name目录,其中包含两个文件:Gemfilelita_config.rbGemfile告诉Ruby要加载哪些插件。lita_config.rb是存储所有插件配置设置的地方。对于lita-irc插件,lita_config.rb是存放有关于IRC服务器,频道,昵称等信息。

在我们启动Lita之前,我们需要编辑这些配置文件,以便您的机器人知道如何连接到IRC。首先,切换到新目录。

代码语言:javascript
复制
cd ~/your_bot_name/

使用nano或您喜欢的文本编辑器打开Gemfile进行编辑。

代码语言:javascript
复制
nano Gemfile

找到该# gem "lita-irc"行并删除该行开头的#,以取消注释。

代码语言:javascript
复制
. . .
​
# Uncomment to use the IRC adapter
gem "lita-irc"
​
. . .

然后保存并关闭该文件。

接下来,打开lita_config.rb文件。

代码语言:javascript
复制
nano lita_config.rb

将文件顶部的config.robot.name参数更改为Lita机器人的昵称。

代码语言:javascript
复制
Lita.configure do |config|
  # The name your robot will use.
  config.robot.name = "your_bot_name"
​
. . .

稍微向下,将config.robot.adapter参数由:shell更改为:irc

代码语言:javascript
复制
. . .
​
  # The adapter you want to connect with. Make sure you've added the
  # appropriate gem to the Gemfile.
  config.robot.adapter = :irc
​
. . .

然后,在文件的底部,在最后一行之前添加以下行(在下面突出显示)end

确保正确复制缩进,并分别用通道名称和机器人名称替换config.adapters.irc.channelsconfig.adapters.irc.user行中的占位符变量。如果您使用的是Freenode以外的IRC服务器,您也应该适当修改config.adapters.irc.server

代码语言:javascript
复制
. . .
​
  ## 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

保存并关闭文件。

有关可以传递给'lita-irc'插件的选项的完整列表,请查看lita-irc插件的GitHub页面

第三步 - 连接到频道

在这一步中,我们将启动机器人并设置管理员。

确保您使用您选择的IRC客户端或Web客户端连接到IRC,并且您所在的频道是您希望Lita加入的频道。然后,启动你的机器人。

代码语言:javascript
复制
lita start

你会看到很多输出。片刻之后,您将看到您的机器人加入您指定的IRC频道。

在这一点上,我们还没有告诉我们的机器人如何做任何事情,所以它还没有用。在我们添加一些额外功能之前,让我们将用户定义为管理员。要做到这一点,您需要询问您的机器人您的ID是什么。将以下行发送到IRC频道。

代码语言:javascript
复制
 your_bot_name users find your_irc_nickname

你的机器人会回复这样的事情:

代码语言:javascript
复制
your_irc_nickname<(ID: ff97cx41-b7fd-4x9b-x76d-e76xf443c65x, Mention name: your_irc_nickname)

复制ID,然后进入服务器的终端通过CTRL+C来停止Lita 。

重新打开lita_config.rb文件。

代码语言:javascript
复制
nano lita_config.rb

在文件末尾,在最后的end之前,添加以下行。将此处的ID替换为您复制的ID。

代码语言:javascript
复制
...
​
  config.adapters.irc.cinch = lambda do |cinch_config|
    cinch_config.max_reconnect_delay = 123
  end
​
  config.robot.admins = ["f97cx41-b7fd-4x9b-x76d-e76xf443c65x"]
​
end

保存并关闭文件。

第四步 - 添加插件

此时,您的机器人可以连接到IRC,但这就是它可以做的一切。在这一步中,我们将安装一个示例插件来添加一些有用的功能。

虽然您可以在Ruby中编写自己的插件,但有数百种预制插件可供选择。我们将继续安装lita-dig插件(这是一个DNS记录查找插件)作为示例,但该过程与其他人非常相似。

首先,让我们安装lita-dig插件。

代码语言:javascript
复制
sudo gem install lita-dig

接下来,再次打开Gemfile进行编辑。

代码语言:javascript
复制
nano Gemfile

在文件的最后添加以下行。

代码语言:javascript
复制
gem "lita-dig"

保存并关闭该文件,然后重新启动bot。

代码语言:javascript
复制
lita start

当您的机器人重新连接时,将以下行发送到IRC频道。

代码语言:javascript
复制
your_bot_name dig digitalocean.com

机器人会用几行来回应,从类似的;; Answer received from 8.8.8.8:53 (114 bytes)开头。这意味着你的插件正在运行!

第五步 - 编写Upstart脚本

在目前为止的每一步中,我们都必须手动启动机器人。这适用于测试,但有一个更好的解决方案。在此步骤中,我们将创建一个Upstart脚本来管理机器人,使其易于启动,停止和重新启动。

首先,在/etc/init下创建一个名为lita-your_bot_name.conf的文件。

代码语言:javascript
复制
sudo nano /etc/init/lita-your_bot_name.conf

将以下内容粘贴到文件中,替换your_username为服务器上sudo非root用户的用户名。

代码语言:javascript
复制
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

以下是此脚本执行操作的快速说明:

start onstop on行告诉Ubuntu的时候开始和停止机器人。该chdir行告诉Upstart在执行exec命令时要进入哪个目录,这实际上启动了机器人。

env行是必需的,因此Ruby应用程序知道其设置文件的位置。setuidsetgid告诉Upstart启动BOT为特定用户; 如果省略这些行,Upstart将以root身份启动bot。

respawn行告诉Upstart如果它被中断或崩溃重新启动机器人。在respawn limit防止从重生UPSTART如果机器人在5秒钟内,这指示一个更大的问题的崩溃的10倍。

我们可以使用内置的linter(一种语法检查程序)使用以下命令检查此脚本的语法是否正确。

代码语言:javascript
复制
sudo init-checkconf /etc/init/lita-your_bot_name.conf

如果语法正确,您应该看到以下输出。

代码语言:javascript
复制
File /etc/init/lita-your\_bot\_name.conf: syntax ok.

检查配置文件的语法后,通过输入以下命令启动带有Upstart脚本的bot。

代码语言:javascript
复制
sudo start lita-your_bot_name

您应该看到如下所示的行:

代码语言:javascript
复制
lita-your_bot_name start/running, process 1234

您的机器人应该很快加入IRC频道; 您现在可以退出服务器,机器人将继续运行。

结论

在本教程中,我们使用插件和Upstart脚本安装和配置了Lita。使用独特的机器人名称和Upstart脚本,您甚至可以在不同的聊天室中使用不同的插件运行多个机器人。

整个公司从聊天机器人运行他们的整个IT基础设施就像这样。从自定义hooks到Jenkins等流行的CI构建服务,再到控制GitLabs存储库,使用聊天机器人可以简化,简化和自动化您的工作。

想要了解更多关于Ubuntu的开源信息教程,请前往腾讯云+社区学习更多知识。

参考文献:《How To Install the Lita Chat Bot for IRC on Ubuntu 14.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 第一步 - 安装Lita
  • 第二步 - 配置Lita
  • 第三步 - 连接到频道
  • 第四步 - 添加插件
  • 第五步 - 编写Upstart脚本
  • 结论
相关产品与服务
CODING DevOps
CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档