はじめに
ISUCONの練習サービスprivate-isuをVagrantで動かすときに少し詰まったのでその時のメモです。
環境
- Ubuntu-22.04
- Vagrant 2.2.19
- Ansible core 2.14.6
- VirtualBox 6.1
環境構築
Vagrantのインストール
$ sudo apt install vagrant
ansibleのインストール
AnsibleのDocumentationを参考にします。以下,2023/7/30時点でのコマンドです。
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible
VirtualBoxのインストール
公式サイトから最新版の7.0をインストールしたらvagrant upする際にエラーを吐かれたので,aptで6.1をインストールします。
$ sudo apt install virtualbox-6.1
Vagrantfileの修正
vagrant upで起動するとバージョン依存関係のエラーが出たので,Vagrantfileの4行目の"ubuntu/focal64"を"bento/ubuntu-22.04"に変更しました。
Vagrant.configure("2") do |config|
# config.vm.box = "ubuntu/focal64"
config.vm.box = "bento/ubuntu-22.04"
config.vm.box_check_update = false
...
起動
Vagrant upで起動します。結構待たされます。
$ vagrant up
vscodeのremote explorerでsshするために,以下のコマンドでssh configを出力します。
$ vagrant ssh-config
出力は以下のようになると思うので,これを~/.ssh/configに貼り付けます。
Host app
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile hogehoge/private-isu/.vagrant/machines/app/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
PubkeyAcceptedKeyTypes +ssh-rsa
HostKeyAlgorithms +ssh-rsa
Host bench
HostName 127.0.0.1
User vagrant
Port 2200
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile hogehoge/private-isu/.vagrant/machines/bench/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
PubkeyAcceptedKeyTypes +ssh-rsa
HostKeyAlgorithms +ssh-rsa
ユーザーの変更
vagrantユーザーのままではvscodeで変更したコードを保存できないので,isuconユーザーでsshできるように変更します。
まずは,そのままvagrantユーザーでsshして,~/.ssh/authorized_keysをコピーします。
$ cat ~/.ssh/authorized_keys
ssh-rsa hogehogehogehoge......
....
↑これをコピーする
次に,isuconユーザーに切り替えてauthorized_keysを追加します。
$ sudo su isucon
$ vim ~/.ssh/authorized_keys
↑さっきコピーしたやつを追加して保存する
最後に,sshを切断して~/.ssh/configのUserをisuconに書き換えます。
Host app
HostName 127.0.0.1
User isucon
...
Host bench
HostName 127.0.0.1
User isucon
...
これで,vagrant upしてからsshして,コードの修正までを行えるようになったと思います。
おわりに
ISUCON頑張りたい,,