Xen/KVM Virtualization Management Application
  • 日本語
  • English

Karesansui Wiki


手動でデータベースを作るには?

Karesansuiでは、KaresansuiとPysilhouetteの二つのデータベースを使用します。
何らかの原因でインストーラで正常にデータベースが構築されない場合は、手動でKaresansuiデータベースを構築することが出来ます。
なお、KaresansuiデータベースのE-R図がこちらにあるので、参考にしてください。
http://karesansui-project.info/2.0.0/er/karesansui/

テーブルの作成

Karesansuiデータベースは以下のSQL文で構築することが出来ます。

CREATE TABLE tag (
    id INTEGER NOT NULL AUTO_INCREMENT, 
    name VARCHAR(24) NOT NULL, 
    created DATETIME, 
    modified DATETIME, 
    PRIMARY KEY (id)
)

CREATE TABLE user (
    id INTEGER NOT NULL AUTO_INCREMENT, 
    email VARCHAR(256) NOT NULL, 
    password VARCHAR(40) NOT NULL, 
    salt VARCHAR(16) NOT NULL, 
    nickname VARCHAR(16) NOT NULL, 
    languages VARCHAR(6), 
    created DATETIME, 
    modified DATETIME, 
    PRIMARY KEY (id), 
     UNIQUE (email)
)

CREATE TABLE `option` (
    id INTEGER NOT NULL AUTO_INCREMENT, 
    created_user_id INTEGER, 
    modified_user_id INTEGER, 
    `key` VARCHAR(12) NOT NULL, 
    value TEXT, 
    created DATETIME, 
    modified DATETIME, 
    PRIMARY KEY (id), 
     FOREIGN KEY(created_user_id) REFERENCES user (id), 
     FOREIGN KEY(modified_user_id) REFERENCES user (id), 
     UNIQUE (`key`)
)

CREATE TABLE notebook (
    id INTEGER NOT NULL AUTO_INCREMENT, 
    title VARCHAR(64) NOT NULL, 
    value TEXT NOT NULL, 
    created DATETIME, 
    modified DATETIME, 
    PRIMARY KEY (id)
)

CREATE TABLE machine (
    id INTEGER NOT NULL AUTO_INCREMENT, 
    parent_id INTEGER, 
    notebook_id INTEGER, 
    created_user_id INTEGER, 
    modified_user_id INTEGER, 
    uniq_key VARCHAR(36) NOT NULL, 
    name VARCHAR(256) NOT NULL, 
    attribute SMALLINT NOT NULL, 
    hypervisor SMALLINT NOT NULL, 
    hostname VARCHAR(256), 
    icon VARCHAR(256), 
    is_deleted BOOL, 
    created DATETIME, 
    modified DATETIME, 
    PRIMARY KEY (id), 
     FOREIGN KEY(parent_id) REFERENCES machine (id), 
     FOREIGN KEY(created_user_id) REFERENCES user (id), 
     FOREIGN KEY(modified_user_id) REFERENCES user (id), 
     UNIQUE (hostname), 
     UNIQUE (uniq_key), 
     FOREIGN KEY(notebook_id) REFERENCES notebook (id)
)

CREATE TABLE machine2tag (
    id INTEGER NOT NULL AUTO_INCREMENT, 
    tag_id INTEGER, 
    machine_id INTEGER, 
    created DATETIME, 
    modified DATETIME, 
    PRIMARY KEY (id), 
     FOREIGN KEY(tag_id) REFERENCES tag (id), 
     FOREIGN KEY(machine_id) REFERENCES machine (id)
)

CREATE TABLE snapshot (
    id INTEGER NOT NULL AUTO_INCREMENT, 
    parent_id INTEGER, 
    machine_id INTEGER, 
    notebook_id INTEGER, 
    created_user_id INTEGER, 
    modified_user_id INTEGER, 
    name VARCHAR(256), 
    is_deleted BOOL, 
    created DATETIME, 
    modified DATETIME, 
    PRIMARY KEY (id), 
     FOREIGN KEY(notebook_id) REFERENCES notebook (id), 
     FOREIGN KEY(parent_id) REFERENCES snapshot (id), 
     FOREIGN KEY(created_user_id) REFERENCES user (id), 
     FOREIGN KEY(modified_user_id) REFERENCES user (id), 
     FOREIGN KEY(machine_id) REFERENCES machine (id)
)

