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にします。)
仮想イメージが作成できたら「設定」を選択して、各種設定を行います。
光学ドライブにダウンロードしておいたFedora CoreOSのISOイメージをセットします。
Fedora CoreOSとは基本的にSSHで接続するのでSSH用のポートフォワーディングを設定します。
yamlファイルの作成
Fedora CoreOSはIgnitionファイルというファイルを使用してインストール時の初期設定を行います。
初期設定を特定ファイルによって行うことで複数台のインストールを楽にする狙いがあるようです。
ホストマシンで以下のようなyamlファイルを作成します。
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 core@127.0.0.1 -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に導入してみようと思います。