Technical information

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

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

JSONデータは単純に保存しておいたり、別の環境に移行させる場合は単一ファイルとなっていて扱いやすいのですが、各オブジェクトの差分を見るといった用途には適していません。
今回は”/opt/kompira/bin/manage.py”のサブコマンド”export_dir”を使って、Kompiraサーバのファイルシステム上にKompira上のデータを展開する方法をご紹介します。

実行例の事前準備として、「Kompira上のデータをバックアップする(その2)」と同様に、ディレクトリ”jobflows”の中にジョブフロー”jobflow1~3″、アカウント情報、ノード情報のオブジェクトを作成します。

サンプルジョブフロー

 
バックアップの取得

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

ここでは元のディレクトリ階層に対応して、カレントディレクトリ以下にディレクトリおよびファイルが作成されます。
Kompira上の各オブジェクトは、オブジェクトの型に応じたフィールド値を持つYAMLファイルとして出力されます。
ジョブフローやWikiなど、一部のオブジェクトでは「代表フィールド」が内部で設定されています。このようなオブジェクトがエクスポートされた場合は、代表フィールドの内容を持つ単一のファイルと、それ以外のフィールドの値を持つ「.(ドット)」始まりのファイルの2つが出力されます。

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

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

特にリストア先のディレクトリを指定しない場合には “/” 以下に展開されます。

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

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

注意点として、Kompira 1.10時点ではexport_dirにオブジェクトに設定した権限情報を含めることができません。
もしKompiraのオブジェクトで権限情報を設定していて、それらの情報も含めて保存したい場合は”export_data”を併用してください。

例: “export_data”で出力したジョブフローの情報(一部抜粋)

例: “export_dir”で出力したジョブフローの情報

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