cloud-initに対応した環境でISUCONの過去問を構築するためのcloud-config集です。 Apple Silicon(aarch64)にも対応しているため、Multipassなどと組み合わせればM1 Mac上で過去問環境の構築が可能です。
汎用的に作ってるので、cloud-initに対応した環境、例えばAWS、Azure、Google Cloud、Oracle Cloud、さくらのクラウド、Multipass、OrbStack、VMwareなど、クラウドからローカルまで幅広く使えるはずです。
- 公式
- 非公式
サーバ内の構築にはAnsibleを使っています。Ansibleのplaybookのみ必要な場合はmatsuu/ansible-isuconをどうぞ。
詳細な手順はさくらのナレッジをご確認ください。
AWSはユーザーデータにcloud-initを渡すことができます。 詳細は公式ドキュメントをご確認ください。
- OrbStack実行環境を用意します
brew install orbstack
- このリポジトリ内のcfgファイルを手元に用意します
git clone https://github.com/matsuu/cloud-init-isucon.git cd cloud-init-isucon
- cloud-initを使って起動します
# isucon10予選の場合 orbctl create -u isucon -c isucon10q/isucon10q.cfg ubuntu:focal isucon10q # isucon11予選の場合 orbctl create -u isucon -c isucon11q/isucon11q.cfg ubuntu:focal isucon11q # isucon11本選の場合 orbctl create -u isucon -c isucon11f/isucon11f.cfg ubuntu:focal isucon11f # isucon12予選の場合 orbctl create -u isucon -c isucon12q/isucon12q.cfg ubuntu:jammy isucon12q # isucon12本選の場合 orbctl create -u isucon -c isucon12f/isucon12f.cfg ubuntu:jammy isucon12f # isucon13の場合 orbctl create -u isucon -c isucon13/isucon13.cfg ubuntu:jammy isucon13
- orbでログインできます。ログイン後はcdを実行してホームディレクトリに移動してください
orb cd
- Multipass実行環境を用意します
- macOSユーザーはHomebrewを使ってインストール可能です
brew install multipass
- Windowsユーザーはアプリ インストーラーを使ってインストール可能です
winget.exe install Multipass
- このリポジトリ内のcfgファイルを手元に用意します
git clone https://github.com/matsuu/cloud-init-isucon.git cd cloud-init-isucon
- cloud-initを使って起動します
# isucon10予選の場合 multipass launch --name isucon10q --cpus 2 --disk 20G --memory 4G --timeout 86400 --cloud-init isucon10q/isucon10q.cfg 20.04 # isucon11予選の場合 multipass launch --name isucon11q --cpus 2 --disk 20G --memory 4G --timeout 86400 --cloud-init isucon11q/isucon11q.cfg 20.04 # isucon11本選の場合 multipass launch --name isucon11f --cpus 2 --disk 20G --memory 4G --timeout 86400 --cloud-init isucon11f/isucon11f.cfg 20.04 # isucon12予選の場合 multipass launch --name isucon12q --cpus 2 --disk 20G --memory 4G --timeout 86400 --cloud-init isucon12q/isucon12q.cfg 22.04 # isucon12本選の場合 multipass launch --name isucon12f --cpus 2 --disk 20G --memory 4G --timeout 86400 --cloud-init isucon12f/isucon12f.cfg 22.04 # isucon13の場合 multipass launch --name isucon13 --cpus 2 --disk 20G --memory 4G --timeout 86400 --cloud-init isucon13/isucon13.cfg 22.04
- cpus, disk, memoryは必要に応じて増減させてください
- 末尾の
20.04
や22.04
はUbuntuのバージョンです - cloud-initは時間がかかるため以下のようなメッセージが表示される場合がありますが、バックグラウンドで構築は継続しています
launch failed: The following errors occurred: timed out waiting for initialization to complete
- 進捗は
/var/log/cloud-init-output.log
で確認できますmultipass exec isucon12q -- tail -f /var/log/cloud-init-output.log
multipass shell
でシェルが使えますmultipass shell isucon12q
- 環境の停止再開は stop/start です
multipass stop isucon12q multipass start isucon12q
- 環境の削除は
multipass delete --purge
ですmultipass delete --purge isucon12q
Multipassやさくらのクラウドでの構築の場合、サーバ起動後も環境構築が続いている可能性があります。
/var/log/cloud-init-output.log
で進捗を確認してください。
tail -f /var/log/cloud-init-output.log
ネットワークの状況やスリープモードなどの影響で構築中にエラーが発生した場合は以下のコマンドで再試行ができます。
sudo /var/lib/cloud/instance/scripts/runcmd
再試行や環境を一から作り直しても解決しない場合はissueで報告してみてください。
- matsuu/ansible-isucon
- matsuu/aws-isucon
- matsuu/docker-isucon
- matsuu/oci-arm-isucon
- matsuu/vagrant-isucon
- matsuu/wsl-isucon
MIT