参考にしたところ
さくらのVPSにCoreOSをインストールしてDocker専用機にする
CoreOSのトラブル対応
CoreOS install to a VPS
Introduction to networkd, network management from systemd
何で嵌ったか
下記を参考にして進めれば、さくっとインストールできるだろう。とか思ってたら案外嵌った。
さくらのVPSにCoreOSをインストールしてDocker専用機にする
理由は systemd をまったく理解していなかったため(今もほとんど理解できてはいないけど)
嵌ったところ
isoイメージからブートして、
$ sudo vi /etc/systemd/network/static.network
[Match]
Name=ens3
[Network]
Address=<IPアドレス>/<サブネットマスク>
Gateway=<ゲートウェイ>
DNS=<DNS1>
DNS=<DNS2>
$ sudo systemctl restart systemd-networkd
で、ネットワークサービス再起動すれば、ネットワークつながるだろうと思っていたらつながらない。
いろいろやってわかったのだが、理由はどうやら Name=ens3
でマッチするデバイスが見つからなかったかららしい。
ためしにName=ens*
やenp2s0
等としてみたが同様だった。
この ens3 とか enp2s0 とかはどうやら udev が割り振ってくれるデバイス名のエイリアスらしいがどこを
みたらこのデバイス名のエイリアスが分かるのか、分からなかった。
$ ifconfig
で見てみると、普通に eth0、eth1、eth2 などよく知ったエイリアスになっていたので、普通に
Name=eth0
と変えただけでOKだった。
※ eth0 等のでの指定はboot毎に対応するネットワークデバイスが変わる可能性があるので推奨されていません。
その他分かった点等
static.network の編集
iso イメージからのブートだとQEMU のコンソールが日本語キーボードを認識しないので、
/etc/systemd/network/static.network
を編集するのはめんどくさい。
どうせこのときだけなので、
sudo ifconfig <network port> <ip address> netmask <netmask>
sudo route add default gw <default gateway IP>
として、ネットワークインタフェースを直接編集して
$ sudo vi /etc/resolv.conf
name server <DNS1>
と直接いじってしまったほうが少しは楽なように思った。
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
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
とすれば
コンソールから自動ログインすることができる。
ここで、上記ネットワーク設定等が反映されているか確認する。