そもそもCoreOSとは?
CoreOSとはDockerを動かすためのミニマムなディストリビューションらしいです。
頭のわるい私は「コンテナ型とはいえホストがミニマムなのはオーバーヘッドが少なくていいですね!」くらいな意味合いだと思っていて、今までCentOSをミニマム要件でインストールしたものをDocker用に使ってました。
しかしetcdとfleetが入っているのがポイントだった!
クラスタ環境向けツールが標準でインストールされているようです。
そのぶん、yumとかのパッケージ管理は入っていないんだが(コンテナで動かすから別にいらない)
ということで今Dockerが動いている安PC(ASUS VIVO PC VM40B)にCoreOSをとりあえずインストールしてみたいと思います。
※本稿ではcloid-config.ymlの記述は最低限にしてますのであしからず
ISOダウンロード~インストールディスク作成
ISOはここからダウンロードできます。 https://coreos.com/os/docs/latest/booting-with-iso.html
ISOをCDとかに焼いて早速ブート!といきたいところですが…
VivoPCにはCDドライブとかないのでUSBにISOを焼いていきます。
私はよくUSBWriterを使ってます。
USBWriter https://sourceforge.net/projects/usbwriter/files/
USBから起動! ……あれれおかしいぞぉ??
VivoPCには旧型のbiosではなくUEFIが入っています。これがやっかいで、CoreOSのインストールディスクはEFIで起動しません。
仕方ないのでセキュアブートを無効にする方法を考えます。
電源をいれてF2かDelを押してUEFIに入った後、
起動→CSM→起動デバイス制御を "UEFIのみ" から "レガシーOPROM" に切り替えます。
そして再起動
インストール~SSH設定まで
起動はかなり早いです。
起動したらSSHはすでに使えるようになっているのですが、
autoLoginに設定されているユーザー名 core にはパスワードが設定されていないので
sshで入れない… そこで…
sudo passwd core
でパスワードを設定します。
んで、ここからはコピペが多くなるのでsshで入り直しましょう!
cloud-configってめんどくさいよね(最小の項目でインストールするぞ)
どうせクラスタ環境にもしない (お金ないし) のでここら辺は適当にいこうと思います。
今回はユーザー名coreos で設定します。
パスワードもこの際に設定するのですが、平文で打つのはアカン。
ということでハッシュを作っておきます。
mkpasswd -m sha-512 hogehoge > cloud-config.yml
hogehogeがパスワードです。ハッシュ化されたものがcloud-config.ymlに書き込まれます。
そして…
vi cloud-config.yml
でひらいて次のような項目を入力します。
#cloud-config
hostname: "coreos"
users:
- name: "coreos"
passwd: $6$biKaxs~~
groups:
- "sudo"
- "docker"
name は ユーザー名
passwd の項目には先ほど生成されたハッシュ化されたパスワードを設定して下さい。
gloups を"sudo"と"docker"にしておけばここで難しい設定をしなくてもインタラクティブに設定できる(はず)
最低限これくらいでクラスタ使わないなら動作的にはなんとかなります。
一応文法が間違えていないか確認してみます。
sudo coreos-cloudinit -validate=true -from-file=./cloud-config.yml
networkやNICの設定が必要みたいですが
無くても何とかなりました。(環境による?)
クラスタにするとかNICが複数ある場合なんかは必須だと思う
HDDにインストール!(+ハマったところ)
ここまで来たらあとはHDDにインストール!
……
といきたいのですが…
ちょっとだけハマりました。
sudo coreos-install -d /dev/sda -C stable -c cloud-config.yml
これでインストールできるはずですが…
(略)
blockdev: ioctl error on BLKRRPART: Device or resource busy
は?なんだよこれ。
どうやらHDDに別のOSがインストールされていたりすると
上手くいかないみたいですね。
ということでfdiskで消しちゃいましょう
sudo fdisk -l
でインストール先を確認
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
/dev/sda のようです。
sudo fdisk /dev/sda
パーティション確認はp
パーティション削除はd
パーティション作成はnです
で整えたらwで書き込みします
これでHDDは整いました。
もう一度
sudo coreos-install -d /dev/sda -C stable -c cloud-config.yml
でインストールできるはずです!(successとかでます)
お疲れ様でした。
まとめ
ズボラなのは正義なのです!