Ubuntu14.04にIRC用のLitaチャットボットをインストールする方法
序章
最近の多くのDevOpsチームは、チャットルームの周りにますます多くのインフラストラクチャを配置しています。 商用オプション(HipChatやSlackなど)からDIYオプション(IRCやJabber / XMPPなど)まで、利用可能なチャットルームはたくさんあります。 このチャットルームインフラストラクチャの背後にある主な動機の1つは、チャットルームボットによるものです。チャットルームボットは、DevOpsチームが作業をより迅速かつ効率的に行うために使用します。 この動きは、ChatOpsと呼ばれることもあります。
この記事では、GitHubのHubotに大きく影響を受けたボットLitaのインストール方法について概説します。 Litaは完全にRubyで書かれており、HipChat、Campfire、IRCなどのさまざまな種類のチャットルームで動作します。 そのユーティリティは主に、Google検索の実行やWebサイトの展開などを実行できるプラグインに追加できることから得られます。
このチュートリアルでは、Litaを独自のUbuntuサーバーにインストールし、IRCチャネルに接続して、プラグインのインストールを開始する手順を説明します。
前提条件
このチュートリアルに従うには、次のものが必要です。
-
1つのUbuntu14.04ドロップレット。
-
このチュートリアルに従って設定できるsudo非rootユーザー。
-
IRCで使用するためにLitaをセットアップするため、自分でIRCに接続して、チャネルに参加する必要もあります。
IRCにアクセスする方法はいくつかあります。 独自のIRCサーバーをセットアップできますが、Litaを試しているだけの場合は、パブリックサーバー(freenode、IRCnet、EFnetなど)を使用する方が簡単です。
特にFreenodeにはシンプルなウェブチャットが用意されているので、IRCクライアントをダウンロードしなくても接続できます。 使用するには、一意のニックネームとチャンネル名を選択し、接続をクリックします。 このチュートリアルでは、Freenodeを使用していることを前提としています。
ステップ1—Litaをインストールする
このステップでは、Litaとその依存関係をインストールします。
Litaが書かれている言語であるRubyをインストールする必要があります。 RubyはデフォルトのUbuntuリポジトリに含まれていますが、14.04で利用可能なRubyのバージョンは、Litaが機能するには古すぎます。
したがって、最初に、より新しいバージョンのPPA(Personal Package Archive)をロードします。
- 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
最後に、rubyのパッケージマネージャーであるRubyGemsを使用してLitaをインストールします(APTがUbuntuのパッケージマネージャーであるように)。 APTはコマンドを使用します apt-get
; RubyGemsはコマンドを使用します gem
.
LitaとLitaIRCアダプターをインストールします。
- sudo gem install lita
- sudo gem install lita-irc
ステップ2—Litaを構成する
これでLitaのソフトウェアがインストールされたので、このステップでは、ボットを作成し、IRCチャネルに接続するように設定します。
次のコマンドは、新しいボットを作成します。 交換 your_bot_name
ボットに固有のニックネームを付けます。
- lita new your_bot_name
このコマンドは、ホームディレクトリにもディレクトリを作成します。 ~/your_bot_name
、2つのファイルが含まれています: Gemfile
と lita_config.rb
. Gemfile
ロードするプラグインをRubyに指示します。 lita_config.rb
すべてのプラグイン構成設定が保存される場所です。 のために lita-irc
プラグイン、 lita_config.rb
IRCサーバー、チャネル、ニックネームなどに関する情報があります。
Litaを起動する前に、ボットがIRCに接続する方法を認識できるように、これらの構成ファイルを編集する必要があります。 まず、新しいディレクトリに移動します。
- cd ~/your_bot_name/
開ける Gemfile
nanoまたはお気に入りのテキストエディタを使用して編集します。
- 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ページを確認してください。
ステップ3—チャネルに接続する
このステップでは、ボットを起動して管理者を設定します。
選択した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をコピーし、次のように入力してLitaを停止します CTRL+C
サーバーのターミナルで。
再開します 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
ファイルを保存して閉じます。
ステップ4—プラグインを追加する
この時点で、ボットはIRCに接続できますが、できることはこれだけです。 このステップでは、いくつかの便利な機能を追加するためのサンプルプラグインをインストールします。
Rubyで独自のプラグインを作成することもできますが、数百の既製のプラグインから選択できます。 例として、 lita-digプラグイン( DNS レコードルックアッププラグイン)のインストールについて説明しますが、プロセスは他のプラグインと非常に似ています。
まず、インストールしましょう lita-dig
プラグイン。
- sudo gem install lita-dig
次に、開く Gemfile
もう一度編集してください。
- nano Gemfile
ファイルの最後に次の行を追加します。
gem "lita-dig"
ファイルを保存して閉じてから、ボットを再起動します。
- lita start
それでおしまい! ボットが再接続したら、次の行をIRCチャネルに送信します。
your_bot_name dig digitalocean.com
ボットは、次のようなもので始まるいくつかの行で応答します ;; Answer received from 8.8.8.8:53 (114 bytes)
. これは、プラグインが機能していることを意味します。
ステップ5—アップスタートスクリプトを書く
これまでのすべてのステップで、ボットを手動で起動する必要がありました。 これはテストには問題ありませんが、より良い解決策があります。 このステップでは、ボットを管理するためのUpstartスクリプトを作成し、ボットの開始、停止、再起動を簡単にします。 Upstartスクリプトの詳細については、このUpstartチュートリアルを確認してください。
まず、というファイルを作成します lita-your_bot_name.conf
の /etc/init
.
sudo nano /etc/init/lita-your_bot_name.conf
以下をファイルに貼り付けて、置き換えます your_username
サーバー上のsudonon-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
このスクリプトの機能について簡単に説明します。
The start on
と stop on
行は、ボットをいつ開始および停止するかをUbuntuに指示します。 The chdir
行は、実行時にどのディレクトリにあるかをUpstartに指示します exec
コマンド。実際にボットを起動します。
The env
Rubyアプリケーションが設定ファイルの場所を認識できるように、lineが必要です。 The setuid
と setgid
Upstartに特定のユーザーとしてボットを起動するように指示します。 これらの行が省略されている場合、Upstartはボットをルートとして起動します。
The respawn
lineは、ボットが中断またはクラッシュした場合にボットを再起動するようにUpstartに指示します。 The respawn limit
ボットが5秒間に10回クラッシュした場合に、Upstartが再出現するのを防ぎます。これは、より大きな問題を示しています。
次のコマンドを使用して、構文チェックプログラムである組み込みの linter を使用することにより、このスクリプトの構文が正しいことを確認できます。
sudo init-checkconf /etc/init/lita-your_bot_name.conf
構文が正しい場合は、次の出力が表示されます。
File /etc/init/lita-your\_bot\_name.conf: syntax ok.
構成ファイルの構文を確認したら、次のコマンドを入力して、Upstartスクリプトでボットを起動します。
- sudo start lita-your_bot_name
次のような行が表示されます。
lita-your_bot_name start/running, process 1234
ボットはまもなくIRCチャネルに参加するはずです。 これでサーバーからログアウトでき、ボットは引き続き実行されます。
結論
このチュートリアルでは、プラグインとUpstartスクリプトを使用してLitaをインストールおよび構成しました。 一意のボット名とUpstartスクリプトを使用すると、さまざまなプラグインを使用して、さまざまなチャットルームで複数のボットを実行することもできます。
企業全体が、このようなチャットボットからITインフラストラクチャ全体を実行しています。 カスタムフックからJenkinsなどの一般的なCIビルドサービス、GitLabsリポジトリの制御まで、チャットボットを使用すると、作業を簡素化、合理化、自動化できます。