CoreOSをVirtualBoxにインストールする


作業環境

Ubuntu 15.04
VirtualBox 4.3
Linux系OSであればインストール方法はだいたい同じです。

はじめに

CoreOS社が公開しているインストール方法に関するドキュメントはこちらです。

初めてVirtualBoxにCoreOSをインストールしようとしたとき、ISOイメージに気を取られて、CoreOSドキュメントページISOリンクを参照してしまい、無駄な時間を過ごしました。VirtualBoxにインストールしたいときはVirtualBoxリンクを参照します。

インストール手順

これらの作業はVirtualBoxがインストールされているコンピュータ上で行います。

手順
1. VDIファイルを作成するためのシェルクリプトをダウンロードし、実行権限を付与
2. VDIファイルの作成
3. VDIファイルのハードドライブサイズを変更
4. 必要に応じて作成したVDIファイルを複製
5. ISOファイルを作成するためのシェルクリプトをダウンロードし、実行権限を付与
6. ISOファイルの作成
7. 作成したVDIファイルとISOファイルを使って仮想マシンを作成・起動
以上。

1. VDIファイルを作成するためのシェルクリプトをダウンロードし、実行権限を付与

wgetコマンドがない場合はこちらからダウンロードします。

user@localhost:~$ wget https://raw.github.com/coreos/scripts/master/contrib/create-coreos-vdi
user@localhost:~$ chmod a+x create-coreos-vdi

権限を付与した結果です。

user@localhost:~$ ls -l
-rwxrwxr-x 1 user user  3573 11月 18 18:55 create-coreos-vdi

2. VDIファイルの作成

作成するVDIファイルのパスとダウンロードするCoreOSのバージョンを指定してスクリプトを実行します。数百MBあるので、完了するまでに少々時間がかかります。

user@localhost:~$ ./create-coreos-vdi -d /home/user/VirtualBox -V beta
...
Success! CoreOS beta VDI image was created on coreos_production_835.5.0.vdi

スクリプトが正常に完了すると例えば以下のようになります。

user@localhost:~/VirtualBox$ ls -l
-rw------- 1 user user 788529152 11月 19 13:55 coreos_production_835.5.0.vdi

参考までにcreate-coreos-vdiシェルクリプトのヘルプです。

user@localhost:~$ ./create-coreos-vdi -h
Usage: ./create-coreos-vdi [-V version] [-d /target/path]
Options:
    -d DEST     作成されたVDIファイルを保存するパスを指定
    -V VERSION  ダウンロードするCoreOSのバージョンを指定。
                alpha, beta, stableのいづれか。指定しなければstableがダウンロードされる。
    -h          ヘルプを表示

This tool creates a CoreOS VDI image to be used with VirtualBox.

3. VDIファイルのハードドライブサイズを変更

作成されたVDIファイルのハードドライブサイズは4GB程度に設定されているので、変更したい場合は修正します。例えば10GBにしたい場合。

user@localhost:~/VirtualBox$ VBoxManage modifyhd coreos_production_835.5.0.vdi --resize 10240

4. 必要に応じて作成したVDIファイルを複製

CoreOSの仮想マシンを複数構築する場合は、上記VDIファイルをベースイメージとして残します。
VirtualBoxのコマンドを使ってVDIファイルをコピーします。作成する仮想マシンの名前(hostname)を付けることが望ましいです。

user@localhost:~/VirtualBox$ VboxManage clonehd coreos_production_835.5.0.vdi hostname.vdi
...
Clone hard disk created in format 'VDI'. UUID: 2252000e-8a2b-4471-9767-00c469eb60b5
user@localhost:~/VirtualBox$ ls
coreos_production_835.5.0.vdi hostname.vdi

5. ISOファイルを作成するためのシェルクリプトをダウンロードし、実行権限を付与

手順1と同じくwgetコマンドがない場合はこちらからダウンロードします。

user@localhost:~$ wget https://raw.github.com/coreos/scripts/master/contrib/create-basic-configdrive
user@localhost:~$ chmod a+x create-basic-configdrive
user@localhost:~$ ls -l
-rwxrwxr-x 1 user user      4820 11月 18 19:11 create-basic-configdrive
-rwxrwxr-x 1 user user      3573 11月 18 18:55 create-coreos-vdi

6. ISOファイルの作成

ISOファイルを作成するにあたり、SSH公開認証鍵が必要になります。鍵は下記コマンド1行で生成できます。暗号アルゴリズムにはdsaやrsaなどが選べますが、rsaを選択しておけば無難です。

user@localhost:~$ ssh-keygen -t rsa
user@localhost:~$ ls
id_rsa id_rsa.pub

サーバー名(Hostname)を指定するオプションとSSH公開鍵を指定するオプションは必須です。
下記認証鍵はユーザ core に紐付けられます。

user@localhost:~$ ./create-basic-configdrive -H hostname -S id_rsa.pub
...
Success! The config-drive image was created on /home/user/hostname.iso

参考までにcreate-basic-configdriveシェルクリプトのオプションです。

user@localhost:~$ ./create-basic-configdrive -h
Usage: ./create-basic-configdrive -H HOSTNAME -S SSH_FILE [-p /target/path] [-d|-e|-i|-n|-t|-h]
Options:
    -d URL             Full URL path to discovery endpoint.
    -e http://IP:PORT  Adviertise URL for client communication.
    -H HOSTNAME        Machine hostname.
    -i http://IP:PORT  URL for server communication.
    -l http://IP:PORT  Listen URL for client communication.
    -u http://IP:PORT  Listen URL for server communication.
    -n NAME            etcd node name.
    -p DEST            Create config-drive ISO image to the given path.
    -S FILE            SSH keys file.
    -t TOKEN           Token ID from https://discovery.etcd.io.
    -h                 This help

This tool creates a basic config-drive ISO image.

7. 作成したVDIファイルとISOファイルを使って仮想マシンを作成・起動

仮想マシンを作成するためのVDIファイルとISOファイルが準備できたので、VirtualBoxで仮想マシンを新規に作成します。

名前: 任意のサーバ名(hostname)を記入
タイプ: Linux
バージョン: Other Linux(64-bit)

CoreOSの推奨最低メモリサイズは1GBです。

作成したVDIファイルを選択
手順3でハードドライブのサイズを変更していれば、4.43GB以外のサイズになります。

作成された仮想ホストを設定

ストレージ >> CD/DVDドライブ >> 作成したISOファイルを選択
選択し終わると下図のようになります。

以上で設定は完了です。仮想ホストを起動します。

下図の画面になればインストール作業は完了です。
パスワードは設定されていないので、この画面はこのままにしておき、ログインは別ホストから鍵を使って行います。

手順6で作成したid_rsa鍵を使って別ホストからログインします。
認証鍵はユーザ core に紐付いています。

ssh -i id_rsa [email protected]

以上。

最後に

Docker, etcd, Fleetなどのソフトウェアはcloud-configファイルを作成し、coreos-cloudinitシェルスクリプトを使って別途インストールします。