{"id":26833083,"url":"https://github.com/matsuu/cloud-init-isucon","last_synced_at":"2025-04-06T16:10:43.097Z","repository":{"id":39707812,"uuid":"488559895","full_name":"matsuu/cloud-init-isucon","owner":"matsuu","description":"ISUCON過去問環境を構築するためのcloud-config集","archived":false,"fork":false,"pushed_at":"2025-03-01T03:01:26.000Z","size":64,"stargazers_count":107,"open_issues_count":1,"forks_count":18,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-30T15:34:15.596Z","etag":null,"topics":["cloud-config","cloud-init","isucon"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matsuu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-04T11:23:42.000Z","updated_at":"2025-03-01T03:01:30.000Z","dependencies_parsed_at":"2024-04-29T10:28:55.151Z","dependency_job_id":"5576792e-cf48-4d1d-9563-18d144258e9f","html_url":"https://github.com/matsuu/cloud-init-isucon","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matsuu%2Fcloud-init-isucon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matsuu%2Fcloud-init-isucon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matsuu%2Fcloud-init-isucon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matsuu%2Fcloud-init-isucon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matsuu","download_url":"https://codeload.github.com/matsuu/cloud-init-isucon/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247509221,"owners_count":20950232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-config","cloud-init","isucon"],"created_at":"2025-03-30T15:27:56.759Z","updated_at":"2025-04-06T16:10:43.080Z","avatar_url":"https://github.com/matsuu.png","language":null,"readme":"# cloud-init-isucon\n\n## Overview\n\n[cloud-init](https://cloud-init.io/)に対応した環境で[ISUCON](http://isucon.net/)の過去問を構築するためのcloud-config集です。\nApple Silicon(aarch64)にも対応しているため、[Multipass](https://multipass.run/)などと組み合わせればM1 Mac上で過去問環境の構築が可能です。\n\n汎用的に作ってるので、cloud-initに対応した環境、例えば[AWS](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/user-data.html#user-data-cloud-init)、[Azure](https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/using-cloud-init)、[Google Cloud](https://blog.woohoosvcs.com/2019/11/cloud-init-on-google-compute-engine/)、[Oracle Cloud](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/images.htm#Oracle__linux-cloud-init)、[さくらのクラウド](https://manual.sakura.ad.jp/cloud/server/cloud-init.html)、[Multipass](https://multipass.run/)、[OrbStack](https://orbstack.dev/)、[VMware](https://kb.vmware.com/s/article/59557?lang=ja)など、クラウドからローカルまで[幅広く使える](https://cloudinit.readthedocs.io/en/latest/topics/availability.html)はずです。\n\n### cloud-config\n\n* 公式\n  * [ISUCON10予選](https://github.com/matsuu/cloud-init-isucon/tree/main/isucon10q)\n  * [ISUCON11予選](https://github.com/matsuu/cloud-init-isucon/tree/main/isucon11q)\n  * [ISUCON11本選](https://github.com/matsuu/cloud-init-isucon/tree/main/isucon11f)\n  * [ISUCON12予選](https://github.com/matsuu/cloud-init-isucon/tree/main/isucon12q)\n  * [ISUCON12本選](https://github.com/matsuu/cloud-init-isucon/tree/main/isucon12f)\n  * [ISUCON13](https://github.com/matsuu/cloud-init-isucon/tree/main/isucon13)\n  * [ISUCON14](https://github.com/matsuu/cloud-init-isucon/tree/main/isucon14)\n* 非公式\n  * [Pixiv社内ISUCON2016](https://github.com/matsuu/cloud-init-isucon/tree/main/private-isu)\n  * [ISUCON11事前講習](https://github.com/matsuu/cloud-init-isucon/tree/main/isucon11-prior)\n  * [Kayac社内ISUCON2022](https://github.com/matsuu/cloud-init-kayac-isucon-2022)\n  * [NRI-ISUCON2022](https://github.com/matsuu/cloud-init-isucon/tree/main/nri-isucon2022)\n\nサーバ内の構築にはAnsibleを使っています。Ansibleのplaybookのみ必要な場合は[matsuu/ansible-isucon](https://github.com/matsuu/ansible-isucon)をどうぞ。\n\n## Usage\n\n### さくらのクラウドでの利用方法\n\n詳細な手順は[さくらのナレッジ](https://knowledge.sakura.ad.jp/31520/)をご確認ください。\n\n### AWSでの利用方法\n\nAWSはユーザーデータにcloud-initを渡すことができます。\n詳細は[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/user-data.html#user-data-cloud-init)をご確認ください。\n\n### OrbStackでの利用方法\n\n* [OrbStack](https://orbstack.dev/)実行環境を用意します\n  ```sh\n  brew install orbstack\n  ```\n* このリポジトリ内のcfgファイルを手元に用意します\n  ```sh\n  git clone https://github.com/matsuu/cloud-init-isucon.git\n  cd cloud-init-isucon\n  ```\n* cloud-initを使って起動します\n  ```sh\n  # isucon10予選の場合\n  orbctl create -u isucon -c isucon10q/isucon10q.cfg ubuntu:focal isucon10q\n\n  # isucon11予選の場合\n  orbctl create -u isucon -c isucon11q/isucon11q.cfg ubuntu:focal isucon11q\n\n  # isucon11本選の場合\n  orbctl create -u isucon -c isucon11f/isucon11f.cfg ubuntu:focal isucon11f\n\n  # isucon12予選の場合\n  orbctl create -u isucon -c isucon12q/isucon12q.cfg ubuntu:jammy isucon12q\n\n  # isucon12本選の場合\n  orbctl create -u isucon -c isucon12f/isucon12f.cfg ubuntu:jammy isucon12f\n\n  # isucon13の場合\n  orbctl create -u isucon -c isucon13/isucon13.cfg ubuntu:jammy isucon13\n\n  # isucon14の場合\n  orbctl create -u isucon -c isucon14/isucon14.cfg ubuntu:noble isucon14\n  ```\n* orbでログインできます。ログイン後はcdを実行してホームディレクトリに移動してください\n  ```sh\n  orb\n  cd\n  ```\n\n### Multipassでの利用方法\n\n* [Multipass](https://multipass.run/)実行環境を用意します\n  * macOSユーザーは[Homebrew](https://brew.sh/)を使ってインストール可能です\n  ```sh\n  brew install multipass\n  ```\n  * Windowsユーザーは[アプリ インストーラー](https://apps.microsoft.com/store/detail/app-installer/9NBLGGH4NNS1)を使ってインストール可能です\n  ```powershell\n  winget.exe install Multipass\n  ```\n* このリポジトリ内のcfgファイルを手元に用意します\n  ```sh\n  git clone https://github.com/matsuu/cloud-init-isucon.git\n  cd cloud-init-isucon\n  ```\n* cloud-initを使って起動します\n  ```sh\n  # isucon10予選の場合\n  multipass launch --name isucon10q --cpus 2 --disk 20G --memory 4G --timeout 86400 --cloud-init isucon10q/isucon10q.cfg 20.04\n\n  # isucon11予選の場合\n  multipass launch --name isucon11q --cpus 2 --disk 20G --memory 4G --timeout 86400 --cloud-init isucon11q/isucon11q.cfg 20.04\n\n  # isucon11本選の場合\n  multipass launch --name isucon11f --cpus 2 --disk 20G --memory 4G --timeout 86400 --cloud-init isucon11f/isucon11f.cfg 20.04\n\n  # isucon12予選の場合\n  multipass launch --name isucon12q --cpus 2 --disk 20G --memory 4G --timeout 86400 --cloud-init isucon12q/isucon12q.cfg 22.04\n\n  # isucon12本選の場合\n  multipass launch --name isucon12f --cpus 2 --disk 20G --memory 4G --timeout 86400 --cloud-init isucon12f/isucon12f.cfg 22.04\n\n  # isucon13の場合\n  multipass launch --name isucon13 --cpus 2 --disk 20G --memory 4G --timeout 86400 --cloud-init isucon13/isucon13.cfg 22.04\n\n  # isucon14の場合\n  multipass launch --name isucon14 --cpus 2 --disk 20G --memory 4G --timeout 86400 --cloud-init isucon14/isucon14.cfg 24.04\n  ```\n  * cpus, disk, memoryは必要に応じて増減させてください\n  * 末尾の `20.04` や `22.04` や `24.04` はUbuntuのバージョンです\n  * cloud-initは時間がかかるため以下のようなメッセージが表示される場合がありますが、バックグラウンドで構築は継続しています\n    ```\n    launch failed: The following errors occurred:\n    timed out waiting for initialization to complete\n    ```\n* 進捗は `/var/log/cloud-init-output.log` で確認できます\n  ```sh\n  multipass exec isucon12q -- tail -f /var/log/cloud-init-output.log\n  ```\n* `multipass shell` でシェルが使えます\n  ```sh\n  multipass shell isucon12q\n  ```\n* 環境の停止再開は stop/start です\n  ```sh\n  multipass stop isucon12q\n  multipass start isucon12q\n  ```\n* 環境の削除は `multipass delete --purge` です\n  ```sh\n  multipass delete --purge isucon12q\n  ```\n\n## FAQ\n\n### isuconユーザもしくはあるべきファイルが存在しない\n\nMultipassやさくらのクラウドでの構築の場合、サーバ起動後も環境構築が続いている可能性があります。\n`/var/log/cloud-init-output.log` で進捗を確認してください。\n\n```sh\ntail -f /var/log/cloud-init-output.log\n```\n\n### 構築の途中でエラーが発生した\n\nネットワークの状況やスリープモードなどの影響で構築中にエラーが発生した場合は以下のコマンドで再試行ができます。\n\n```sh\nsudo /var/lib/cloud/instance/scripts/runcmd\n```\n\n再試行や環境を一から作り直しても解決しない場合はissueで報告してみてください。\n\n## Others\n\n* [matsuu/ansible-isucon](https://github.com/matsuu/ansible-isucon)\n* [matsuu/aws-isucon](https://github.com/matsuu/aws-isucon)\n* [matsuu/docker-isucon](https://github.com/matsuu/docker-isucon)\n* [matsuu/oci-arm-isucon](https://github.com/matsuu/oci-arm-isucon)\n* [matsuu/vagrant-isucon](https://github.com/matsuu/vagrant-isucon)\n* [matsuu/wsl-isucon](https://github.com/matsuu/wsl-isucon)\n\n## License\n\nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatsuu%2Fcloud-init-isucon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatsuu%2Fcloud-init-isucon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatsuu%2Fcloud-init-isucon/lists"}