【ジョブスケジューラ Rundeck】プロジェクトの追加、ジョブの新規生成

わたなべです。今月は社内Wikiの焼き直し記事です。
(PSVRで忙しくてサボりました)(Farpoint楽しいです)

先日、cronの処理が失敗したことに気づかず、
もう少しキチンと管理すべきだろうと改善することにしました!

今まではメールアラートのみだったので、
最低限失敗通知と履歴管理があるツール…ということで、
JenkinsやStackStorm等検討した結果、
ジョブスケジューラのRundeckを導入することにしました。

今回の記事では初期設定の一部(プロジェクトの追加、ジョブの新規生成)をまとめました。

Rundeckとは

ものすごいcronです!
詳しくはheartbeatsさんロックオンさんの記事を参照願います。
今のところ弊社では履歴管理、ステータスチェックのためにしか使用していませんが、
ジョブを構造化したり、複数サーバーに対して処理を記述できたりと、使いこなし甲斐がありそうです。
(さっき2.8.2にバージョンアップしたら、ステッカーあげるよって出たので申し込んでみました…わくわく)

セキュリティ

色んなサーバーにssh接続して任意のコマンドを実行できるため、
それなりのセキュリティは確保すべきです。
デフォルトではID・パスワードログインで、設定ファイルにべた書きなので、
少なくとも暗号化、出来れば外部認証を入れたいところです。
nginx経由でGoogle認証を実装とかやりたいです。
弊社は今のところ設定ファイル暗号化+気休めのhttps化+社内IP制限で運用しております。

冗長化

また、ジョブの実行をRundeckが行うわけなので、単一障害点になりえます。
今のところMackerel監視しかしていないのですが、
ジョブが実行されないとサービスに影響が出る等問題がある場合は、
Rundeck自体の冗長化等も検討すべきでしょう。

新規プロジェクト生成

さて、ここからは社内Wikiのコピペなので画像が多くなります。
新規プロジェクトの生成です。


プロジェクトを生成すると、Rundeckサーバー内に設定ファイルが生成されます。
接続するサーバーのことをノードと呼びます。ノードは以下のファイルに記述します。
/var/rundeck/projects/{プロジェクト名}/etc/resources.xml
弄るのは以下の値です。

name="momoka.oratta.net" #ノード名
description="杏果さーばー" #説明
hostname="momoka.oratta.net" #アドレス
osName="CentOS" #メモ
osVersion="6.9 (Final)" #メモ
username="rundeck" #接続ユーザー

ジョブ生成

ジョブを新規生成します。


Workflowの設定をします。
基本はNodeFirstにして、1サーバー1ステップ毎に実行することが多くなるかと思います。

弊社ではノードサーバーにRundeckユーザーを作成して、そのユーザーで処理を行っています。
どうしてもroot権限が必要な処理だけsudo権限を付与しています。


失敗時にSlack通知を設定することをルール化しています。Slack通知はプラグインを導入しました。

スケジュール指定ですが、cronの書式が拡張されており、秒と年が追加されています。

以上、簡単ですがRundeckの導入記事でした。

作者 Jun Watanabe

2010年11月ORATTA入社。エンジニアリーダーと名刺には書いてました。

コメントを残す