#author("2020-01-05T20:17:36+09:00","default:nowsky","nowsky")
#author("2020-01-05T20:17:44+09:00","default:nowsky","nowsky")
*kimchi [#t0147ec8]
-[[kimchi-project>+https://github.com/kimchi-project]]
-[[がらくたネット キムチ>+https://e-garakuta.net/techinfo/doku.php/linux/kimchi]]
 

webブラウザ経由でKVM環境を操作するフロントエンドツール。
kimchiはIBMが開発に着手し、エンタープライズの利用実績を歴てからOSS化された。
OpenStack/oVirt程の機能は無いが、RPMインストールで簡単に構築できる上、
ゲストOS作成・KVMコンソール操作・ストレージ管理が一括で出来る為、
クラスタを組まないKVM環境の管理ツールには十分な機能を備えている。
~
*インストール [#pdc52b9e]
&size(16){&font(b){1. インストール};};
ソースコードからビルドする方法もあるが、
KVM管理ツールとしてkernelに近い箇所を操作する事から、RPMインストールが推奨されている。
また、kimchiでスナップショットなど最近の機能を使う都合上、
CentOS7の標準libvirt/Qemuライブラリでは動作しない為、
仮想基盤リポジトリを追加して高機能版のQemuをインストールする。
 
QEMU v2.12リポジトリ追加
 # yum install centos-release-qemu-ev
 # yum install qemu-kvm-ev libvirt
 

kimchiインストール
 # wget "https://github.com/kimchi-project/kimchi/releases/download/2.5.0/kimchi-2.5.0-0.el7.centos.noarch.rpm"
 # wget "https://github.com/kimchi-project/kimchi/releases/download/2.5.0/wok-2.5.0-0.el7.centos.noarch.rpm"
 # yum install kimchi-2.5.0-0.el7.centos.noarch.rpm wok-2.5.0-0.el7.centos.noarch.rpm
~
&size(16){&font(b){2. 設定変更};};
kimchiはwebコンソールのユーザ管理にLDAPを用いる事が出来るが、
参照先となるLDAP環境と検索フィルター設定も必要なので、Linuxユーザを用いたPAM認証を実装する。
PAM認証経由でlibvirtを操作する都合上、&font(b){ログインユーザにsudo権限が必要};なので注意。
kimchiの設定ファイルにはロギングなど他の設定項目も含まれている為、必要に応じて変更する。
 # vi /etc/wok/wok.conf
 ---
 [authentication]
 method = pam
 # ldap_server = "localhost"
 # ldap_search_base = "ou=People, dc=wok, dc=org"
 # ldap_search_filter = "uid=%(username)s"
 # ldap_admin_id = "foo@foo.com, bar@bar.com"
~
&size(16){&font(b){3. テンプレート};};
kimchiはインストールするディストリビューションイメージを指定したJSON形式のテンプレートと、
作成対象のゲストOSスペックを定義したテンプレートの2種類が存在する。
ディストリビューションの方はサンプルだけでも動くが、標準外のOSを用いる場合には自力で修正する。
作成するゲストOSを定義するテンプレートは、下記とlibvirtの設定を参考に修正を行う
VPSで良くある&color(#ff0000){CPU2コア・MEM1GB・HDD50GB・NIC1本};は次の通りとなる。
 # vi /etc/kimchi/template.conf
 ---
 [main]
 networks = default,
 
 [memory]
 current = 1024
 maxmemory = 1024
 
 [storage]
 [[disk.0]]
 size = 50
 format = qcow2
 pool = default
 
 [graphics]
 type = vnc
 listen = 127.0.0.1
 
 [processor]
 vcpus = 2
 maxvcpus = 2