LoginSignup
58
59

More than 5 years have passed since last update.

CoreOSに入門してみる (1) インストール

Last updated at Posted at 2014-11-02

1. はじめに

CoreOSに入門してみました。

CoreOSはミニマムな新しいOSで、etcdというものでクラスタが組めてfleetというもので分散環境が構築できるらしい。
分散環境を構築したCoreOSクラスタ上で、Dockerによってアプリケーションを動かすらしい。

という程度の知識からスタートです。

何事もまずはインストールしないと、ということで本記事ではISOイメージからCoreOSのVMを作成してみます。
また、CoreOSのCloud-Configという機能も使ってみます。

2. ダウンロード

まずはISOイメージをダウンロードします。

ISOダウンロードページから最新のStable版をダウンロードします。
サイズは136MBでした。

2014/11/2現在でのStable最新版はこんな感じです。

  • CoreOS 444.5.0
  • Kernel 3.16.2
  • Docker 1.2.0
  • etcd 0.4.6
  • fleet 0.8.3

3. VM作成

VirtualBoxを使います。

VirtualBoxマネージャーを起動して、適当にVMを作っていきます。

スクリーンショット 2014-10-26 1.28.51.png

ホスト側からSSHできるようにしたいので、ネットワークアダプターにホストオンリーアダプタを追加します。
また、ISOをマウントしておきます。

設定は、こんな感じ。

スクリーンショット 2014-10-26 1.34.37.png

4. VM起動

起動してみます。
スクリーンショット 2014-10-26 1.38.51.png

CoreOSの文字がカラフルでシャレオツです。
まだHDDにはインストールされておらず、CDからブートしている状態です。

試しにifconfigしてみました。
スクリーンショット 2014-10-26 1.43.42.png

NICが2個あることが確認できます。

5. インストール

では、HDDにインストールしていきたいと思います。
が、その前にCloud−Configの設定ファイルを作成します。

Cloud-Config

CoreOSでは、標準でCloud-Configという機能が利用できます。

OS起動時にYAMLの設定ファイルを読み、OSの基本設定を行う機能です。
YAMLで設定を記述しておけば、次のものが設定できます。

  • ネットワーク
  • ユーザ
  • systemd
  • など

cloud-initプロジェクトにCoreOSの独自要素を追加したものだそうです。

とりあえず、SSHでログインできるようにネットワークとユーザの設定をしてみます。

ユーザは適当なユーザにパスワードと公開鍵を設定します。
Githubから公開鍵を取得してくる便利機能があるのでそれも使ってみます。
パスワードハッシュの生成方法など諸々公式のマニュアルに書いてあります。

ネットワークはsystemd-networkdの設定ファイルを書き出す方法で設定します。
Unitsで設定すれば、systemd-networkdのリスタートも自動でやってくれるみたいです。

~/cloud-config.yml
#cloud-config

coreos:
  units:
    - name: 10-static.network
      runtime: no
      content: |
        [Match]
        Name=enp0s8

        [Network]
        Address=192.168.33.200/24

users:
  - name: nownabe
    passwd: ...
    groups:
      - sudo
    coreos-ssh-import-github: nownabe

先頭の#cloud-configは必須です。

インストール

インストール用のスクリプトが用意されているので、それを使います。

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

OSイメージをダウンロードをしてるみたいですが、数分で終わります。

installed.png

cloud-config.ymlは、/var/lib/coreos-install/user_dataに保存されます。

インストールが終わったら、ディスクをアンマウントして再起動します。

sudo reboot

スクリーンショット 2014-11-02 23.04.22.png

ネットワークの設定ができてるのと、作ったユーザでログインできることを確認してみてください。

うまくいかない時は、coreos-cloudinitコマンドでcloud-configファイルを指定してCoreOSを設定し直すことができるので、色々試してみます。
設定のログも出力されるので、動作を理解するのにいいかもしれません。

sudo coreos-cloudinit -from-file=cloud-config.yml

設定は一回リセットされるわけではないので注意が必要です。
(1回作ったユーザは残ったまま)

6. SSHしてみる

ホストのMacからSSHしてみます。

% ssh 192.168.33.200
Last login: Sun Nov  2 14:31:56 2014
CoreOS (stable)
nownabe@localhost ~ $ cat /etc/os-release
NAME=CoreOS
ID=coreos
VERSION=444.5.0
VERSION_ID=444.5.0
BUILD_ID=
PRETTY_NAME="CoreOS 444.5.0"
ANSI_COLOR="1;32"
HOME_URL="https://coreos.com/"
BUG_REPORT_URL="https://github.com/coreos/bugs/issues"

7. おわりに

第1回は以上です。
ネットワークまわりでなかなか苦労しました。
単にsystemd-networkdに慣れていないせいなのか、CoreOSのcloud-initの動作を理解してないのか、もうちょっと触ってみる必要がありそうです。

次回はクラスタ組んでDockerコンテナのフェイルオーバーとかやりたいです。

参考記事

参考にさせていただきました。
ありがとうございます!

58
59
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
58
59