CoreOSをさくらVPSにインストールしたときのメモ

2014年9月23日現在、さくらVPSではCoreOSのインストールは手動でやる必要があります。
いろいろつまづいたのでメモ程度にまとめておきます。
(CoreOS詳しくないのでこれで十分な設定なのかはよくわかりません…。問題あればご指摘ください)

インストール

CoreOSは、インストーラではなくLiveCDからOSが立ち上がるだけなので、

  1. リモートコンソールを開いて、
  2. いろいろ設定して、
  3. coreos-installする

という流れになります。

ISOインストール

なにはともあれCoreOSのISOイメージをアップロードします。マニュアルはこれ↓

ISOイメージインストール(β版)|さくらのVPS|さくらインターネット公式サポートサイト

ネットワークの設定

リモートコンソールを立ち上げてネットワークの設定をします。(さいごのip link set ~ upは、はじめからUPになってるっぽいのでいらないかも)

sudo ip addr add X.X.X.X/X dev ethX
sudo ip route add default via X.X.X.X dev ethX
sudo ip link set dev ethX up

パスワードログインできるようにする

どうせcoreos-installするとこの辺の設定は残らないので、 coreユーザにパスワードを設定して一時的にパスワードログインできるようにします。

sudo passwd core

(以降はsshでログインして作業)

ネームサーバの設定

/etc/resolv.confに適切なネームサーバのIPを書く。

nameserver X.X.X.X
nameserver X.X.X.X

cloud-configをとってくる

あらかじめgistとかにあげといたcloud-configのテンプレートを、sedで適切な値に書き換えて使います。今回、私がつくったのは、ほぼほぼこのブログ記事↓にあったcloud-configと

CoreOS install to a VPS

さくらのマニュアル↓にあったiptablesの設定

iptablesの設定方法|さくらのVPS|さくらインターネット公式サポートサイト

をほぼほぼそのままテンプレート化したものです。 IPv6は有効化してないので省いていたり、SSHのポート変えたりはしてます。

wget https://gist.githubusercontent.com/yutannihilation/7bde5eab7bae44d20209/raw/cloud-config.yml

# 生成した秘密鍵は、ローカルに落としてきておく
ssh-keygen -f /tmp/core_id

DEVICE=ethX
HOSTNAME=HOSTNAME
SSH=12345

ADDRESS=$(ip a show dev ${DEVICE} | awk '$1 == "inet" {print $2}')
NETMASK=$(ip route show default | awk '$1 == "default" {print $3}')
PUBKEY=$(cat /tmp/core_id.pub)
NS=($(awk '$1 == "nameserver" {print $2}' /etc/resolv.conf))

# sedの区切り文字として「,」を使っているのは、「/」が$ADDRESSに含まれていて使えないため
sed -i \
  -e "s,SSH,${SSH}," \
  -e "s,HOSTNAME,${HOSTNAME}," \
  -e "s,DEVICE,${DEVICE}," \
  -e "s,ADDRESS,${ADDRESS}," \
  -e "s,GATEWAY,${NETMASK}," \
  -e "s,PUBKEY,${PUBKEY}," \
  -e "s,NS1,${NS[0]}," \
  -e "s,NS2,${NS[1]}," \
  cloud-config.yml

使ったcloud-configのテンプレート

gist7bde5eab7bae44d20209

インストールして再起動

coreos-installの引数としてcloud-configのファイルを指定することで、上記の設定でCoreOSのインストールが行われます。

sudo coreos-install -d /dev/vda -c cloud-config.yml

おわったら、VPSコンソールから「再起動」ボタンを押して再起動します。

ちょっとして、秘密鍵で指定したポートにSSHして入れることを確認したら成功です。

トラブルシューティング

なんどもつまづいて再インストールしたわけですが、このTips役立ちました。この技すごい。

CoreOSをさくらVPSサーバに入れようとして嵌ったのでメモ - Qiita

reboot してすぐ KVM/QEMU console が立ち上がる前に shift などを押して boot: プロンプトを出し boot: boot_kernel coreos.autologin とすれば コンソールから自動ログインすることができる。

私はShiftが利かなかったので、再起動後、VNCコンソール(HTML5版)左上のEscボタンを連打してたらいけました。