テーブル内の情報を選択して処理を実行する

複数サーバーに対してコマンドを実行する」ではテーブルに登録した全ての機器に対する一括処理を行う方法をご紹介いたしましたが、特定機器に対して処理を行う場合は一体どうすれば良いでしょうか。

機器の数が限られている場合は「ジョブフローを実行するフォームを作成する」に記載の「オブジェクトを指定させる場合」の手順にてフォームからテーブル内の機器を選べるようにしても良いですが、数が増えるとセレクトボックスが長くなり、対象機器が見つかりにくくなってしまいます。

こういったケースにおいて有用な機能として、今回の記事ではテーブルの関連オブジェクト機能を活用し、選択した機器を対象にジョブフローを実行する方法をご紹介します。


動作確認環境

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

ソフトウェア バージョン
Kompira Enterprise 1.5.5.post7
OS CentOS 7.7.1908

または

ソフトウェア バージョン
Kompira Enterprise 1.6.2.post4
OS CentOS 8.2.2004

または

ソフトウェア バージョン
Kompira Enterprise 1.6.8
OS CentOS Stream 8

テーブルの作成

まずは機器情報を格納するためのテーブル「サーバー一覧」を作成します。Kompira Enterprise 上で機器情報を取り扱うためのオブジェクトとしてノード情報型が用意されておりますので、テーブルのオブジェクト型には「ノード情報」を指定します。
テーブルを作成したら、処理対象となる機器情報を追加してください。

※以下の画像は Kompira Enterprise バージョン 1.6.8 時点のものです。他のバージョンでは項目が異なることがあります

上記の例では「サーバー一覧」テーブルに「server1 ~ server3」の3台のサーバーを登録しています。
以降の説明はこの3台のサーバーが登録された前提とします。

ジョブフローの作成

本記事ではサンプルの題材として、機器情報に登録されたホスト名、IP アドレスを表示するジョブを作成します。
下記の内容で、新規ジョブフロー「関連ジョブ」を作成してみましょう。

| servers | # ノード情報型のオブジェクト配列を受け取る

{ for sv in servers |
    print(sv.hostname, sv.ipaddr)  # ノード情報型のフィールド値を表示
}

作成できたら、パラメータ「servers」に機器情報を配列で渡し、動作確認をしてみましょう。
機器情報の配列は、例えば以下のように [./サーバー一覧/server1 , ./サーバー一覧/server2 , ./サーバー一覧/server3] と記載します。

上記の例では、実行結果は次のようになります。

関連オブジェクトの追加

ここまでの手順でテーブル・ジョブフローの用意が出来ましたので、実際に関連オブジェクトの設定をしてみましょう。
設定するにはテーブルの編集画面を開き、「関連オブジェクト」の欄のプルダウンから先ほど作成したジョブフローを選択し、「保存」をクリックします。

設定保存後、テーブル内の機器情報を選択し、「その他」→「ジョブフローの実行」 をクリックします。

実行対象オブジェクトの確認画面が開きますので、「実行」をクリックします。

以上の手順によりジョブフローが実行され、ジョブフローの動作確認時と同様の内容が表示されます。

応用例

本記事の内容を利用すると、機器に対するオペレーションをテーブル上から簡単に実行することが可能となります。
例えば、テーブル上で選択した機器に対してパッケージアップデートを実施できるようにするには、次のようなジョブフローを関連オブジェクトとして登録します。
(Red Hat 系の OS 向けの例となります)

| servers |

{ for sv in servers |
    [ 
        __node__ = sv,
        __sudo__ = true
    ] -> 
    ["yum -y update"]
}
TOP