まぁ、別にJenkinsでも似たようなツールであれば何でも良いんですが、
RundeckのUIがイケてる感じがしたので選んでみました。
Rundeck の機能
Rundeckは主に以下のような機能を備えています。色々出来る万能ツールです。
ですので、色々な用途で使えるかと思います。
- コマンドの分散実行
- 拡張可能な実行システム(デフォルトでは SSH)
- マルチステップワークフロー
- ジョブの定義と実行(即時 or スケジュール)
- コマンドとジョブを実行するための GUI
- ロールベースの ACL(LDAP/ActiveDirectory 連携可能)
- 履歴とログ監査
- 外部のホスト管理ツールとの統合(open integration)
- CUI インタフェース
- Web API
考えてみた用途
障害時の調査・復旧手順をRundeckに入れる。
何が良いか。
1. 今までの複雑な手順書ベースの作業がボタンを押すだけの単純作業となり、その結果、
- 素早い調査・復旧となり品質向上します。
- 誰でも同じ品質で実行できます。(オペミス減ります)
- 複雑な手順書を見ながら実行する。と言ったネガティブ感が無くなります。
- 工数も削減出来る(か、どうかはRundeck化工数次第です。*後述)
2. 実行結果(標準出力)も残せるので、証跡が残せます。SOC2的にも良い?
- 誰がいつどんな作業をして、どんな結果だったか。とか残ります。
- お客様にも作業記録と結果を時系列で説明が出来ます。
- AD連携可能なので個人識別可能です。
3. API連携可能っぽい?(確認中)
- 監視ツールとかAPI経由で実行可?
- SlackとかBacklogに自動投稿可?
- それができたら検知 => 対応 => 報告も自動化可能?(やりすぎ?)
特に良いこと
多種多様の環境下で力を発揮します。
特に数百のお客様やプロジェクト、数千のインスタンスを抱えている環境だと、個毎に環境や前提が異なります。
統一しようとしても、難しい。そんな場合に、Rundeckはそれらの環境を抽象化してくれます。
Rundeck無いときー
Rundeck有るときー
これは作り込みさえしておけば、どんなに環境が増えてもやることは同じ(ボタンを押すだけ)で「何が良いか」の恩恵が受けられます。
注意点
Rundeckに色々な手順を突っ込むのは良いのですが、あまり数を突っ込んだり、複雑な手順を入れるとカオス状態になります。
それでは手順がクローズされただけで、誰もメンテ出来ない(いや、断固としてしたくない)状態になります。
複雑な手順=そもそものシステム設計が複雑。ですので、設計段階の問題になりそれがカオスを生み出します。
複雑に作るよりシンプルに作る方が難しいですが、ステークホルダのWin-Winを考え、シンプルな設計を心がけましょう。
まとめ
うまく作ればコスト削減にも繋がり、ステークホルダとWin-WInになるかもしれないですね!
と、言う事で、Rundeckオススメです!
Enjoy! Rundeck Life!!