multipass で開発環境を構築したメモ
Multipass 上に開発環境を構築したメモ。
背景
- もともと Vagrant + VirtualBox (クライアントは MacOS) で開発環境を構築していた
- M1 チップの Mac に乗り換えたところ、VirtualBox が未対応だったので、EC2 (ubuntu) 上に環境を移した
- 今回 multipass がなかなか良さそうなので環境の移植を試した
multipass とは
- canonical が開発している ubuntu の仮想環境がさくっと立ち上げられるもの
- cli のみだったり、コマンドもシンプルだったり、cloud-init に対応していたり、なかなか developer friendly というかセンスが良い第一印象
やってみた感想の雑多なメモ
- M1 Mac 上ではアーキテクチャが aarc64 の ubuntu のイメージしかなさげだった
- 自分の場合これまで x86 前提の環境だったので、結局ここの移行コストが一番高かった (まだ全部終わっていない)
2022-01-01 00:31 ubuntu@t2 $ uname -a
Linux t2 5.4.0-91-generic #102-Ubuntu SMP Fri Nov 5 16:30:45 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux
- cloud-init の ユーザーデータフォーマット として cloud-config の yaml 形式にしか対応していない
- これまで shell script を使っていたので yaml に移植する必要が出てしまった
- 簡潔な仕様なのでそんなに大変ではないけど、cloud-init 対応が謳われていて既存の資産がそのまま使えるかなと期待していたのは裏切られた
- 次のようなコマンドで直接 ssh アクセスができるらしい
- multipassd が管理している秘密鍵を使えば良いらしい
- このあたりを
multipass shell
などが隠蔽してくれているのだと思う - ssh port forward もこれでできる
- 秘密鍵の所有者が root なので、適宜パーミッションの調整が必要
- 例えば multipass のインスタンスに vscode remote でつなぐため、とりあえず秘密鍵を別の場所にコピーし一般ユーザーに chown した
- もっと適切なやり方がありそうだが一旦こういう方法もあるということで
- 例えば multipass のインスタンスに vscode remote でつなぐため、とりあえず秘密鍵を別の場所にコピーし一般ユーザーに chown した
- ref. Port forwarding · Issue #309 · canonical/multipass
sudo ssh -i /var/root/Library/Application\ Support/multipassd/ssh-keys/id_rsa ubuntu@<multipass instance ip>
# port forward するならこんな感じ
sudo ssh -N -i /var/root/Library/Application\ Support/multipassd/ssh-keys/id_rsa -L 0.0.0.0:3000:localhost:3000 ubuntu@<multipass instance ip>
- cloud-config の packages に存在しないパッケージ名が混ざるとすべてのインストールが行われない
- package のインストールは apt-get instsall に yaml で指定したすべてのパッケージを一括で渡している ため
- yaml 上は一列に並んでいるので無意識に「問題のパッケージは失敗するがそれ以前のパッケージはインストール済みの状態になっている」と思ったがそうではなかった
- (multipass は関係ない cloud-init の話)
- shebang が
#! /bin/sh
の場合、source コマンドが無い- まず
/bin/sh
の実態は他のシェルで、bash が使われることが多いが ubuntu は dash らしい - dash には source が無いので、
#! /bin/sh
…source ~/.bashrc
などとすると失敗する .
の方が汎用的なのでそちらのほうがいいらしい (i.e.,. ~/.bashrc
)- ref. bash - source command not found in sh shell - Stack Overflow
- (multipass は関係ない ubuntu の話)
- まず