Help us understand the problem. What is going on with this article?

Fedora CoreOSをVirtualBoxで試してみた

自己紹介

趣味でプログラミングをしている高専2年生です。
普段は†限界開発鯖†という開発コミュニティにいます。

Twitter: @programmer_shun
GitHub: @shun-shobon

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を起動し、「新規」を選択、名前や場所を指定します。
スクリーンショット 2020-09-14 18.01.42.png

メモリを設定します。今回は8GBを割り当てました。
スクリーンショット 2020-09-14 18.01.50.png

ハードディスクの設定を行います。お好きな大きさにしてください。(今回は8GBにします。)
スクリーンショット 2020-09-14 18.01.57.png

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

高速化のためにプロセッサー数を1から4に増やします。
スクリーンショット 2020-09-14 18.03.28.png

光学ドライブにダウンロードしておいたFedora CoreOSのISOイメージをセットします。
スクリーンショット 2020-09-14 18.10.33.png

Fedora CoreOSとは基本的にSSHで接続するのでSSH用のポートフォワーディングを設定します。
スクリーンショット 2020-09-14 18.11.32.png

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

スクリーンショット 2020-09-14 21.50.37.png

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

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

スクリーンショット 2020-09-14 21.51.57.png

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

スクリーンショット 2020-09-14 21.57.41.png

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

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

スクリーンショット 2020-09-14 22.02.08.png

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

Docker&Podmanを試す

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

Docker

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

スクリーンショット 2020-09-14 22.07.13.png

Podman

podman run hello-world

スクリーンショット 2020-09-14 22.06.58.png

感想

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

shun-shobon
Python / JS / TS / Haskell を書く高専2年生。限界開発鯖所属。Webアプリ製作にAtCoder、時々CTF。CI/CDとLinterが大好きで何でも自動化します。BlenderやAdobeも使います。
https://shun.technology
approvers
高専生による(限界)開発コミュニティ、 限界開発鯖(Approvers)のOrgnizationです!
https://approvers.dev/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした