Skip to content

Instantly share code, notes, and snippets.

@takehaya
Last active July 26, 2023 04:02
Show Gist options
  • Save takehaya/7c6f65c4611e417b5898fb7b999b794b to your computer and use it in GitHub Desktop.
Save takehaya/7c6f65c4611e417b5898fb7b999b794b to your computer and use it in GitHub Desktop.

multipass に関するメモ

tags: back of ads

インストール

# mac install
brew install --cask multipass

チートシート兼VMの起動まで

# os さがし
multipass find

# 22.04 をtestvmという名前で上げる
# multipass launch 22.04 --name workvm --mem 16G --disk 100G --cpus 4
multipass launch 18.04 --name workvm --mem 16G --disk 100G --cpus 4


# 状態を見てみる
multipass exec workvm -- lsb_release -a && free -h && df -h && lscpu

# VMに入る
multipass shell workvm

# stop
multipass stop workvm

# start
multipass start workvm

# directory作成 & mount
# 注意点VM(ゲスト)側のHOMEに対してマウントするとshell failed: ssh failed to authenticate: 'Access denied for 'publickey'. Authentication that can continue: publickey'と言われて怒られるので注意
mkdir -p ~/multipass_dir/workvm 
multipass mount ~/multipass_dir/workvm workvm:~/workspaces

# unmount
multipass umount workvm

# vm環境の一覧
multipass list

# vm環境の情報を表示
# "--format json|yaml" など選べる
multipass info workvm

# testvmの削除(まだ削除されずゴミ箱に入れられる)
multipass delete workvm

# testvmの復元
multipass recover workvm

# vmの削除
multipass purge

MultipassからVSCodeを利用する

# passwordを変更
multipass exec workvm -- sudo passwd ubuntu

# 鍵を持ってくる
sudo cp /var/root/Library/Application\ Support/multipassd/ssh-keys/id_rsa ~/.ssh/id_multipass_rsa
sudo chown `id -un` ~/.ssh/id_multipass_rsa

# sshできるか確認
ssh -i ~/.ssh/id_multipass_rsa ubuntu@$(multipass info workvm --format json|jq -r ".info.workvm.ipv4[]")

# ssh configを生成
cat << EOF >> ~/.ssh/config
Host workvm
    HostName $(multipass info workvm --format json|jq -r ".info.workvm.ipv4[]")
    IdentityFile ~/.ssh/id_multipass_rsa
    User ubuntu
EOF

あとはVScodeのRemote SSHを利用してworkvmにアクセスする

所感

割とサクッと立ち上がって cloudinit も使って動かすこともできて大変便利。ただ不満なポイントとしてはネットワーク機能がとても使えないのが厳しいところ。

例えばVM同士を繋いでトポロジーを組んでルータの実験したいなと思った際に使い物にならないのが大変不満ですね。

やはり M1Mac の場合は Vagrant + Parallels でやるのが一番説がありますね。 まぁ netns でやれよという話はあるんですがアプリケーションに対して何も考えずリソース的に切りたいとかそういう場合にVMリソースが欲しい気持ちになるのでぐぬぬという感じです。

reference

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment