Kompira

Menu Menu

Enterprise Technical information

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

動作確認環境  
ソフトウェア バージョン
Kompira 1.5.5.post7
LinuxOS CentOS7.8.2003
 
「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” を用いたバックアップの取得です。  
>$ /opt/kompira/bin/manage.py export_dir /root/jobflows
[2017-05-08 13:48:28,894] INFO: export_dir: export '/root/jobflows/jobflow1' to 'root/jobflows/jobflow1'
[2017-05-08 13:48:28,911] INFO: export_dir: export '/root/jobflows/jobflow2' to 'root/jobflows/jobflow2'
[2017-05-08 13:48:28,926] INFO: export_dir: export '/root/jobflows/jobflow3' to 'root/jobflows/jobflow3'
[2017-05-08 13:48:28,966] INFO: export_dir: export '/root/jobflows/サーバー情報' to 'root/jobflows/サーバー情報.NodeInfo'
[2017-05-08 13:48:28,992] INFO: export_dir: export '/root/jobflows/接続アカウント' to 'root/jobflows/接続アカウント.AccountInfo'

$ cat root/jobflows/接続アカウント.AccountInfo
keyfile:
  name: null
  path: null
passphrase: ''
password: testpassword
user: test

$ cat root/jobflows/jobflow1
print("hello,world")

$ cat root/jobflows/.jobflow1
fields:
  defaultCheckpointMode: false
  defaultMonitoringMode: NOTHING
  multiplicity: null
  ここでは元のディレクトリ階層に対応して、カレントディレクトリ以下にディレクトリおよびファイルが作成されます。 Kompira上の各オブジェクトは、オブジェクトの型に応じたフィールド値を持つYAMLファイルとして出力されます。 ジョブフローやWikiなど、一部のオブジェクトでは「代表フィールド」が内部で設定されています。このようなオブジェクトがエクスポートされた場合は、代表フィールドの内容を持つ単一のファイルと、それ以外のフィールドの値を持つ「.(ドット)」始まりのファイルの2つが出力されます。   バックアップデータからのリストア 次の実行例は “/opt/kompira/bin/manage.py import_dir”を用いたバックアップデータからのリストアです。
$ /opt/kompira/bin/manage.py import_dir root/jobflows
[2017-05-08 14:14:13,576] INFO: import data: start... 
[2017-05-08 14:14:13,647] INFO: import object: imported "jobflow1" to "/jobflow1"
[2017-05-08 14:14:13,672] INFO: import object: imported "jobflow3" to "/jobflow3"
[2017-05-08 14:14:13,697] INFO: import object: imported "jobflow2" to "/jobflow2"
[2017-05-08 14:14:13,723] INFO: import object: imported "サーバー情報" to "/サーバー情報"
[2017-05-08 14:14:13,749] INFO: import object: imported "接続アカウント" to "/接続アカウント"
[2017-05-08 14:14:13,914] INFO: import fields: /jobflow1: ['defaultCheckpointMode', 'defaultMonitoringMode', 'multiplicity', 'source']
[2017-05-08 14:14:13,968] INFO: import fields: /jobflow3: ['defaultCheckpointMode', 'defaultMonitoringMode', 'multiplicity', 'source']
[2017-05-08 14:14:14,015] INFO: import fields: /jobflow2: ['defaultCheckpointMode', 'defaultMonitoringMode', 'multiplicity', 'source']
[2017-05-08 14:14:14,071] INFO: import fields: /サーバー情報: ['account', 'shell', 'hostname', 'ipaddr', 'conntype', 'proxy', 'port', 'use_shell']
[2017-05-08 14:14:14,117] INFO: import fields: /接続アカウント: ['password', 'keyfile', 'user', 'passphrase']
[2017-05-08 14:14:14,123] INFO: import data: finished (created=5, updated=0, skipped=0, error=0, warning=0)
特にリストア先のディレクトリを指定しない場合には “/” 以下に展開されます。 リストア先を明示的に指定する場合には “–directory” オプションを利用します。 以下の例ではバックアップしたジョブフロー、アカウント情報、ノード情報のオブジェクトをKompira上の “/root/restore” に展開しています。  
$ /opt/kompira/bin/manage.py import_dir --directory=/root/restore root/jobflows
[2017-05-08 14:18:37,878] INFO: import data: start... 
[2017-05-08 14:18:37,941] INFO: import object: imported "jobflow1" to "/root/restore/jobflow1"
[2017-05-08 14:18:37,957] INFO: import object: imported "jobflow3" to "/root/restore/jobflow3"
[2017-05-08 14:18:37,973] INFO: import object: imported "jobflow2" to "/root/restore/jobflow2"
[2017-05-08 14:18:37,990] INFO: import object: imported "サーバー情報" to "/root/restore/サーバー情報"
[2017-05-08 14:18:38,008] INFO: import object: imported "接続アカウント" to "/root/restore/接続アカウント"
[2017-05-08 14:18:38,099] INFO: import fields: /root/restore/接続アカウント: ['password', 'keyfile', 'user', 'passphrase']
[2017-05-08 14:18:38,178] INFO: import fields: /root/restore/jobflow1: ['defaultCheckpointMode', 'defaultMonitoringMode', 'multiplicity', 'source']
[2017-05-08 14:18:38,218] INFO: import fields: /root/restore/jobflow3: ['defaultCheckpointMode', 'defaultMonitoringMode', 'multiplicity', 'source']
[2017-05-08 14:18:38,253] INFO: import fields: /root/restore/jobflow2: ['defaultCheckpointMode', 'defaultMonitoringMode', 'multiplicity', 'source']
[2017-05-08 14:18:38,294] INFO: import fields: /root/restore/サーバー情報: ['account', 'shell', 'hostname', 'ipaddr', 'conntype', 'proxy', 'port', 'use_shell']
[2017-05-08 14:18:38,299] INFO: import data: finished (created=5, updated=0, skipped=0, error=0, warning=0)
  例えばジョブフローをはじめとするKompira上のオブジェクトの差分管理をしたい場合は、”export_dir”により出力されたディレクトリをgitリポジトリに含めるとよいでしょう。 注意点として、Kompira 1.10時点ではexport_dirにオブジェクトに設定した権限情報を含めることができません。 もしKompiraのオブジェクトで権限情報を設定していて、それらの情報も含めて保存したい場合は”export_data”を併用してください。 例: “export_data”で出力したジョブフローの情報(一部抜粋)  
{
    "id": 123,
    "owner": "root",
    "fields": {
        "defaultMonitoringMode": "NOTHING",
        "source": "print(\"hello,world\")",
        "defaultCheckpointMode": false,
        "multiplicity": null
    },
    "user_permissions": {},
    "group_permissions": {},
    "display_name": "jobflow2",
    "description": "",
    "created": "2017-05-01T02:40:36.347452Z",
    "updated": "2017-05-01T02:40:36.537388Z",
    "parent_object": "root/jobflows",
    "objpath": "root/jobflows/jobflow2",
    "typepath": "/system/types/Jobflow"
},
  例: “export_dir”で出力したジョブフローの情報  
print("hello,world")
  このように”export_dir”で出力した場合には、パーミッション情報(user_permissions, group_permissions)もあわせてエクスポートされます。

スタートガイド

Kompiraジョブフローの基礎

ジョブフローの簡単な例

Kompiraの機能

外部との連携