前書き
多くの最新のDevOpsチームは、チャットルームの周囲にますます多くのインフラストラクチャを配置しています。 商用オプション(HipChatやSlackなど)からDIYオプション(IRCやJabber / XMPPなど)まで、多数のチャットルームを利用できます。 このチャットルームインフラストラクチャの背後にある主な動機の1つは、チャットルームボットによるものです。これは、DevOpsチームが作業をより速く、より効率的に行うために使用します。 この動きは時々ChatOpsと呼ばれます。
この記事では、GitHubのHubotに大きな影響を受けたボットhttps://www.lita.io/[Lita]のインストール方法の概要を説明します。 Litaは完全にRubyで記述されており、HipChat、Campfire、IRCなどの多くの種類のチャットルームで動作します。 そのユーティリティは、主に追加できるプラグインから来ています。プラグインは、Google検索の実行やWebサイトの展開などを行うことができます。
このチュートリアルでは、独自のUbuntuサーバーにLitaをインストールし、IRCチャンネルに接続して、プラグインのインストールを開始する手順を説明します。
前提条件
このチュートリアルを実行するには、次のものが必要です。
-
Ubuntu 14.04ドロップレット1つ。
-
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04 [このチュートリアル]に従って設定できるsudo非ルートユーザー。
-
IRCで使用するためにLitaを設定するため、IRCに自分で接続してチャンネルに参加する必要もあります。
IRCにアクセスするにはいくつかの方法があります。 https://www.digitalocean.com/community/tutorials/how-to-run-an-unrealircd-chat-server-on-debian-7 [独自のIRCサーバーをセットアップ]ができますが、 Litaを試してみると、パブリックサーバー(freenode、IRCnet、EFnetなど)を使用する方が簡単です。
特にFreenodeには、単純なhttps://webchat.freenode.net/[web chat]が用意されているため、IRCクライアントをダウンロードしなくても接続できます。 使用するには、一意のニックネームとチャンネル名を選択し、[接続]をクリックします。 このチュートリアルでは、Freenodeを使用していることを想定しています。
ステップ1-Litaのインストール
このステップでは、Litaとその依存関係をインストールします。
Litaが記述されている言語であるRubyをインストールする必要があります。 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
最後に、RubyのパッケージマネージャーであるRubyGemsを使用してLitaをインストールします(APTがUbuntuのパッケージマネージャーであるように)。 APTはコマンド `+ apt-get `を使用します。 RubyGemsはコマンド「 gem +」を使用します。
LitaとLita IRCアダプターをインストールします。
sudo gem install lita
sudo gem install lita-irc
ステップ2-Litaの構成
Litaのソフトウェアがインストールされました。この手順では、ボットを作成し、IRCチャンネルに接続するようにセットアップします。
次のコマンドは、新しいボットを作成します。 `++`をボットの一意のニックネームに置き換えます。
lita new
このコマンドは、homedirにディレクトリ「〜/ +」も作成します。このディレクトリには、「 Gemfile 」と「 lita_config.rb 」の2つのファイルが含まれます。 ` Gemfile `は、ロードするプラグインをRubyに指示します。 ` lita_config.rb `は、すべてのプラグイン構成設定が保存される場所です。 ` lita-irc `プラグインの場合、 ` lita_config.rb +`にはIRCサーバー、チャンネル、ニックネームなどに関する情報が含まれます。
Litaを起動する前に、これらの構成ファイルを編集して、ボットがIRCに接続する方法を認識できるようにする必要があります。 まず、新しいディレクトリに移動します。
cd ~//
nanoまたはお好みのテキストエディターを使用して編集するために、 `+ Gemfile +`を開きます。
nano Gemfile
行 #gem" lita-irc "+`を探し、行の先頭にある `+#
`を削除して、コメントを外します。
修正されたGemfileの抜粋
. . .
# Uncomment to use the IRC adapter
. . .
次に、ファイルを保存して閉じます。
次に、 `+ 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 = ""
. . .
さらに少し下に、 + 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 =
. . .
次に、ファイルの最後で、最後の行「+ end +」の前に次の行を追加します(下に強調表示)。
インデントを正しくコピーし、 `+ config.adapters.irc.channels `および ` config.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"
end
ファイルを保存して閉じます。
「lita-irc」プラグインに渡すことができるオプションの完全なリストについては、https://github.com/jimmycuadra/lita-irc [lita-ircプラグインのGitHubページ]をご覧ください。
ステップ3-チャンネルへの接続
このステップでは、ボットを起動して管理者を設定します。
選択したIRCクライアントまたはWebクライアントを使用してIRCに接続していることと、Litaが参加するチャンネルにいることを確認してください。 次に、ボットを開始します。
lita start
多くの出力が表示されます。 しばらくすると、指定したIRCチャネルにボットが参加します。
この時点では、ボットに何を行うかを指示していないため、まだあまり有用ではありません。 いくつかの追加機能を追加する前に、ユーザーを管理者として定義しましょう。 これを行うには、ボットにIDを尋ねる必要があります。 IRCチャネルに次の行を送信します。
users find
ボットは次のような応答を返します。
IRCでのリタの反応
your_irc_nickname<(ID: , Mention name: your_irc_nickname)
IDをコピーし、サーバーのターミナルで「+ CTRL + C +」と入力してLitaを停止します。
`+ 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
end
ファイルを保存して閉じます。
ステップ4-プラグインの追加
この時点で、ボットはIRCに接続できますが、それでできるのはそれだけです。 この手順では、サンプルプラグインをインストールして、便利な機能を追加します。
Rubyで独自のプラグインを作成できますが、選択できるhttps://www.lita.io/plugins[premade plugins]は数百あります。 lita-dig plugin(https://www.digitalocean.com/community/tutorial_series/an-introduction-to-例としてmanage-dns [DNS]レコードルックアッププラグイン)が、プロセスは他のものと非常に似ています。
まず、 `+ lita-dig +`プラグインをインストールしましょう。
sudo gem install lita-dig
次に、編集のために `+ Gemfile +`を開きます。
nano Gemfile
ファイルの最後に次の行を追加します。
gem "lita-dig"
ファイルを保存して閉じ、ボットを再起動します。
lita start
それでおしまい! ボットが再接続したら、次の行をIRCチャネルに送信します。
dig
ボットは、「;」のようなもので始まる数行で応答します。 8.8.8.8:53(114バイト) `から受信した回答。 これは、プラグインが機能していることを意味します!
ステップ5-Upstartスクリプトの作成
これまでのすべてのステップで、ボットを手動で起動する必要がありました。 これはテストには適していますが、より良い解決策があります。 このステップでは、ボットを管理するUpstartスクリプトを作成し、ボットの開始、停止、再起動を簡単にします。 Upstartスクリプトの詳細については、https://www.digitalocean.com/community/tutorials/the-upstart-event-system-what-it-is-and-how-to-use-it [スタートアップチュートリアル]。
まず、 + / etc / init`に
+ lita-.conf`というファイルを作成します。
sudo nano /etc/init/lita-.conf
次をファイルに貼り付けて、「++」をサーバー上のsudo非ルートユーザーのユーザー名に置き換えます。
your_bot_name.conf ’> / etc / init / lita-.conf
start on runlevel [2345]
stop on runlevel [^2345]
chdir /home//
env HOME=/home/
setuid
setgid
respawn
respawn limit 10 5
exec lita start
このスクリプトの機能について簡単に説明します。
`+ start on `と ` stop on `の行は、ボットを開始および停止するタイミングをUbuntuに指示します。 ` chdir `行は、実際にボットを起動する ` exec +`コマンドを実行するときに、どのディレクトリにあるかをUpstartに伝えます。
Rubyアプリケーションが設定ファイルの場所を認識できるように、「+ env 」行が必要です。 ` setuid `と ` setgid +`は、特定のユーザーとしてボットを開始するようUpstartに指示します。これらの行を省略すると、Upstartはボットをルートとして起動します。
`+ respawn `行は、中断またはクラッシュした場合にボットを再起動するようUpstartに指示します。 ` respawn limit +`は、ボットが5秒で10回クラッシュした場合にUpstartが再スポーンするのを防ぎます。これは、より大きな問題を示しています。
次のコマンドを使用して、構文検査プログラムである組み込みの_linter_を使用して、このスクリプトの構文が正しいことを確認できます。
sudo init-checkconf /etc/init/lita-.conf
構文が正しい場合、次の出力が表示されます。
リンター出力を修正する
File /etc/init/lita-.conf: syntax ok.
構成ファイルの構文を確認したら、次のコマンドを入力して、Upstartスクリプトでボットを開始します。
sudo start lita-
次のような行が表示されます。
アップスタート出力
lita- start/running, process 1234
ボットはまもなくIRCチャンネルに参加するはずです。サーバーからログアウトでき、ボットの実行が継続されます。
結論
このチュートリアルでは、プラグインとUpstartスクリプトを使用してLitaをインストールおよび構成しました。 一意のボット名とUpstartスクリプトを使用すると、異なるプラグインを使用して、異なるチャットルームで複数のボットを実行することもできます。
企業全体が、このようなチャットボットからITインフラストラクチャ全体を実行しています。 カスタムフックからJenkinsなどの一般的なCIビルドサービス、GitLabsリポジトリの制御まで、チャットボットを使用して作業を簡素化、合理化、自動化できます。