ページ内に広告が表示される場合があります

WSL2 に Amazon Linux 2023 (AL2023) 環境を一撃で構築する PowerShell スクリプトを作ってみた

技術系

以前、Windows環境の初期設定を自動化する自作ツールについてご紹介しました。

今回はそのアップデートとして、WSL2 上に Amazon Linux 2023 (AL2023) をサクッと構築するための PowerShell スクリプトを追加しました。

AWS環境での開発がメインの方は「ローカルも Amazon Linux で合わせたい」と思うことが多いはず。

でも、WSL の標準配布(wsl --list --online)には Amazon Linux が含まれておらず、手動で tar を拾ってきてインポートするのは意外と面倒です。

そこで、今回作成した .ps1 スクリプトを実行するだけで、以下の工程を全自動化できるようにしました。

  1. AWS 公式サイトから AL2023 の最新イメージを自動取得・ダウンロード
  2. 指定したドライブ・フォルダへ WSL2 としてインポート
  3. systemd の有効化
  4. Docker Engine および Docker Compose のインストール

なぜ Amazon Linux 2023 なのか?

最近は AWS EC2 上で Docker を使って開発作業をしています。

AWS EC2 のデフォルト環境は Amazon Linux です。

プライベートで開発や学習をする場合は全く別の環境でも良いですが、できるだけ職場と合わせた方が双方の経験が役に立ちます。しかし個人で AWS EC2 で開発するのはハードルが高いと思います。

そこで WSL2 で AL2023 を動かします。

Ubuntu でも Docker コンテナを AL2023 イメージにすれば差異は吸収できますが、WSL2 自体も AL2023 にしておくことで、dnf コマンドや設定ファイルの場所など、EC2 と完全に同じ操作感で作業できます。

スクリプトの使い方

ダウンロード

GitHubリポジトリから ZIPファイルをダウンロードするか、 git clone で取得してください

ZIP を展開して「ターミナル (管理者)」PowerShellを開き、ZIPを展開したフォルダで以下のコマンドを実行します。

cd wsl

WSL2 をインストールしていない場合は、以下のコマンドを実行します。

.\install-wsl-no-distribution.ps1

WSL2 がインストールされている状態で以下のコマンドを実行します。

.\install-wsl-al2023.ps1 -WslHome C:\wsl

-WslHome に WSL2 関連ファイルの保存先を指定します。C ドライブの空きが少ない場合は D ドライブなどを指定してください。

ディストリビューション名を変えたい場合は -DistroName で指定できます(省略時は AL2023)。

.\install-wsl-al2023.ps1 -WslHome D:\wsl\ -DistroName MyAL2023

あとはスクリプトが全部やってくれます。完了したら以下で起動できます。

wsl -d AL2023

ハマりどころとい解決策

スクリプト作成中にいくつかハマった点を共有します。同じ構成を手動で作ろうとしている方の参考になれば。

AL2023 はコンテナイメージベースなので最小構成

wsl --list --online に AL2023 はないため、AWS が配布しているコンテナイメージを wsl --import で取り込む方法を使います。ただしコンテナイメージは必要最小限の構成なので、mount コマンドすら入っていません。systemdiptableslibseccomp なども別途インストールが必要です。

Docker 公式リポジトリの $releasever 問題

AL2023用のDocker公式リポジトリはありませんので、Red Hat Enterprise Linux (RHEL) のリポジトリを使います。しかし AL2023 の $releasever2023.x.xxxxxxxx という独自フォーマットになっており、Docker 公式リポジトリの URL が 404 になります。リポジトリファイルの $releasever9(RHEL9 相当)に固定することで解決しました。

sed -i 's/\$releasever/9/g' /etc/yum.repos.d/docker-ce.repo

まとめ&リンク

WSL2 に AL2023 を入れる作業は、やってみると意外とハマりどころが多いです。
このスクリプトで一撃で終わらせてください。

コメント

タイトルとURLをコピーしました