ozawaです。実はQiita初投稿です。メリークリスマス。
Finch
Amazonが開発したコンテナコマンドラインツールです。現状のサポートOSとしてMacOS/Windows/Linuxがあります。
https://runfinch.com/
Amazon Linux 2023でFinchを動かす
元々は違う検証のためにAmazon Linux 2023上でFinchを動かそうと思っていたのですが、意外とハマったので今回はこちらの備忘録を書いていきます。
MacOS/Windows用パッケージとLinux用パッケージの構造の違い
ここがうまく掴めずに苦労しました。
改めて考えると割と当たり前なのですが、何も考えずに使おうと思った際にハマったのでここの違いについてまとめます。
結論から言うと、MacOS/Windowsでは、Finchは各OSによってサポートされた仮想VM上で起動しますが、Linux上では直接サービスとして起動します。
MacOS/WindowsにおけるFinchのアーキテクチャは下記を参照ください。
https://runfinch.com/architecture/
Finchは、MacOSではLima VM、WindowsではWSL 2を前提として動きます。その仮想VM内においてcontainerdを起動し、操作することでFinchとして機能します。
Linuxの場合どうなるかというと、下記のAWSブログにおいてアーキテクチャが示されています。
https://aws.amazon.com/jp/blogs/opensource/announcing-finch-on-linux-for-container-development/
Linuxの場合は、FinchがLinux上のcontainerdを直接呼び出す形で機能します。
言い換えると、containerdサービスが起動していないとFinchが起動しません。
なので、Linuxで扱う場合は依存するサービスの起動設定を有効化しておく等の対応が必要です。
改めてですが、サポートOS毎に下記のような前提の違いがあります。
サポートOS | 仮想VMの有無 | 起動に必要な設定 |
---|---|---|
MacOS | 有 | 仮想VMの起動 |
Windows | 有 | WSL 2のセットアップ 仮想VMの起動 |
Linux | 無 | containerdサービスの起動 finchサービスの起動 |
実際にセットアップしてみた
Linuxでのインストール方法については下記ドキュメント内で詳細が記載されています。
https://runfinch.com/docs/managing-finch/linux/installation/
基本的にはこのやり方通りなのですが、今回実行したコマンドを下記に載せておきます
dnf upgrade --releasever=2023.6.20241121 -y
dnf install -y runfinch-finch
systemctl start containerd
systemctl start finch
- dnfパッケージは一応最新化しました
- Amazon Linux 2023ではdnfパッケージとして公開されているため、こちらでインストールしました
- containerdとfinchのsystemdサービスを起動しておきます
これで、Amazon Linux 2023上で動くようになりました。
SOCI snapshotter/ECR Credential Helperの設定
MacOS/Windowsの場合は、これらのツールが仮想VM内でプレインストールされているため、finch.yml内で定義すれば使える状態となっています。
Linuxの場合、これらツールについてはLinuxホストマシンにインストールした上で利用する形になります。
詳細は下記ドキュメント内にも記載されています。
https://runfinch.com/docs/managing-finch/linux/optional-components/
まとめ
Finchの原理を押さえておけば、Linux上でどのように動くのかはある程度予想はついたのですが、MacOSやWindowsでの使い方に慣れていると、ここの違いに少しハマりました。
MacOS/Windowsでは、1ツールとしての位置付けで捉えがちでしたが、Linuxで動かす場合には他サービスとの依存関係を意識する必要があり、少し戸惑いました。
ただ、改めてFinchの構造について意識することができ、勉強になったなーと思います。