Fedora CoreOSをVirtualBoxで試してみた


Fedora CoreOSとは

Fedora CoreOSとは2020年5月26日にサポート終了が発表されたCoreOS社のContainer Linux(旧CoreOS)の後継となるOSです。

Container Linuxのサポート終了についての詳しい情報はこちらをご覧ください。

今回はこのFedora CoreOSをVirtualBoxを用いて試してみようと思います。

Fedora CoreOSのISOイメージの入手

こちらのダウンロードページからFedora CoreOSのISOイメージをダウンロードします。
Fedora CoreOSには3つのリリースストリームが存在します。

  • Stable(安定しており本番環境でも使用可能)
  • Test(Stableの前の段階で本番環境で動かせるかをテストするためのバージョン)
  • Next(新機能やカーネルの最新バージョンを使用することができる)

今回はStable版の32.20200824.3.0を使用します。

仮想イメージの作成

VirtualBoxを起動し、「新規」を選択、名前や場所を指定します。

メモリを設定します。今回は8GBを割り当てました。

ハードディスクの設定を行います。お好きな大きさにしてください。(今回は8GBにします。)

仮想イメージが作成できたら「設定」を選択して、各種設定を行います。

高速化のためにプロセッサー数を1から4に増やします。

光学ドライブにダウンロードしておいたFedora CoreOSのISOイメージをセットします。

Fedora CoreOSとは基本的にSSHで接続するのでSSH用のポートフォワーディングを設定します。

yamlファイルの作成

Fedora CoreOSはIgnitionファイルというファイルを使用してインストール時の初期設定を行います。
初期設定を特定ファイルによって行うことで複数台のインストールを楽にする狙いがあるようです。

ホストマシンで以下のようなyamlファイルを作成します。

ignition.yml
variant: fcos
version: 1.1.0
passwd:
  users:
    - name: core
      ssh_authorized_keys:
        - <公開鍵>

variant

Fedora CoreOSのIgnitionファイルと識別するための項目です。

version

Ignitionファイルのバージョンを設定します。

passwd

デフォルトで作成されるユーザやグループを設定します。

passwd.users

ユーザの設定をします。

passwd.users.name

ユーザの名前を設定します。
coreにした場合は特殊なユーザになり、デフォルトでsudoをパスワードなしで使用することができます。

passwd.users.ssh_authorized_keys

sshの公開鍵をリストにして貼り付けます。ここで設定した公開鍵でSSH接続できるようになります。

設定項目は他にもあります。詳細はこちらをご覧ください。

Ignitionファイルの生成

作成したyamlファイルはそのままではインストールに使用できません。
インストールではyamlから変換したignファイル(実体はただのjsonファイル)を使用します。
通常のyaml→json変換ツールを使用することもできますが、公式のツールであるFedora CoreOS Configuration Transpiler(FCCT)を使用することで特有の構文エラーを発見することが可能です。

FCCTはDockerまたはPodmanで簡単に実行することが可能です。

# Podmanを使用する場合はdockerの部分をpodmanに置き換えてください。
docker run -i --rm quay.io/coreos/fcct:release --pretty --strict < ignition.yaml > ignition.ign

Ignitionファイルのホスティング

作成したIgnitionファイルを仮想マシンに渡すためにFedora CoreOSではhttpを利用することを推奨しています。
お手軽なhttpホスティングの例としてpython3を利用したホスティングを例としてあげます。Ignitonファイルが存在するディレクトリで以下を実行してください。

python3 -m http.server

OSインストール

準備が整ったので仮想マシンにFedora CoreOSをインストールします。
仮想マシンを起動し、ignitionファイルを入手します。

curl -LO http://<ホストOSのローカルIP>:8000/ignition.ign

以下のコマンドでOSをインストールします。特に確認が入るわけではないのでインストール先のドライブに注意してください。また、インストール先のドライブのパーティションもすべて自動的に削除されます。

sudo coreos-installer install /dev/sda --ignition-file ignition.ign

インストールに成功したらsudo shutdown -h nowで一度シャットダウンして仮想マシンの光学ドライブにセットしていたISOイメージを取り外します。

仮想マシンを起動して、ホストマシンからSSH接続を試してみます。

# ポート番号はポートフォワーディングで設定したポートを指定してください。
ssh [email protected] -p 2222

無事SSH接続できたらOSのインストールは成功です。ここで一度仮想マシンのスナップショットを作成しておくことをおすすめします。もし仮想マシンに問題が発生したり一度リセットしてやり直したいときに便利です。

Docker&Podmanを試す

Fedora CoreOSにはデフォルトでDockerとPodmanがインストールされています。試しに動作させてみます。

Docker

# Dockerはsudoが必要なので注意してください。
sudo docker run hello-world

Podman

podman run hello-world

感想

今回始めてコンテナ向けOSを試してみましたが、導入自体は案外楽だと感じました。
今度DigitalOceanに導入してみようと思います。