仮想化通信

日本仮想化技術株式会社の公式エンジニアブログ

Fedora CoreOSを使う

Fedora CoreOSはContainer LinuxをベースとしたAtomic Hostの後継の製品で、Red Hat Enterprise Linux CoreOS (RHCOS) のOSS版にあたるものだそうです。

執筆日時点ではまだプレビュー版ではありますが、早速ためしてみることにしました。

ダウンロード方法

サイトからダウンロードします。 クラウドではなく、物理PC(もしくはサーバー)にセットアップする場合は次の2つが必要です。

  • Installer (ISO)
  • Raw (raw.xz)

PXEブートする場合は、PXEイメージをダウンロードしておいてください。今回はこちらについては詳しく述べません。

RawイメージをWebサーバー上に置く

インストールしようとしている物理PC(もしくはサーバー)からアクセスできるWebサーバー上にRaw (raw.xz)イメージをコピーします。例えば次のような感じです(実行するコマンドはLinuxディストリビューションやバージョンによって異なります)。

# yum install httpd
# cp fedora-coreos-30.20191014.0-metal.x86_64.raw.xz /var/www/html
# systemctl --now enable httpd

# firewall-cmd --permanent --zone public --add-service http
# firewall-cmd --reload

Ignition configを作成する

Fedora CoreOS - Getting Startedの「Generating Ignition configs」に従って、コンフィグファイルを作成します。

まず次のようなYAMLのような形式でファイルを作成します。

variant: fcos
version: 1.0.0
passwd:
  users:
    - name: core
      ssh_authorized_keys:
        - ここに公開鍵(xxx.pub)の中身を貼り付ける

Ignitionファイルはjson形式で用意する必要がありますが、上記のYAML形式で記述したファイルをFedora CoreOS Config Transpiler (FCCT)というもので変換できます。

作業用のマシンに対応するFedora CoreOS Config Transpiler (FCCT)をダウンロードしてパスを通します。 こちらからダウンロードしたあと、パスを通します。以下はmacOSの場合の例です。

% cd ~/Download
% mv fcct-x86_64-apple-darwin fcct
% chmod +x  fcct
% sudo mv fcct /usr/local/bin/ 

% fcct --version
Fedora CoreOS Config Transpiler v0.2.0

先に作成したYAML形式のファイル(your_config.fcc)をfcctコマンドで変換します。

% fcct --strict --pretty --input your_config.fcc --output your_config.ign

IgnitionファイルをWebサーバー上に置く

変換して出力されたIgnitionファイル(your_config.ign)をWebサーバー上に置きます。

インストール開始!

ISOイメージを使ってFedora CoreOSをインストールします。 物理マシンにインストールする場合はUSBブートするか、(容量的にすごくもったいない気がしますが)CD-Rなどのメディアに書き込んだディスクを使ってインストーラーをブートします。PXEサーバーが用意されているならソレを使う方法でも良いです。

起動したら「Tab」キーを押すと、画面の下部は次のような表示に切り替わると思います。ここがブートパラメーターを入力する画面です。

f:id:virtualtech:20191126174428p:plain
Fedora CoreOS インストーラー初期画面

ブートパラメーターにインストールに必要な情報を入力します。 リンク先にも書かれていますが、次のような情報を(入力は大変ですが)入力し、全部入力が終わったらEnterキーを押します。

coreos.inst.install_dev はCoreOSをインストールするデバイスを指定できます。対象がVMの場合はvda 、物理サーバーでは sda になるはずです。

coreos.inst.install_dev=sda
coreos.inst.image_url=http://<Webサーバーのアドレス>/fedora-coreos-30.20191014.0-metal.x86_64.raw.xz
coreos.inst.ignition_url=http://<Webサーバーのアドレス>/your_config.ign
coreos.inst.platform_id=qemu

インストールが始まります。Ignition configが途中で読み込まれているのが確認できます。

f:id:virtualtech:20191126175144p:plain
Fedora CoreOSのインストール中

再機動後、ログインプロンプトが表示されたらインストール完了です。

CoreOSとFedora CoreOSのインストーラーの違い

CoreOSのインストールはLiveBootしてSSH接続し、次のコマンドを一発で再起動みたいな形でした。

# coreos-install -d /dev/sda -i ignition.json

それと比べると、Fedora CoreOSのインストールはちょっと面倒ですね。 ちなみにOpenShift 4.x以降のベースとして使われる「Red Hat Enterprise Linux CoreOS (RHCOS)」も、基本的には同じような方法でセットアップします。

今回のサンプルではログインユーザーとログインに使うためのSSH公開鍵しか定義しませんでしたが、事前に設定を仕込んだIgnitionファイルを作ることで、セットアップを自動化できます。

とはいえ、あまり情報が見つからないのが現状です。おそらくベースとなっているContainer LinuxのConfig Exampleなどの情報が役立つかもしれません。

ちなみにインストール後のFedora CoreOSではDockerとPodmanがデフォルトでインストールされており、すぐコンテナーを利用できます。OS自体は自動アップデートされますので安心です。

[core@172-17-28-218 ~]$ docker --version
Docker version 18.06.3, build d7080c1
[core@172-17-28-218 ~]$ podman --version
podman version 1.5.1