「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) もあわせてエクスポートされます。