Gマイナー志向

とくに意味はありません

さくらのクラウドでCoreOSを動かしてみた

最近になってようやくDockerに目覚めまして、本番環境にDockerを使った場合の監視方法などを模索している今日このごろ。

ちょうどオープンソースカンファレンスさくらのクラウドの2万円分無料クーポンをもらった*1ので、さくらのクラウドGentooベース(のChromeOSベース)で有名なCoreOSを載せてDocker環境を構築してみた次第。さくらさんありがとう!ありがとう!ありがとう!

どうすればCoreOSを構築できるか

さくらのクラウドではKVM/QEMUを使用しており、CoreOSはQEMU用イメージを用意しているものの、ホスト側を操作できるわけではないのでこの方法は取れない。

そこでInstalling CoreOS to Diskを参考に構築することにした。

CoreOSを起動するサーバをまず用意する

さくらのクラウドDHCPIPアドレスが取得できず、またCoreOSのcoreユーザにはパスワードが設定されていないため、Installing CoreOS to Diskの手順でそのまま構築するとSSH、コンソールのどちらからもアクセスできなくなってしまう。

そこでまずIPアドレスを決定するためにブランクディスクでサーバを作成する。

作成後、NICタブを押して以下の4つを控えておく。

また、ディスクタブでHDDを取り外す。

Ubuntuサーバを用いてDiskにCoreOSをインストール

つづいてUbuntuでサーバを作成。先ほど取り外したディスクを接続して起動。手順はInstalling CoreOS to Diskのとおりだが、さくらのクラウドに合わせて適宜読み替え。

wget https://raw.github.com/coreos/init/master/bin/coreos-install
chmod +x coreos-install
sudo ./coreos-install -d /dev/vdb
cat > cloud-config.yml <<EOF
#cloud-config.yml

ssh_authorized_keys:
  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0g+ZTxC7weoIJLUafOgrm+h...(ssh公開鍵を記述)

write_files:
  - path: /etc/systemd/network/10-static.network
    content: |
      [Match]
      Name=ens*

      [Network]
      Address=(IPv4アドレス)/(ネットマスク)
      Gateway=(ゲートウェイ)
      DNS=(推奨ネームサーバ1)
      DNS=(推奨ネームサーバ2)
EOF
sudo mount /dev/vdb6 /mnt
sudo cp cloud-config.yml /mnt/
sudo umount /mnt
CoreOSを起動する

ここまでできたら一旦Ubuntuサーバの電源を落として20GBの追加ディスクを取り外し、CoreOSサーバに接続しなおして起動。

ssh core@(IPv4アドレス)

で接続すればok。

   ______                ____  _____
  / ____/___  ________  / __ \/ ___/
 / /   / __ \/ ___/ _ \/ / / /\__ \
/ /___/ /_/ / /  /  __/ /_/ /___/ /
\____/\____/_/   \___/\____//____/
core@localhost ~ $ 

ヒャッホーイ!

まとめ

*1:実はもらったクーポンを紛失したので中の人に再発行してもらった