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

  • 17
    いいね
  • 7
    コメント
この記事は最終更新日から1年以上が経過しています。

参考にしたところ

さくらのVPSにCoreOSをインストールしてDocker専用機にする
CoreOSのトラブル対応
CoreOS install to a VPS
Introduction to networkd, network management from systemd

何で嵌ったか

下記を参考にして進めれば、さくっとインストールできるだろう。とか思ってたら案外嵌った。
さくらのVPSにCoreOSをインストールしてDocker専用機にする

理由は systemd をまったく理解していなかったため(今もほとんど理解できてはいないけど)

嵌ったところ

isoイメージからブートして、

shell
$ sudo vi /etc/systemd/network/static.network
[Match]
Name=ens3

[Network]
Address=<IPアドレス>/<サブネットマスク>
Gateway=<ゲートウェイ>
DNS=<DNS1>
DNS=<DNS2>
shell
$ sudo systemctl restart systemd-networkd

で、ネットワークサービス再起動すれば、ネットワークつながるだろうと思っていたらつながらない。

いろいろやってわかったのだが、理由はどうやら Name=ens3 でマッチするデバイスが見つからなかったかららしい。
ためしにName=ens*enp2s0等としてみたが同様だった。

この ens3 とか enp2s0 とかはどうやら udev が割り振ってくれるデバイス名のエイリアスらしいがどこを
みたらこのデバイス名のエイリアスが分かるのか、分からなかった。

shell
$ ifconfig

で見てみると、普通に eth0、eth1、eth2 などよく知ったエイリアスになっていたので、普通に
Name=eth0 と変えただけでOKだった。

※ eth0 等のでの指定はboot毎に対応するネットワークデバイスが変わる可能性があるので推奨されていません。

その他分かった点等

static.network の編集

iso イメージからのブートだとQEMU のコンソールが日本語キーボードを認識しないので、
/etc/systemd/network/static.network を編集するのはめんどくさい。

どうせこのときだけなので、

shell
sudo ifconfig <network port> <ip address> netmask <netmask>  
sudo route add default gw <default gateway IP>

として、ネットワークインタフェースを直接編集して

shell
$ sudo vi /etc/resolv.conf
name server <DNS1>

と直接いじってしまったほうが少しは楽なように思った。

cloud-config に間して

cloud-config
#cloud-config

write_files:
  - path: /etc/systemd/network/static.network
    permissions: 0644
    content: |
      [Match]
      Name=eth0

      [Network]
      Address=<IPアドレス>/<サブネットマスク>
      Gateway=<ゲートウェイ>
      DNS=<DNS1>
      DNS=<DNS2>

ssh_authorized_keys:
  - ssh-rsa ABCDABCDABCDABCDABCDABCDABCDABCDABCD...

と static.network に直接 write_files で書いてしまうと最初の boot時の
ネットワークサービス立ち上げ時に設定反映が間に合わないので

cloud-config
#cloud-config

coreos:  
  units:
    - name: static.network
      content: |
        [Match]
        Name=eth0

        [Network]
        Address=<IPアドレス>/<サブネットマスク>
        Gateway=<ゲートウェイ>
        DNS=<DNS1>
        DNS=<DNS2>

ssh_authorized_keys:
  - ssh-rsa ABCDABCDABCDABCDABCDABCDABCDABCDABCD...

と units を書いたほうが良い。

ssh で入れなくなった場合

上記、network 設定や ssh_authorized_keys の設定でへまをすると、boot後
coreos に入れなくなってしまうがそんなときは

reboot してすぐ KVM/QEMU console が立ち上がる前に shift などを押して
boot: プロンプトを出し boot: boot_kernel coreos.autologin とすれば
コンソールから自動ログインすることができる。
ここで、上記ネットワーク設定等が反映されているか確認する。