CloudGarageでRancherOSを使ってDocker imageを動かしてみた

みなさまごきげんよう、今日はCloudGarageというサービスが面白いのでDocker imageを動かしてみた話です。

## CloudGarage

[NHN テコラス、新サービスのリリースパーティ](https://tech.ex-cloud.jp/archives/3776)にお呼ばれしたので行ってみました。ちょうど技術書典のスポンサーという関係で、「新しいクラウドサービスのお披露目パーティーするからどう？」みたいなメールが届いてたのでお邪魔させていただきました。獺祭と料理がとても美味しかったです(欠食児童なみ感想)。プレゼントコーナーがあって、「そういや今日Modern JavaScriptの本二冊持ってきてるなー」というのを思い出して一冊提供させていただきました。宣伝する機会を得てうれしーなーという感じです。

その新サービス[CloudGarage](https://cloudgarage.jp/)は、ある一定のインスタンス権を月額で確保するというクラウドで、感覚としてはVPSとかに近いです。AWSとかマネージドなサービスが多いけど、そういう小難しい事考えなくてもいいのと、決まった数以内であればインスタンスを自由に立ち上げたり止めたり消したりができます。3box(=インスタンス)を月額1,480円から使えるんですが、これを安いと見るか高いと見るかは、その人のスキルや考え方や夢ひろがリング度によるのかなーと思います。月額固定金額で、転送量とかの追加料金がないので気が楽というのもメリットです。しかも、サポートが無料です。

今のところスタートしたばかりで質素なところはありますが、今後色々と改良していくっていう話を伺ったりしました。「要望を送ってくれればそこらへん優先できるかも」ということなので、是非使い倒して要望を送るといいんじゃないかなーと思います。

詳しくは、[CloudGarage 早速いじってみた \- Part\.01 アカウント登録](http://qiita.com/FoxBoxsnet/items/346024d0e9dc144f60d1)シリーズの記事を読むといいかもしれません。

### 開発者向けインスタンス無償提供制度

> 開発者や開発コミュニティ、スタートアップ企業などを対象に、クラウドガレージのインスタンスを無償で提供する制度です。提供期間は１年間で新規申込および次年度更新時には当社基準の審査があります。

ということらしく、まぁ宣伝なりしてくれたら嬉しいから是非使ってよということらしいので、開発者や開発コミュニティやスタートアップ企業の人は是非とも申し込んでみるといいと思います。

### ソフトウェアエンジニアを大切にする企業は是非福利厚生として！！！！

ソフトウェアエンジニアは、色々実験する環境が欲しいわけで、そういうインスタンスを自由に使える権利って福利厚生としては素晴らしいと思うので、是非イケてる技術系の会社ではCloudGarageをエンジニア向けに福利厚生として契約してみるといいんじゃないかなーと思います！

## RancherOSをインストールしてみた

Docker imageを動かしたかったので、RancherOSにチャレンジしてみました。

* [RancherOS Documentation](http://rancher.com/docs/os/)
* [rancherに関する81件の投稿 \- Qiita](http://qiita.com/tags/rancher)

とかにらめっこする感じです。最初全くよくわからなかったんですが、試行錯誤してるとうまくいっちゃいましたが、RancherOSの作法的に突っ込みなどありましたら、是非ご指摘ください。

### web GUIからインスタンスを生成する

* インスタンス選択 -> 契約した中で適当に
* OS/イメージ選択 -> OSから選択 -> RANCHER OS -> バージョン選ぶ
* 接続許可ポート -> SSH 22 のみ
* SSH Key設定 -> 設定できない
* インスタンス情報 -> インスタンス名とコメントだけ入力できる

今回想定したのは、[vvakame/review \- Docker Hub](https://hub.docker.com/r/vvakame/review/)を動かしてRe:Viewの執筆環境を作ってみようの1ステップなので、sshのみ開いてます。現時点では、高度なセキュリティ設定は無く単純なポート開放のみなので、それ以上の事は中身のLinuxなりで設定してほしいとのことです。

14日間の無料お試しプランだと無料で3box使えるのでさっくりこの構成で作成します。しかもサインアップの時点ではまだクレカを登録する必要がありません。

### コンソールに入る

作成すると自動的にインスタンス一覧に遷移してちょっと待つとインスタンスが出来ているので、そのインスタンスの名前をクリックすると詳細画面に行くので、右上のコンソール表示をクリックすると別タブでqemuコンソールがでてきます。するとコイツはもう自動でrancherアカウントでログインした状態でしかもsudo権限を持っているので、sudo を使って作業をします。

#### パスワードを変更する

rancherおよびrootのパスワードがよくわからないのでまずrancherのパスワードを変更します。これはqemuコンソール上だとどうもコピペが出来ないのと、ssh鍵をweb GUIからは設定できないためです。注意点としては今の時点ではまだインストールが完了してなくて揮発してしまうので、今回接続するためだけのパスワードになります。

```
$ sudo passwd rancher
```

#### sshで繋ぎなおしてからインストールをする

web GUIでグローバルIPを確認しておきます(aaa.bbb.ccc.dddとする)。

```sh
$ ssh rancher@aaa.bbb.ccc.ddd
```

先ほど設定したパスワードでログインしてからインストール開始です。インスタンス生成直後はまだISOイメージから起動したままでインストールされた状態じゃないので、インストールが必要になるのです。[Installing RancherOS to Disk](http://rancher.com/docs/os/running-rancheros/server/install-to-disk/)を参考にすると良さそうです。

実はインストールしてなくてもdockerコマンドを実行できるんですが、メモリを使ったファイルシステムなので容量がほとんどなく、失敗してしましますし、設定を書き換えたいと思っても書き換えることができません。

まずはSSHで接続するための公開鍵を登録します。YAML形式でかつ、先頭に#cloud-configという行が必要です。

```yaml
#cloud-config
ssh_authorized_keys:
  - ssh-dss AAAA......
```

これを貼り付けてからインストールコマンドを叩きます。

```sh
$ cat > config.yml
#cloud-config
ssh_authorized_keys:
  - ssh-dss AAAA......
$ sudo ros install -c config.yml -d /dev/vda
```

`/dev/sda`は存在せず、`/dev/vda`にインストールすればいいようです。`ros install`コマンドではインストールしていいか？と、再起動していいか？の2つを聞かれると思いますが、両方Yで大丈夫です。インストールができて再起動したら、具体的にインストールが始まります(`ros install`を叩くだけだとインストールはされないらしく、二度目のISOからの起動の時に実際にインストールのプロセスが走るようですね)。

コンソールを見て再起動が完了していたら、今度は、ISOイメージのアンマウントボタンを押してから、指示通り、再起動(強制)ボタンを押します。

もう一度コンソール上でみて再起動が完了していたら、sshでの接続及び、SSDへのデータの保存が可能になりました。

### docker を動かしてみる

sshで繋ぎなおしますが、RancherOSはsshdの鍵を作り直してるのでそのままだと接続できません。

```sh
$ ssh-keygen -R aaa.bbb.ccc.ddd
```
ssh-keygenを使って(あるいは`rm ~/.ssh/known_hosts`なりなんなりして)、対象IPのsshdの検証用の鍵を消します。こうするとsshでつなぐことができます。

```sh
$ docker run -it vvakame/review /bin/bash
# git clone https://github.com/TechBooster/C89-FirstStepReVIEW-v2.git
# cd C89-FirstStepReVIEW-v2
# npm i
# touch articles/style.css
# npm run epub
# npm run pdf
```

とりあえずDockerでRe:Viewの原稿をコンパイルしてepubやpdfを生成する事ができるようになりました。後日、またここらへんの続きをやって、原稿執筆に便利な環境を構築してみようかなと思います。Macやbash on Windowsで執筆環境を整備するのもありですが、こういうクラウド上に用意しておくと色々捗るかなーと思います。

## 最後に

[最新JavaScript開発～ES2017対応モダンプログラミング (技術書典シリーズ（NextPublishing）) ](http://amzn.to/2vftxLh)という本が2017/8/11に出ます。JavaScriptとても良い言語なのに、古い情報がウェブ上に多いせいで誤解を受けやすいですが、この本では新しくて楽なJSプログラミングができるように書いたので是非読んでみてください！

技術書典3の申し込みはもう終わりましたが、是非みなさまも[技術書同人誌を書きましょう！](http://qiita.com/erukiti/items/6b7e85f760476a997161)次の冬コミなりを目指してもいいと思います。技術同人誌書くのめちゃくちゃ楽しいです。