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」キーを押すと、画面の下部は次のような表示に切り替わると思います。ここがブートパラメーターを入力する画面です。
ブートパラメーターにインストールに必要な情報を入力します。 リンク先にも書かれていますが、次のような情報を(入力は大変ですが)入力し、全部入力が終わったら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が途中で読み込まれているのが確認できます。
再機動後、ログインプロンプトが表示されたらインストール完了です。
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