column

Kompiraジョブフローの基礎 既存のスクリプトをKompiraで利用する

運用の現場では日々の作業を行うために、さまざまなスクリプトを利用されていると思います。Kompiraで利用する「ジョブフロー」もスクリプトの一種ですが、Kompira用の特別な記法で処理を記述する必要があります。

この記事では、いままで運用で利用しているスクリプトをKompiraに取り入れて実行する方法を紹介します。

スクリプトの例として、ファイルの退避を行うスクリプトを考えてみます。例えば、ログファイルは障害分析などに必要な直近の分はサーバー上に置いておきつつ、logrotateなどでアーカ イブされた古くなった分についてはディスク容量の逼迫を避けるため、ファイルサーバーなどに保存用に退避させておきたいなどの運用があります。

まずは以下のようなログファイルを退避させるシェルスクリプト”movelogfile.sh”を使っているとします。これは複数の指定のフォルダに作成される”*.log”という名前のファイルを、ファイルサーバーの指定のパスに移動する処理を行います。ここでは、ファイルの移動にscpコマンドを利用していますが、パスワードの登録を求められないように証明書認証ができるように設定しておく必要があります。

これを深夜2:00に定期的に自動実行する場合では、crontabに次の様に登録しているでしょう。

 

「スクリプトジョブ」オブジェクトの作成

さて、上記の処理をKompiraのスクリプトジョブの機能を使って実行する方法を説明していきます。ここではサーバー側でファイル移動のスクリプトを実行するため、「スクリプトジョブ」型のオブジェクトを作成します。以下の条件でオブジェクトを作成します。
名称: ファイルのバックアップ
型:スクリプトジョブ

ファイルのバックアップ

ここで「+」ボタンをクリックすると、次のようなソースを入力する編集画面が表示されます。

ファイルの移動

「スクリプト」欄にファイル移動のためのシェルスクリプトを記載します。ここでは上記の”movelogfile.sh”のソースをそのまま転記してください。

 

スクリプトの実行

スクリプトを実行するサーバーとそのアカウントを指定する必要があります。ここでは事前準備で作成した”server1″、”アカウント1″を指定して「実行」をクリックします。もしスクリプトが引数を取る場合には「コマンドライン引数」の欄に記載してください。

ファイルの移動

ここで実行ボタンをクリックすると

1. 「スクリプト」に記載したコードを一時ファイルにして、指定の「実行ノード」に転送
2. 転送したファイルに実行権限を付与
3. スクリプト実行
4. 作成した一時ファイルを削除

上記のような処理が順次実行されます。

ここではKompiraの「スクリプトジョブ」型のオブジェクトを利用して、サーバー側にシェルスクリプトの一時ファイルを転送して実行するようにしました。もちろん、サーバー側に事前に用意したスクリプトを [ “backup.sh” ] のようにして起動するジョブフローを作っても同様の事ができますが、ジョブフローをメンテナンスする際に、各サーバーに配置されたシェルスクリプトを置き換えるよりは、「スクリプトジョブ」型を利用する方が集中して管理できるメリットがあります。
また、このスクリプトをcrontabに登録するのと同じように定期的に実行したい場合は「スケジューラを使って定期的にジョブを実行する」で紹介したスケジューラ機能を使用することで、同様の定期的な実行をさせることができます。

スクリプトジョブの単体での実行だけでなく、Kompiraのジョブフローの中からスクリプトジョブを呼び出し、結果をさらにジョブフローで扱うということも可能です。
ジョブフローからのスクリプトジョブの実行例は、今後改めてコラムとしてご紹介する予定です。