如何在Ubuntu 14.04的IRC安装Lita聊天机器人

介绍

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

本文将概述如何安装机器人Lita ,这在很大程度上受到GitHub的Hubot启发。 Lita完全用Ruby编写,并且在许多种聊天室中工作,如HipChat,Campfire和IRC。 其实用程序主要来自可以添加到其中的插件,可以执行Google搜索或部署网站等操作。

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

先决条件

要遵循本教程,您需要:

  • 一个Ubuntu 14.04 Droplet。

  • sudo的一个非root用户,您可以通过以下设置本教程

  • 因为我们将设置Lita在IRC上使用,您还需要自己连接到IRC并加入频道。

有几种方法来访问IRC。 您可以设置自己的IRC服务器 ,但是如果你只是想出来丽塔,它更容易使用公共服务器(如freenode上,IRCnet或EFnet的)。

Freenode上特别有一个简单的网络聊天可用,因此您可以甚至不必下载一个IRC客户端连接。 要使用它,选择一个独特的昵称和频道名称,然后单击连接 本教程将假设您使用Freenode。

第1步 - 安装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的包管理器(就像APT是Ubuntu的包管理器一样)。 APT使用命令apt-get ; RubyGems的使用命令gem

安装Lita和Lita IRC适配器。

sudo gem install lita 
sudo gem install lita-irc

第2步 - 配置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/

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

nano Gemfile

找到这一行# gem "lita-irc"并删除# `在该行,其中取消注释它的开始。

Gemfile修改摘录
. . .

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

. . .

然后保存并关闭文件。

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

nano lita_config.rb

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

lita_config.rb修改摘录
Lita.configure do |config|
  # The name your robot will use.
  config.robot.name = "your_bot_name"

. . .

稍远了下来,改变config.robot.adapter从参数:shell:irc

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

. . .

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

确保正确复制缩进,同时替换占位符变量config.adapters.irc.channelsconfig.adapters.irc.user与渠道的名字和你的机器人的名字线路,分别为。 如果您使用的是其他Freenode的IRC服务器,你应该修改config.adapters.irc.server适当为好。

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

保存并关闭文件。

对于哪些选项可以传递给'Lita-IRC“插件的完整列表,请查看Lita-IRC插件的页面GitHub的

第3步 - 连接到频道

在这一步中,我们将启动bot并设置一个管理员。

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

lita start

你会看到很多输出。 过一会儿,你会看到你的bot加入你指定的IRC频道。

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

 your_bot_name users find your_irc_nickname

你的机器人会回应这样的东西:

Lita在IRC中的反应
your_irc_nickname<(ID: ff97cx41-b7fd-4x9b-x76d-e76xf443c65x, Mention name: your_irc_nickname)

复制ID,然后通过输入停止LitaCTRL+C在您的服务器的终端。

重新打开lita_config.rb文件。

nano lita_config.rb

在文件的结尾,在决赛前end ,添加以下行。 将此处的ID替换为您复制的ID。

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

保存并关闭文件。

第4步 - 添加插件

在这一点上,你的机器人可以连接到IRC,但这是关于它可以做的。 在这一步中,我们将安装一个示例插件来添加一些有用的功能。

虽然你可以写在Ruby中自己的插件,有数以百计的预制插件可供选择。 我们将去了安装Lita掏插件 (这是一个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) ;; Answer received from 8.8.8.8:53 (114 bytes) 这意味着你的插件是工作!

第5步 - 编写Upstart脚本

到目前为止的每一步,我们都不得不手动启动bot。 这对于测试来说很好,但是有一个更好的解决方案。 在这一步中,我们将创建一个Upstart脚本来管理机器人,使其易于启动,停止和重新启动。 如需更详细的看进Upstart脚本,看看这个Upstart教程

首先,创建一个名为lita- your_bot_name .conf/etc/init

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

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

your_bot_name.conf'>的/ etc /初始化/ 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

这里有一个快速解释这个脚本做什么:

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

env线是必需的,Ruby应用程序时知道在哪里它的设置文件的位置。 setuidsetgid告诉Upstart启动机器人作为一个特定的用户; 如果省略这些行,Upstart将以root身份启动bot。

respawn行告诉Upstart,如果它被中断或崩溃重新发起机器人。 respawn limit防止从Upstart如果机器人在5秒内,这表明一个更大的问题,死机10次重生。

我们可以检查关于这个脚本的语法是通过使用内置的棉绒 ,它是一种语法检查程序,使用以下命令正确。

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

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

正确的linter输出
File /etc/init/lita-your\_bot\_name.conf: syntax ok.

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

sudo start lita-your_bot_name

您应该看到一条如下所示的线:

Upstart输出
lita-your_bot_name start/running, process 1234

你的bot应该很快加入IRC通道; 您现在可以注销您的服务器,bot将继续运行。

结论

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

整个公司从chatbots运行他们的整个IT基础设施非常像这一个。 从自定义钩子到流行的CI构建服务(如Jenkins)控制您的GitLabs存储库,使用chatbot可以简化,简化和自动化您的工作。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