気になっていた CoreOS を触ってみましょう

CoreOS環境を構築します

少し前からチョコチョコ聞くようになって、気になってたCoreOSを触ってみるために環境を構築してみましょう。

CoreOSとは

もともとDocker専用の軽量Linux OSとしてCoreOS社によって開発されたLinuxディストリビューションの1つです。
Kernelは必要な機能だけに絞られていて、同時にインストールされるソフトウェアも最低限のものになっています。これによる、イメージサイズも小さく、OS自体が限られた機能だけを持っていることから、使用されるメモリも小さく、仮想マシンなどで動作させる場合も、コンテナを使う場合もオーバーヘッドが小さく抑えらています。
CoreOSはChrome OSから派生したOSで、パッケージマネージャーを持っていません。必要なソフトウェアだけをインストールすることで、セキュリティリスクを低減することができると言われています。
CoreOS自体に新しいソフトウェアをインストールするためにはSDKを使用して、ソフトウェアをインストールしたイメージを作成し直す必要があります。
CoreOSでは、アプリケーションをコンテナで動作するようになっています。そしてコンテナにはDockerを使用しています。CoreOSはブランド名としてContainer Linuxという名前になっている由縁でしょうか。
もうひとつの機能が標準でクラスタリング機能を搭載していることです。クラスタリング機能はetcdを使用していて、クラスタ上のetcdはleaderとfollower に分かれていて、障害を検出すると自動でleaderが入れ替わる動作をします。

CoreOSのインストールイメージをダウンロード

CoreOSはインストールイメージをダウントードしてしインストールします。CoreOSのインストールイメージをダウンロードするには公式サイトからダウンロードします。

公式サイト ダウンロードページ
https://coreos.com/os/docs/latest/booting-with-iso.html

インストールイメージはStable、Beta、Alphaがダウンロードできます。ここではStable版を使用します。
CoreOS Download Site
[Download Stable IOS]をクリックしてインストールイメージをダウンロードします。
ダウンロードしたアフィル名は_production_iso_image.isoです。

CoreOSインストール用の仮想サーバを作成

