iimon TECH BLOG

iimonエンジニアが得られた経験や知識を共有して世の中をイイモンにしていくためのブログです

MultipassでM1 Macに仮想環境を作ってみた

こんにちは。 iimonバックエンドエンジニアの木暮です。
最近はCounter-Strike2にハマっていてスキンまで買い始めました。 ちなみに本当に欲しいスキン*1はマーケットで5万円近くしたので諦めました。 自己紹介はこれくらいにして本題に移りたいと思います。

本記事はiimonアドベントカレンダー22日目の記事となります。

はじめに

intel Macを使って無料でローカルに仮想環境が作れるツールはVagrant + VirtualBoxなどがありますが M1 Macとなると2023年12月現在、VirtualBoxが正式にARMアーキテクチャに対応していないため導入するのが一筋縄では行かない様です。 *2
他に無料でローカルに仮想環境が作れるツールはあるのかな?と疑問に思ったので調べてみたところMultipassというツールありました。 作れるのはUbuntuCUI環境限定ですが手軽に仮想環境の構築できそうなのでお試しで触っていきます。 *3

Multipass is 何

Multipass は、LinuxmacOS、および Windows 上でクラウド スタイルの Ubuntu VM を迅速に生成するツールです。

これにより、Ubuntu コマンド ラインにすばやくアクセスしたり、独自のローカル ミニクラウドを作成したりできる、シンプルかつ強力な CLI が提供されます。

公式:https://multipass.run/

触ってみよう!!!!!

今回はM2 Macを使用して触っていきます。

インストール

ドキュメントを確認するとインストール方法はインストーラかHomebrewのふた通りがあります。 今回はHomebrewでインストールを行います。

インストーラを使用する場合は下記URLを参照してください。 https://multipass.run/docs/installing-on-macos

インストールコマンド
$ brew install multipass

特に問題なくインストールができました。

インストール成功!

動作確認

最低限の動作確認としてmultipassのバージョンを確認してみましょう。 下記のコマンドを実行します。

$ multipass version

multipassのバージョンを確認

インスタンスの作成

実行する前にどの様なオプションがあるか確認してみます。 https://multipass.run/docs/launch-command
上記リンクのドキュメントを確認するとCPUのコア数やメモリ容量、ディスク容量、ディスクマウントなど様々な設定が行える様です。 今回はお試しなので、インスタンス名のみを指定して作ります。インスタンス名を指定して作成する場合は以下の様なコマンドになります。

$ multipass launch -n <instance name>

エラーが出ることなく処理が完了しました。

インスタンス作成完了

インスタンスの確認

先ほどの手順で作成したインスタンスを確認してみましょう。 下記コマンドで確認ができます。
参考:https://multipass.run/docs/list-command

$ multipass list

インスタンスを一覧から確認

これで作成したインスタンスが確認できました。 どうやらインスタンスは作成したらそのまま起動までされる様ですね。

インスタンスの詳細を知りたい場合は以下のコマンドで確認ができます。
参考:https://multipass.run/docs/info-command

$ multipass info <instance name>

先ほど作成したiimonインスタンスの詳細な情報を確認してみます。

インスタンスの詳細情報

出力内容のフォーマットもできる様です。

yaml形式で出力

インスタンス構成の変更

すでに作成済みのインスタンスに対して構成変更をしてみます。
まずはインスタンスの停止を行います。

$ multipass stop <instance name>

インスタンスを停止してステータスまで確認

今回はCPUのコア数を上げてみます。

multipass set local.<instance name>.cpus=2

インスタンス名の前にlocal.とつけるのはお決まりの様です。
参考:https://multipass.run/docs/modify-an-instance

特に何も返ってこない様です。

インスタンスが停止状態だと反映ができているか確認できない様なので インスタンスを起動して確認してみます。

$ multipass start <instance name>

CPUのコア数が2に変更されていることが確認できました

インスタンスへ入ってみる

ではいよいよインスタンスへログインしてみます。 以下のコマンドで指定したインスタンスにログインができます。

$ multipass shell <instance name>

無事ログインできました

インスタンスの削除

一通り遊んで満足したので作成したインスタンスを削除してみます。 インスタンスを削除するコマンドは以下になります

$ multipass delete <instance name>

削除できていることを確認

この状態はゴミ箱に入っている状態なのでまだ復元が可能です。 復元したい場合は下記のコマンドを使用します。
参考: https://multipass.run/docs/recover-command

$ multipass recover <instance name>

復元後、ステータスがDeletedからStoppedなっています。

次にゴミ箱から破棄までやってみます。 このコマンドはインスタンスを指定して実行ということはできないので ステータスがDeletedのインスタンスが全て破棄されます。
参考: https://multipass.run/docs/purge-command

$ multipass purge

破棄されていることが確認できました。

試してはいないですが、deleteコマンドのオプションで-pを指定するとpurgeまでやってくれる様です。
参考:https://multipass.run/docs/delete-command

まとめ

インスタンスの作成、変更、削除を一通りやってみましたが、とても簡単に行うことができました。 サーバ環境構築の手順確認や検証等、色々な使い道がありそうですね。 MultipassはインストールのタイミングでGUIの管理画面も一緒にインストールされるので機会があればそちらも触ってみたいと思います。

最後に

最後まで読んでくださりありがとうございます!

この記事を読んで興味を持って下さった方がいらっしゃればカジュアルにお話させていただきたく、是非ご応募をお願いします。 Wantedly / Green

次のアドベントカレンダーの記事は最近ダーツに勤しんでいるほでぃ〜くんです!
どんな記事を書いてくれるのか楽しみですね!!!!!

*1:Case Hardened skin

*2:Beta版では実験的に対応している様なので正式対応が待ち遠しいですね。

*3:ec2で良くね?は無しで。。。こっちは下手こいても無料!!!