Kompira

Menu Menu

Enterprise Technical information

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

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

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

 


 

環境情報

本稿は、以下の環境で検証しています。

 

項目 バージョン
OS CentOS Linux release 7.7.1908
Kompira ver.1.5.5.post7

 


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

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

 

#!/bin/sh

# 移動対象のログファイル名のパターン
ext='*.log'

# 転送先のアカウントとアドレス(scpで証明書認証が出来る事)
$user='admin'
$host='192.168.1.1'

# 特定拡張子ファイルを指定ディレクトリに移動する関数
# MoveFile 移動元ディレクトリ 移動先ディレクトリ

MoveFile(){

  FromDir=$1
  ToDir=$2

  # 移動元ディレクトリの存在確認
  if [ ! -d $FromDir ]; then
    echo "ERROR: 移動元ディレクトリ[$FromDir]が存在しません。"
    exit
  fi

  # シェルスクリプト内で対象ディレクトリへ移動
  cd $FromDir

  # 指定のパターンを持つファイルの検索
  for FromFile in `find . -name "$ext"`
  do
    # 移動先
    Name=`echo $FromFile | sed -e  's/\..*\///'`
    ToFile=$ToDir/$Name

    # ファイル移動
    echo "[$Name]を[$ToDir]に移動します。"
    scp  $FromFile $user@$host:$ToFile

  done

}

# 処理メイン
echo "################## START ######################"
MoveFile /home/user/project1/ /home/user/log
MoveFile /home/user/project2/ /home/user/log
MoveFile /home/user/project3/ /home/user/log
echo "################### END #######################"

exit

 

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

 

0 2 0 0 0 /usr/local/bin/movelogfile.sh

 

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

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

 

ファイルのバックアップ

 

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

 

ファイルの移動

 

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

 

スクリプトの実行

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

 

ファイルの移動

 

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

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

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

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

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

スタートガイド

Kompiraジョブフローの基礎

ジョブフローの簡単な例

Kompiraの機能

外部との連携