CREATE TABLE watch (
    id INTEGER NOT NULL AUTO_INCREMENT, 
    machine_id INTEGER NOT NULL, 
    created_user_id INTEGER, 
    modified_user_id INTEGER, 
    name VARCHAR(256) NOT NULL, 
    plugin VARCHAR(256) NOT NULL, 
    plugin_selector TEXT NOT NULL, 
    continuation_count INTEGER, 
    prohibition_period INTEGER, 
    warning_value TEXT, 
    is_warning_percentage BOOL, 
    is_warning_script BOOL, 
    warning_script TEXT, 
    is_warning_mail BOOL, 
    warning_mail_body TEXT, 
    failure_value TEXT, 
    is_failure_percentage BOOL, 
    is_failure_script BOOL, 
    failure_script TEXT, 
    is_failure_mail BOOL, 
    failure_mail_body TEXT, 
    is_okay_script BOOL, 
    okay_script TEXT, 
    is_okay_mail BOOL, 
    okay_mail_body TEXT, 
    notify_mail_to TEXT, 
    notify_mail_from TEXT, 
    karesansui_version VARCHAR(12) NOT NULL, 
    collectd_version VARCHAR(12) NOT NULL, 
    is_deleted BOOL, 
    created DATETIME, 
    modified DATETIME, 
    PRIMARY KEY (id), 
     FOREIGN KEY(machine_id) REFERENCES machine (id), 
     FOREIGN KEY(created_user_id) REFERENCES user (id), 
     FOREIGN KEY(modified_user_id) REFERENCES user (id)
)

CREATE TABLE machine2jobgroup (
    id INTEGER NOT NULL AUTO_INCREMENT, 
    machine_id INTEGER, 
    jobgroup_id INTEGER NOT NULL, 
    uniq_key VARCHAR(36) NOT NULL, 
    created_user_id INTEGER, 
    modified_user_id INTEGER, 
    created DATETIME, 
    modified DATETIME, 
    PRIMARY KEY (id), 
     FOREIGN KEY(machine_id) REFERENCES machine (id), 
     FOREIGN KEY(created_user_id) REFERENCES user (id), 
     FOREIGN KEY(modified_user_id) REFERENCES user (id)
)

Pysilhouetteデータベースは以下のSQL文で構築することが出来ます。

CREATE TABLE jobgroup (
    id INTEGER NOT NULL AUTO_INCREMENT, 
    name VARCHAR(512) NOT NULL, 
    uniq_key VARCHAR(36) NOT NULL, 
    finish_command VARCHAR(1024), 
    type INTEGER NOT NULL, 
    status VARCHAR(3) NOT NULL, 
    register VARCHAR(32), 
    created DATETIME, 
    modified DATETIME, 
    PRIMARY KEY (id)
)

CREATE TABLE job (
    id INTEGER NOT NULL AUTO_INCREMENT, 
    jobgroup_id INTEGER NOT NULL, 
    name VARCHAR(32) NOT NULL, 
    `order` INTEGER NOT NULL, 
    action_command VARCHAR(1024) NOT NULL, 
    rollback_command VARCHAR(1024), 
    status VARCHAR(3) NOT NULL, 
    action_exit_code INTEGER, 
    action_stdout TEXT, 
    action_stderr TEXT, 
    rollback_exit_code INTEGER, 
    rollback_stdout TEXT, 
    rollback_stderr TEXT, 
    progress INTEGER NOT NULL, 
    created DATETIME, 
    modified DATETIME, 
    PRIMARY KEY (id), 
     FOREIGN KEY(jobgroup_id) REFERENCES jobgroup (id)
)

初期値の入力

デーブルの作成ができたらKaresansuiデータベースに初期値を入力します。
Pysilhouetteデータベースは空のままで構いません。

user

INSERT INTO user (email, password, salt, nickname, languages, created, modified) VALUES ([ログイン用メールアドレス], [パスワード], [salt], [表示名], [言語], [現在時刻], [現在時刻])
ログイン用メールアドレス:Basic認証でのログインID(例:hoge@example.com)
パスワード:パスワードとslatを足した文字列をSHA1でハッシュ化した文字列(sha1(pass+salt))(例:4132395efd6b67d5cad0ea0f514a664ae8a2a82c)
salt:パスワードハッシュを作る際に加える文字列(例:vRsiQo7PaprZAro9)
表示名:画面に表示されるユーザ名(例:Administrator)
言語:ja_JPもしくはen_US
現在時刻の例:2010-1-2 03:04:05.678901

tag

INSERT INTO tag (name, created, modified) VALUES (default, [現在時刻], [現在時刻])
現在時刻の例:2010-1-2 03:04:05.678901

notebook

INSERT INTO notebook (title, value, created, modified) VALUES ("", "", [現在時刻], [現在時刻])
現在時刻の例:2010-1-2 03:04:05.678901

machine

INSERT INTO machine (parent_id, notebook_id, created_user_id, modified_user_id, uniq_key, name, attribute, hypervisor, hostname, icon, is_deleted, created, modified) VALUES ("", 1, 1, 1, [UUID], [ホスト名], 0, 0, [ホスト名], icon-guest1.png, 0, [現在時刻], [現在時刻])
UUID:ユニークなUUID(例:d6886345-62b6-4fa5-b445-d5891f734e3c)
ホスト名:ホストOSのホスト名

machine2tag

INSERT INTO machine2tag (tag_id, machine_id, created, modified) VALUES (1, 1, [現在時刻], [現在時刻])
現在時刻の例:2010-1-2 03:04:05.678901

Also available in: HTML TXT