VirtualBox上にCoreOSをインストールするための仮想サーバを作成します。下記はサンプルなので実際には異なる構成になっています。

  1. VM VirtualBoxマネージャで[新規]アイコンをクリックします
  2. CoreOS VirtualBox

  3. 仮想マシンの作成ダイアログの[名前]、[タイプ]、[バージョン]を入力して[次へ]をクリックします
  4. CoreOS VirtualBox

  5. [メモリサイズ]を設定して[次へ]をクリックします>
    デフォルトの1024MBだと起動時にエラーになってしまったので、メモリサイズは2048MB以上を設定します
    キャプチャは1024MBになっていますが
  6. CoreOS VirtualBox

  7. [仮想ハードディスクを作成する]をチェックして[作成]をクリックします
  8. CoreOS VirtualBox

  9. [VDI(VirtualBox Disk Image]をチェックして[次へ]をクリックします
  10. CoreOS VirtualBox

  11. [可変サイズ]をチェックして[次へ]をクリックします
  12. CoreOS VirtualBox

  13. [ファイルの場所とサイズ]を設定して[作成]をクリックします
    とりあえず20GB(デフォルトは12GB)で進めてみます
  14. CoreOS VirtualBox

  15. 仮想サーバが作成されました
  16. CoreOS VirtualBox
    ### 仮想サーバのネットワークを設定します
    仮想サーバのネットワーク設定をしておきます。

    1. 仮想サーバを選択した状態で[設定]アイコンをクリックします
    2. CoreOS VirtualBox

    3. 仮想サーバの設定ダイアログで[ネットワーク]を選択します
    4. CoreOS VirtualBox

    5. [アダプター2]タブを選択してホストオンリーアダプターを設定して[OK]をクリックします
      必須ではないですが簡単にSSH接続するために設定しておきます
    6. CoreOS VirtualBox

  17. ダウンロードしたISOイメージをマウントして仮想サーバを起動します
  18. CoreOS VirtualBox

  19. 起動するとこんな感じになります
  20. CoreOS VirtualBox

起動しましたが、これはイメージからbootしただけなので、インストールはしていません。

ユーザcoreにパスワードを設定

VirtualBoxのコンソールだと使い難い場合もあるので、ユーザcoreにパスワードを設定してsshで接続しましょう。

$ sudo passwd core

CoreOSをインストール

起動が確認できたので、CoreOSをインストールします。CoreOSは

opensslの暗号化パスワードを記載したcloud-config.ymlを作成

core@localhost ~ $ openssl passwd -1 > cloud-config.yml

コマンドサンプル

core@localhost ~ $ openssl passwd -1 > cloud-config.yml
Password:
Verifying - Password:

ssh-keygenでssh-authorized-keys用のキーを作成してcloud-config.ymlに貼り付けます。

$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ./cloud-config.yml

cloud-config.ymlを編集

作成したcloud-config.ymlを編集します。編集はviコマンドで実施します。英語キーボードなため : は[Shit + ;]を押します。

編集前

opensslコマンドで入力したパスワードとssh-rsaが記載されています。

$1$OM8XuhTK$n7uS5SdF3ZMuyxX9tuo1n1

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChoNNu2kaVFY56uEFuqrr6N5+uX6jAjwovzh3/ifQtCEmx98bf+Jpz0UHxg2WxJFaUREkg0onx/3nIokmZhOTPFg6j7/pLj0Np20uEEIx8peYqdw80HFf22E9diHYR9kwC5we3CGqM5HuhwxGJFZahRikhOab74Kx6vgTVxk3KxJCoad5OdpsPr1Qnf1q3J7mX5tO2Ch4PwLNN16v0kKRVMAfc0Q6D0/XzndRsf8g7ECPrJLVD+6EHpNHmCYC3rS2HlhxKcRj8T6E0Dhu0JEYY7EehoPG0g6NJuD3uMPElHdIEt24c+zEunnaY5hZX9Sw4Tn1Tc+845UWeF//LYX+p core@localhost

編集後

記載されているパスワードを使用して以下のような感じ修正します。

#cloud-config

users:
 - name: core
   passwd: $1$iZUI8T0A$zdCpMVRq.if3oDR7FQlzj/
   groups:
    - sudo
    - 

   ssh-authorized-keys:
    - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChoNNu2kaVFY56uEFuqrr6N5+uX6jAjwovzh3/ifQtCEmx98bf+Jpz0UHxg2WxJFaUREkg0onx/3nIokmZhOTPFg6j7/pLj0Np20uEEIx8peYqdw80HFf22E9diHYR9kwC5we3CGqM5HuhwxGJFZahRikhOab74Kx6vgTVxk3KxJCoad5OdpsPr1Qnf1q3J7mX5tO2Ch4PwLNN16v0kKRVMAfc0Q6D0/XzndRsf8g7ECPrJLVD+6EHpNHmCYC3rS2HlhxKcRj8T6E0Dhu0JEYY7EehoPG0g6NJuD3uMPElHdIEt24c+zEunnaY5hZX9Sw4Tn1Tc+845UWeF//LYX+p core@localhost"

CoreOSをインストール

coreos-installコマンドでCoreOSをディスクにインストールします。

$ sudo coreos-install -d /dev/sda -C stable -c cloud-config.yml

コマンドサンプル

$ sudo coreos-install -d /dev/sda -C stable -c cloud-config.yml
2018/03/08 06:07:36 Checking availability of "local-file"
2018/03/08 06:07:36 Fetching user-data from datasource of type "local-file"
Current version of CoreOS Container Linux stable is 1632.3.0
Downloading the signature for https://stable.release.core-os.net/amd64-usr/1632.3.0/coreos_production_image.bin.bz2...
2018-03-08 06:07:41 URL:https://stable.release.core-os.net/amd64-usr/1632.3.0/coreos_production_image.bin.bz2.sig [566/566] -> "/tmp/coreos-install.UIiqO4A3b9/coreos_production_image.bin.bz2.sig" [1]
Downloading, writing and verifying coreos_production_image.bin.bz2...
2018-03-08 06:08:55 URL:https://stable.release.core-os.net/amd64-usr/1632.3.0/coreos_production_image.bin.bz2 [351502887/351502887] -> "-" [1]
gpg: Signature made Wed Feb 14 03:42:08 2018 UTC
gpg:                using RSA key 8826AD9569F575AD3F5643E7DE2F8F87EF4B4ED9
gpg: key 50E0885593D2DCB4 marked as ultimately trusted
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: Good signature from "CoreOS Buildbot (Offical Builds) " [ultimate]
blockdev: ioctl error on BLKRRPART: Device or resource busy
Failed to reread partitions on /dev/sda
Installing cloud-config...
Success! CoreOS Container Linux stable 1632.3.0 is installed on /dev/sda

インストールが完了するとサーバが再起動されます。この時にインストールイメージを抜く(除去)するのを忘れずに。

CoreOSを設定

インストールが完了したらネットワーク設定をおこないましょう。
ネットワークの設定は/etc/systemd/network/static.networkファイルを作成します。

$ sudo vi /etc/systemd/network/static.network

記述内容(内容は自分の環境に合わせて変更してください)

[Match]
Name=enp0s3

[Network]
Address=192.168.0.105
Gateway=192.168.0.1
DNS=192.168.0.1

ネットワークを再起動します

$ sudo systemctl restart systemd-networkd
$ ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:bc:8c:78 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.105/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 240f:7e:8dab:1:a00:27ff:febc:8c78/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 259sec preferred_lft 259sec
    inet6 fe80::a00:27ff:febc:8c78/64 scope link 
       valid_lft forever preferred_lft forever

CoreOSをアップデート

インストールが完了したら、CoreOSのアップデートを実行しておきましょう。

$ sudo update_engine_client -update

ここまでで一通りのインストールが完了しました。
今度は、CoreOSを使用しての記事を作りたいと思います。

スポンサーリンク
spdsk-side
spdsk-side