7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker用ディストリビューションCoreOSをズボラなcloud-configでインストールしてみる

Posted at

そもそも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とかでます)
お疲れ様でした。

まとめ

ズボラなのは正義なのです!

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?