Rundeckとは
Rundeckとは、PagerDuty, Inc.によって開発されたジョブ管理のソフトウェアである。ジョブの作成、実行、管理、スケジューリング等をすることができる。Rundeckは、Javaで動作するため多くのOSで利用可能である。Linuxでは、Ubuntu、Debian、Red Hat Enterprise Linuxなどのディストリビューション用のパッケージが配布されている。
Rundeckには、オープンソース版の「Rundeck Community」と、有償のエンタープライズ版の「Rundeck Enterprise」がある。オープンソース版の「Rundeck Community」は、Apache Software License 2.0のライセンスのもとで公開されている。エンタープライズ版の「Rundeck Enterprise」では、ジョブのフローを視覚的に表示したり、ユーザ管理/ACL管理のUIを利用したりすることが可能なため、Rundeckをより便利に使うことができる。ただ、オープンソース版でも、充分実用できる機能を備えている。
Rundeckの特徴
Linuxでは、古くからジョブ管理ツールとしてcronが使われていた。しかし、cronは小規模なジョブ管理向けであるため、登録されたジョブ数が増えると管理が難しいという課題があった。Rundeckは、cronの課題を解決できるジョブ管理ツールとして、以下のような特徴がある。
WEBインタフェースでジョブの設定・履歴の確認が可能
Rundeckは、WEBインタフェースからジョブやノードをまとめて管理することができる。Rundeckを利用する際は、ジョブやノードを組み合わせてプロジェクトという単位で管理し、このプロジェクトが最低1つは必要である。また、RundeckのWEBインタフェースでは、ジョブの実行履歴を簡単に確認することができる。
複数サーバに渡るジョブの実行が可能
Rundeckでは、ジョブを実行するノードにsshでログインして処理を実行する。そのため、複数のサーバ間でジョブを実行することができる。
複数の形態でジョブの実行が可能
Rundeckは、コマンド・スクリプトなど複数の形態で実行することができる。また、標準で有効化されているプラグインを使って、Ansibleプレイブックを実行することができる。プレイブックは、作成済みのファイルを利用したり、WEB UI上で作成したりすることも可能である。
ジョブ同士の関係性の管理
例えば、ジョブ1の実行後にジョブ2を実行するなど、ジョブ同士を関連付けて実行することができる。ジョブ1が行われなかった場合やエラーが出た場合、ジョブ2を実行しないなどの処理も可能である。
ジョブの重複実行を抑制
ジョブの処理が長時間に及び、同じ処理が重複して実行される場合、重複したジョブを抑制することができる。
ジョブの手動実行も可能
Rundeckは、スケジューリングされた自動のジョブだけではなく、手動でのジョブの実行も可能である。ジョブの作成方法はRundeck調査報告書に掲載している。
多様な通知種別
Rundeckには、多様な通知方法が用意されている。デフォルトではメール・WEBフックの2通りだが、プラグインを追加することで、SlackやRocket.Chatにも対応している。また、ジョブ実行時の様々なタイミングで、通知を送ることができる。そのため、複数台のサーバのバッチ処理を管理・実行がしやすく、複雑な連携処理などの管理コストを削減することができる。
以上のように、Rundeckは従来のcronと比較すると非常に機能性が高くなっている。
Rundeckのメリット
Rundeckを導入することで、バッチ処理を一括管理できるということ以外にも、以下のようなメリットがある。
バッチ処理管理の負担軽減
Rundeckでは、以下のような問題を解決することができる。
- 通常、複数のジョブの連動や重複実行を禁止にする処理などは、バッチプログラムの中で制御・実装する必要がある。
- 上記のような場合、バッチプログラムで問題が発生しやすく、作業に手間がかかる。
Rundeckでは、システム的にこれらの問題を解決することができ、バッチプログラムの作成時、本来の処理に専念することができるというメリットがある。また、これによってプログラムがシンプルになり、後の管理の効率が上がることで、プログラマのような技術者や管理者の負担を軽減することができる。
柔軟な通知とわかりやすい画面
Rundeckは、メールだけでなくチャットなどの現代的なツールに通知することもできる。そのため以下のようなメリットがある。- 障害の発生にすぐに気が付くことができる。
- 重要なジョブは実行開始・終了の両方を受け取る、実行の失敗時に通知を受け取るなど、通知を行うタイミングをジョブごとに変更することができる。
また、Rundeckから実行されたジョブは、WEB UIから成否判定をすることが可能である。実行したジョブがどこで失敗したのかをログですぐに判断できるため、その後のリカバリフローにすぐ移ることができる。
Ansibleとの親和性の高さ
Ansibleとは、RedHatが開発したオープンソースの構成管理ツールである。Ansible単体では、コマンドラインの操作や専用のGUIソフトウェアが必要だが、Rundeckを使用することで、AnsibleをWEBから実行し、結果を確認することができる。また、Ansibleとその他の日時処理などを、まとめて管理することができ、Ansibleだけでは対応が難しい範囲もカバーしながら運用することが可能である。
Rundeckの用途
Rundeckの主な用途例としては次のようなものがある。
セキュリティアップデートや設定変更
構成管理ツールのAnsibleでは、特定のソフトウェアのアップデートや、設定の変更、再起動などを行うことができるが、自動実行の仕組みがない。RundeckとAnsibleを連携することで、比較的安全・効率的にアップデート作業を実行することができる。また、アラートの機能もあるため、メールやチャットなどで処理の失敗に気付くこともできる。
データの加工処理
大量のログや監視データなどを加工する場合や、1つのデータから用途に応じて複数のフォーマットのデータを生成するような場合、バッチ処理が利用される。このような場合にRundeckを使うと、加工の段階や加工を行うホストに応じて、段階的にジョブを実行することができる。また、このようなケースでジョブが多重実行されると、意図せぬ加工が行われる可能性があるが、Rundeckはそのリスクを抑制することができる。
デージーネットの取り組み
Rundeckは、現状、日本語化が追いついていない状態である。デージーネットでは、実際の業務での利用を実現するため、日本語の言語ファイルの更新などを進めていきたいと考えている。また、デージーネットでは、Rundeckのインストール方法や使い方について調査を行い、調査報告書で公開している。調査報告書は無料でダウンロードが可能である。
【カテゴリ】:情報共有  オープンソースソフトウェア  
【Webセミナー】Rocket.Chatだけじゃない!OSSビジネスチャットの最新情報
日程: | 12月19日(木)Webセミナー「BigBlueButton」を使用します。 |
内容: | Rocket.Chatの機能制限でお困りの方も必見!ライセンスフリーで利用できるOSSのビジネスチャットを紹介します。 |
ご興味のあるかたはぜひご参加ください。 |