(ちょっと自動で)さくらのVPSにCoreOSを入れるメモ

Dockerが熱いですね。
EC2とかGCEとかで試すのがいいんでしょうけど　
自分が既に契約している
さくらのVPSにインストールして見ようと頑張りました。

ただ　色々めんどくさかった **(特にコピペのできないQEMU！)** 
なので忘れないようにメモしようと思います。

ちょっとはクラスタリング組むのも楽になるといいんですが。

---

手順は
http://qiita.com/yujiod/items/dc154120c4df2e938111
を参考に


ISOファイルに関しては
nyarlaさんの
https://github.com/nyarla/coreos-live-iso

のスクリプトをDockerfileに移植した
https://github.com/k2wanko/coreos-live-iso/tree/sakura-vps
を使ってやっていきます。

## 環境

- Mac OS X
- boot2docker Client version: v1.2.0
- さくらVPS２G HDDプラン


## 設定ファイルの作成

```
$ git clone https://github.com/k2wanko/coreos-live-iso
$ cd coreos-live-iso
$ git checkout sakura-vps
```

中を見ると
`sakuravps-configure`があるのでこれを使ってconfigを生成します。

中にさくらVPSコントロールパネルにログインするための
IPとPASSWORDを入れる欄ありますが入力しなくても聞いてきますので
編集する必要はありません

以下のコマンドで実行

```
$ ./sakuravps-configure
```

curlでゴリゴリアクセスした後
さくらVPSのサーバーに必要な設定が記述された、
`vps-config`と`cloud-config`が生成されます。

cloud-configにおいて重要なのは以下の部分。

```shell-session:cloud-config
...
coreos:
  units:
    - name: 00-eth0.network
      runtime: true
      content: |
      [Mathc]
      Name=eth0

      [Network]
      Address=$VPS_IP/23
      Gateway=$VPS_GATEWAY
      DNS=$VPS_DNS1
      DNS=$VPS_DNS2

```

CoreOSはデフォルトでDHCPなのでこの設定ファイルを作ってあげることで固定IPアドレスを付加できます。

cloud-configはそれぞれの環境に合わせてカスタマイズしたり生成用のスクリプトも自分用に手を加えておけば、
さくらVPSを何台契約しても楽になると思います。
(合わせてEC2やGCE用のスクリプトも生成するようにすればクラスタリングを組むのも楽そうですね)

## ISOの作成

`cloud-config`の設定を自分好みにカスタムしたら
buildスクリプトを叩けば一発です。

```
$ ./build
```

## ISOのアップロードとLiveCDのインストール

ここからはさくらVPSコントロールパネルにアクセスしながら進めていきます。
とっておきのブラウザでアクセスしてください

ログインしたら

「OS再インストール」をクリックして進みます。

![さくらインターネットVPSコントロールパネル.png](https://qiita-image-store.s3.amazonaws.com/0/15818/01697134-8c14-2f64-cd4e-346c02ecab61.png)

そして「ISOイメージをインストールへ」をクリックして進みアカウントの作成までします。

![さくらインターネットVPSコントロールパネル-2.png](https://qiita-image-store.s3.amazonaws.com/0/15818/9982ab6c-c0dc-5340-644f-7da0338b2e64.png)

![さくらインターネットVPSコントロールパネル-3.png](https://qiita-image-store.s3.amazonaws.com/0/15818/5b1af2fc-0611-21c6-2fb6-0ad7e1178d31.png)

![さくらインターネットVPSコントロールパネル-4.png](https://qiita-image-store.s3.amazonaws.com/0/15818/74454a30-91eb-0a39-2d8c-c5d2cfeb5d43.png)

表示されたアカウントを使いsftpでISOファイルをアップロードします。

```

$ sftp vps0000000000@vps-iso.sakura.ad.jp
vps0000000000@vps-iso.sakura.ad.jp's password:
Connected to vps-iso.sakura.ad.jp.
sftp> cd /iso
sftp> put CoreOS.master.iso
Uploading CoreOS.master.iso to /iso/CoreOS.master.iso
CoreOS.master.iso                          100%  126MB   4.1MB/s   00:31
sftp> exit
```

もしくは以下のコマンドでパスワードだけ入力すればアップロードできます。

```
$ sftp vps0000000000@vps-iso.sakura.ad.jp 0< sftp-cmd
```

アップロードが完了したら「ISOイメージ」の「更新」ボタンをクリックします。

そして下の方にある「確認」をクリックし
「HTML5モードで開く(推奨)」をクリックし起動してるかな〜と確認します。

「localhost login:」ってのが出てきたら大丈夫です。

ただこの段階ではネットワークの設定が反映されていないので
コントロールパネルに戻り「仮想サーバー操作」の「再起動」ボタンを押して
再起動します。

もう一度リモートコンソールの「VNCコンソールを開く」をクリックして
推奨とのことなので「HTML5モードで開く(推奨)」をクリックして開きます。


今度も「localhost login:」まで見届ければいいんですが
ちょっと上にens3のところにVPSのIPが表示されていればネットワークの設定は大丈夫です。

```

eth0: XXX.XXX.XXX.XXX <-ここにVPSのIPが出ればOK
eth1:
eth2:


localhost login:
```

あとは皆大好きなコンソールから操作ができます。

## coreosのインストール
core@localhost ~ $ sudo coreos-install -d /dev/vda -c cloud-config -C alpha -V current
```

終わったらコントロールパネルの再起動で再起動して完了です。

```:TIPS
#余談だけど以下のコマンドをローカルから実行してしまうと
#インストールに失敗し　なんか色々大変になるので気をつけてください

ssh vps sudo coreos-install -d /dev/vda -c cloud-config -C alpha
```

## せっかくなのでなんか動かしてみる

coreosで操作してます。

```
$ docker pull dockerfile/ghost
$ docker run -d -p 80:2368 dockerfile/ghost
```

ブラウザでアクセスして表示されれば成功！

![Ghost.png](https://qiita-image-store.s3.amazonaws.com/0/15818/2088719c-89b9-fcf5-8572-383b6744a4c7.png)

## まとめ

Dockerらしく簡単に作って消して作るってのがさくらのVPSではなかなかやりづらいですね

でもちょっとは作るのが楽になったので２台目契約した際にクラスタリングも色々設定をこねながら作れそうです。