许多现代DevOps团队在聊天室周围建立了越来越多的基础设施。有很多聊天室,从商业选项(如HipChat和Slack)到DIY选项(如IRC或Jabber / XMPP)。这个聊天室基础设施背后的主要动机之一是因为聊天室机器人,DevOps团队使用它来帮助他们更快更有效地完成工作,人们有时称为ChatOps。
本文将概述如何安装bot Lita,它受GitHub的Hubot的启发。Lita完全用Ruby编写,可以在HipChat,Campfire和IRC等多种聊天室中使用。它的实用程序主要来自您可以添加到其中的插件,可以执行诸如执行Google搜索或部署网站之类的操作。
在本教程中,我们将介绍在您自己的Ubuntu服务器上安装Lita,将其连接到IRC通道并开始安装插件的步骤。
要学习本教程,您需要:
sudo
权限的非root用户,您可以按照本教程进行设置,或进入腾讯云+社区学习更多相关操作。有几种方法可以访问IRC。您可以设置自己的IRC服务器,但如果您只是尝试使用Lita,则使用公共服务器(如freenode,IRCnet或EFnet)会更容易。
特别是Freenode有一个简单的网络聊天,所以你甚至无需下载IRC客户端即可连接。要使用它,请选择唯一的昵称和频道名称,然后单击“ 连接”。本教程假设您正在使用Freenode。
在这一步中,我们将安装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的软件,因此在这一步中,我们将创建一个机器人并将其设置为连接到我们的IRC频道。
以下命令将创建一个新的bot。替换your_bot_name
为您的机器人的独特昵称。
lita new your_bot_name
该命令还将在homedir中创建一个~/your_bot_name
目录,其中包含两个文件:Gemfile
和lita_config.rb
。Gemfile
告诉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.channels
和config.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脚本来管理机器人,使其易于启动,停止和重新启动。
首先,在/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 on
和stop on
行告诉Ubuntu的时候开始和停止机器人。该chdir
行告诉Upstart在执行exec
命令时要进入哪个目录,这实际上启动了机器人。
该env
行是必需的,因此Ruby应用程序知道其设置文件的位置。setuid
和setgid
告诉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》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。