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

介绍

许多现代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(个人包存档)。

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

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

sudo apt-get update

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

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适配器。

sudo gem install lita 
sudo gem install lita-irc

第二步 - 配置Lita

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

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

lita new your_bot_name

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

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

cd ~/your_bot_name/

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

nano Gemfile

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

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

然后保存并关闭该文件。

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

nano lita_config.rb

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

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

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

. . .
​
  # 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

. . .
​
  ## 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加入的频道。然后,启动你的机器人。

lita start

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

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

 your_bot_name users find your_irc_nickname

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

your_irc_nickname<(ID: ff97cx41-b7fd-4x9b-x76d-e76xf443c65x, Mention name: your_irc_nickname)

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

重新打开lita_config.rb文件。

nano lita_config.rb

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

...
​
  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插件。

sudo gem install lita-dig

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

nano Gemfile

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

gem "lita-dig"

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

lita start

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

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的文件。

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

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

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(一种语法检查程序)使用以下命令检查此脚本的语法是否正确。

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

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

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

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

sudo start lita-your_bot_name

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

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》

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

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Zephery

谈谈个人网站的建立(四)—— 日志系统的建立

谈谈个人网站的建立(四)—— 日志系统的建立 欢迎访问我的网站http://www.wenzhihuai.com/ 。感谢,如果可以,希望能在GitHub上给个...

40040
来自专栏mini188

openfire的组件(Component)开发

在之前的文章《Openfire阶段实践总结》中提到过一种openfire的扩展模式Compoent。本文将主要探讨对这种模式的应用与开发方法。 内部与外部组件介...

29080
来自专栏前端杂货铺

deno深入揭秘及未来展望

node.js之父Ryan Dahl在一个月前发起了名为deno的项目,项目的初衷是打造一个基于v8引擎的安全的TypeScript运行时,同时实现HTML5...

22010
来自专栏光变

1.1 ASM-简介-目的

上面所述的技术可以应用于任何编程语言,只不过在实现上的难易程度取决于编程语言。 对于Java在这种情况下,可以在源码或者字节码中应用。 如果在字节码中应用,显而...

11220
来自专栏梦里茶室

【Chromium中文文档】跨平台开发的约定与模式

Chromium是一个巨大而复杂的跨平台产品。我们试图在不同平台间共享尽可能多的代码,同时为每个平台用最合适的方式实现UI和操作系统集成。这提供了一个更好的用户...

26890
来自专栏Zchannel

基于 Python 实现的用于命令行的速查工具:cheat.sh

13250
来自专栏申龙斌的程序人生

零基础学编程004:集成开发环境IDE

几天前介绍了《用在线编程环境快速上手》学习Python等编程语言,这种教学环境中的例子都非常简单,你不需要在自己的电脑中安装任何的软件,就可以马上动手学习Pyt...

34350
来自专栏FreeBuf

微信也被监控:HackingTeam语音监控代码分析

在HackingTeam泄漏的文件,我们发现了有针对主流聊天软件中的语音进行监控的代码,其中包括国内常用的微信。下面就以微信为例,来分析一下HackingTea...

32980
来自专栏Jimoer

Java设计模式学习记录-命令模式

这次要介绍的是命令模式,这也是一种行为型模式。最近反正没有面试机会我就写博客呗,该投的简历都投了。然后就继续看书,其实看书也会给自己带来成就感,原来以前不明白的...

11210
来自专栏架构说

CPU核数和线程 (池)数量的关系(概念理解)

目前手机配置: 支持HUAWEI Mate 8非凡表现的, 是拥有强大性能的华为麒麟950芯片。 此芯片为八核4*Cortex A72 ...

62960

扫码关注云+社区

领取腾讯云代金券