Karesansuiでは、KaresansuiとPysilhouetteの二つのデータベースを使用します。
何らかの原因でインストーラで正常にデータベースが構築されない場合は、手動でKaresansuiデータベースを構築することが出来ます。
なお、KaresansuiデータベースのE-R図がこちらにあるので、参考にしてください。
http://karesansui-project.info/2.0.0/er/karesansui/
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)
)
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データベースは空のままで構いません。
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
INSERT INTO tag (name, created, modified) VALUES (default, [現在時刻], [現在時刻])
現在時刻の例:2010-1-2 03:04:05.678901
INSERT INTO notebook (title, value, created, modified) VALUES ("", "", [現在時刻], [現在時刻])
現在時刻の例:2010-1-2 03:04:05.678901
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のホスト名
INSERT INTO machine2tag (tag_id, machine_id, created, modified) VALUES (1, 1, [現在時刻], [現在時刻])
現在時刻の例:2010-1-2 03:04:05.678901