Kompira Enterprise 上のデータをバックアップする (その3)

「Kompira Enterprise 上のデータをバックアップする (その1) 、 (その2)」では、Kompira Enterprise 上のデータを JSON データとしてバックアップする方法をご紹介しました。

JSON データは単一ファイルのため、単純に保存しておく場合や、別の環境に移行させる場合には扱いやすいのですが、各オブジェクトの差分を見るといった用途には適していません。
この問題を解決するために、本稿では “/opt/kompira/bin/manage.py” のサブコマンド “export_dir” を使って、Kompira Enterprise サーバのファイルシステム上に Kompira Enterprise 画面上のデータをバックアップする方法をご紹介します。

また、取得したバックアップデータを Kompira Enterprise サーバのファイルシステム上から Kompira Enterprise 画面上にリストアする “/opt/kompira/bin/manage.py” のサブコマンド “import_dir” についてもご紹介します。

※ 本稿は Kompira Enterprise 1.6系に準拠した画像を用いています。


動作確認環境

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

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

または

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

または

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

事前準備として、以下のようにディレクトリ “jobflows” の中にジョブフロー、アカウント情報、ノード情報のオブジェクトを作成します。

バックアップの取得

以下は、”/opt/kompira/bin/manage.py export_dir” を用いたバックアップの取得例です。

$ /opt/kompira/bin/manage.py export_dir /root/jobflows

ここでは、元のディレクトリ階層に対応して、カレントディレクトリ以下にディレクトリおよびファイルが作成されます。今回の例では、上記コマンドを実行した場所に root ディレクトリが作成されていますので、実際に中身を見ていきましょう。以下に3つのコマンド例とその出力結果を示します。

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

$ cat root/jobflows/接続アカウント.AccountInfo
user: ''
password: ''
keyfile:
  name: null
  data: null
passphrase: ''
$ cat root/jobflows/jobflow1
print("hello, world")
$ cat root/jobflows/.jobflow1
fields:
  multiplicity: null
  defaultCheckpointMode: false
  defaultMonitoringMode: NOTHING

“接続アカウント” のような Kompira Enterprise 上の各オブジェクトは、オブジェクトの型に応じたフィールド値を持つ YAML ファイルとして出力されます。
ただし、ジョブフローや Wiki など、一部のオブジェクトでは「代表フィールド」が内部で設定されています。このようなオブジェクトがエクスポートされた場合は、代表フィールドの内容を持つ単一のファイルと、それ以外のフィールドの値を持つ「. (ドット)」始まりのファイルの2つが出力されます。

バックアップデータからのリストア

以下は、”/opt/kompira/bin/manage.py import_dir” を用いたバックアップデータからのリストア例です。

$ /opt/kompira/bin/manage.py import_dir root/jobflows

このとき、特にリストア先のディレクトリを指定しない場合には、Kompira Enterprise 画面上の “/” 以下に展開されます。

リストア先を明示的に指定する場合には --directory オプションを利用します。
以下の例ではバックアップしたジョブフロー、アカウント情報、ノード情報のオブジェクトをKompira Enterprise 画面上の “/root/restore” に展開しています。

$ /opt/kompira/bin/manage.py import_dir --directory=/root/restore root/jobflows

例えば、ジョブフローをはじめとする Kompira Enterprise 上のオブジェクトの差分管理をしたい場合は、”export_dir” により出力されたディレクトリを git リポジトリに含めるとよいでしょう。

もし Kompira Enterprise オブジェクトで権限情報を設定していて、それらの情報も含めて保存したい場合は “export_data” を併用してください。

  •  “export_data” で出力したジョブフローの情報 (一部抜粋)
{
    "id": 78,
    "owner": "root",
    "fields": {
        "source": "print(\"hello, world\")",
        "multiplicity": null,
        "defaultCheckpointMode": false,
        "defaultMonitoringMode": "NOTHING"
    },
    "user_permissions": {},
    "group_permissions": {},
    "created": "2021-05-27T10:48:28.828748+09:00",
    "updated": "2021-05-27T15:27:51.492894+09:00",
    "display_name": "jobflow1",
    "description": "",
    "parent_object": "root/jobflows",
    "objpath": "root/jobflows/jobflow1",
    "typepath": "/system/types/Jobflow"
},

このように “export_data” で出力した場合には、パーミッション情報 (user_permissions、group_permissions) もあわせてエクスポートされます。

TOP