#1. 背景
もともと自動化ツールとしてjenkinsを使用していました。
実際4年ほど前からjenkinsにはお世話になりっぱなしで良いツールでしたが
プラグイン管理が大変だったり、イケてない部分もあったので既に社内で実績のあるrundeckに移行する形になりました。
また同時にcronで管理していたbatchに関してもrundeckに移行しました。
詳細は後述ですが、対象が複数インスタンス存在してもnodeによる集約管理できるため、インスタンス毎のcron設定から開放されました。
#2. メリット(移行理由)
実際に検証・導入した結果のメリットが下記になります。
※詳細は後述。
- 柔軟なジョブ作成が可能。
- 複数ノードを一括管理できる。
- GUIがリッチ
###2.1 柔軟なジョブ作成が可能。
2.1.1 様々な種別のステップを登録可能
上記がjob内で管理するstep一覧ですが、コマンド、スクリプト、jobのインポートなど自在に実行できます。
stepとはジョブ内で管理するタスクのようなもので、複数定義可能です。
2.1.2 ジョブ内で管理する多様なワークフロー
図1のタブにNodeStepsとWorkflowStepsとありますが、これはstep実行のフローに関する設定で、
下記のようにノードが複数存在する場合(web01,web02)ノード毎に実行するか、ステップごとに実行するかを選択できます。
webサーバ01
|_step1
|_step2
|_step3
webサーバ02
|_step1
|_step2
|_step3
step1
|_webサーバ01
|_webサーバ02
step2
|_webサーバ01
|_webサーバ02
step3
|_webサーバ01
|_webサーバ02
2.1.3 柔軟なハンドリング
また下記のようにステップAが成功したらステップBへ、失敗したらステップEへなどのハンドリングも可能です。
|-- success---> stepC
|----- success --> stepB ----|
stepA -----| |
| |-- error ---> stepD
|
|----- error ---> stepE
###2.2 複数ノードを一括管理できる。
スケジューラで複数インスタンスに対してbatch処理を実行する、
複数インスタンスに対してデプロイする、といった複数インスタンスに対してジョブを実行したいということは
多いですが図2で指定が可能です。
###2.3 GUIがリッチ
rundeckの使用は初めてでしたが、豊富なGUIのため特に何も調べることなくジョブの作成などが行えました。
もちろんCLIも用意されています。
図3はスケジューラに関する設定ですが、ポチポチと押しながらスムーズに設定が可能です。
また図4のように慣れ親しんだcronのような設定も可能です。
終わりに
短いですが、以上がrundeckに移行した理由になります。
AWSとの親和性も高く組み合わせることで様々なことを自動化できそうです。
また新たな発見があれば記載したいと思います。