作業ログ源泉垂れ流し

しがないIT技術者の作業ログを垂れ流す

Fedora CoreOSのインストール練習 1

KVM上にFedora CoreOSをインストールしてみる。

公式ドキュメントを参考に作業を進める。

最初に、公式ダウンロードページから、QEMU用のイメージファイルをダウンロードして展開する。

$ curl -O 'https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/34.20210518.3.0/x86_64/fedora-coreos-34.20210518.3.0-qemu.x86_64.qcow2.xz'
$ unxz fedora-coreos-34.20210518.3.0-qemu.x86_64.qcow2.xz

次に、公式ドキュメントを参考に、Ignitionファイルを準備する。

まずはButaneのDockerイメージを取得する。

$ docker pull quay.io/coreos/butane:release

次に、YAML形式のButan configファイル simple.bu を作成する。
ここではユーザcoreを作るだけの設定にする。

variant: fcos
version: 1.3.0
passwd:
  users:
    - name: core
      ssh_authorized_keys:
        - (ssh公開鍵)

ここで(ssh公開鍵)は実際のSSH公開鍵を入力する。

Butan configファイル simple.bu からJSON形式のIgnition configファイル simple.ign に変換する。

$ docker run -i --rm quay.io/coreos/butane:release < simple.bu > simple.ign

出力されたsimple.ignの中身はこれ。

{"ignition":{"version":"3.2.0"},"passwd":{"users":[{"name":"core","sshAuthorizedKeys":["(ssh公開鍵)"]}]}}

ここまででFedora CoreOSのインストールに必要なものは準備できたが、 Debian系ではAppArmorが有効になっており、そのままvirt-installすると

can't load /path/to/simple.ign: Failed to open file “/path/to/simple.ign”: Permission denied

といって怒られる。
そこで、libvirtsimple.ignファイルを読めるように、AppArmorの設定を変更する。

$ sudo vi /etc/apparmor.d/libvirt/TEMPLATE.qemu
 profile LIBVIRT_TEMPLATE flags=(attach_disconnected) {
   #include <abstractions/libvirt-qemu>
+  /path/to/simple.ign rk,
 }

準備が整ったので、VMを作成する。
手元のホストでは、os-variantでfedora-coreos-stableが認識してもらえなかったので、fedora31を指定している。

$ virt-install --name coreos --vcpus 1 --memory 2048 --os-variant fedora31 --import --graphics=none --disk path=coreos.img,size=10,backing_store=$PWD/fedora-coreos-34.20210518.3.0-qemu.x86_64.qcow2 --network network=default --qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=$PWD/simple.ign"

インストールが終了したら、sshで接続してみる。
IPアドレスはインストール時のコンソールの最後の方に次のように表示されている。

enp1s0: 192.168.122.22 fe80::ba1b:5f86:aa42:280f

coreユーザでssh接続できることを確認する。

$ ssh core@192.168.122.22

無事Fedora CoreOSがKVM上にインストールできた!