はじめに
macにおいて仮想マシンを構築するためのソフトウェアといえばVirtualBoxが著名ですが、いまのところApple M1チップ以降のCPUではVirtualBoxは使用できません。(β版は存在するそう。)
そこで別のソフトウェアを使用して仮想環境を構築する方法について
- Vagrantを用いて構築する
- ホストコンピュータが属するネットワーク上の別の物理マシンとして仮想マシンを認識させたい
上記2点の観点からparallelsを使用することにします。
(他にVMware Fusionなども著名です。)
動作環境と前提事項
本記事は以下のホスト環境で動作確認しています。
OS: macOS Venture 13.3.1
Chip: Apple M1 Pro
前提事項
前提として、以下2点導入済みとします。
- Homebrew(macOS用パッケージ管理ソフトウェア)
- Parallels Desktop for Mac(仮想マシン構築用ソフトウェア: 有料版)
vagrantインストール
まずは公式ドキュメントに沿ってvagrant
のインストールを行います。
brew install hashicorp/tap/hashicorp-vagrant
バージョン確認します。
vagrant -v
Vagrant 2.3.6
vagrant-parallelsのインストール
vagrant
を使用してParallels
上に仮想マシンを構築するには、そのためのドライバに相当するvagrant-parallels
が必要になります。
GithubのREADME
を参照してインストールします。
vagrant plugin install vagrant-parallels
Vagrantfileの初期化
任意のプロジェクトディレクトリに移動して作業を行います。
作成する仮想マシンの定義はVagrantfile
というファイルをプロジェクト毎に一つ作成します。Vagrant起動時にこのファイルを読み込むことで定義した環境を作成することができます。
ではまず、Vagrantfile
を初期化します。
(Vagrantfile
は手動で作成することもできますが、vagrant init
を使用すると各パラメータが記載された雛形を出力することができるので、便利です。)
vagrant init
Vagrantfile
が作成されていることを確認します。
ls
Vagrantfileの編集
Vagrant
はベースとなるイメージから仮想マシンを構築します。そのベースイメージ(ボックス)をconfig.vm.box
パラメータに指定します。
(ボックスは仮想マシンのOSなどが含まれるのでサイズが大きいです。)
使用したいboxファイルはこちらのサイトから検索することができます。(docker hubに似たようなサイトです。)
ここでは、ホストマシンがM1チップであるのとUbuntu22.04の仮想マシンを構築したいので「arm ubuntu」で検索し、以下のボックスを指定します。
config.vm.box = "bento/ubuntu-22.04-arm64"
また、冒頭でも記載したように今回は「ホストコンピュータが属するネットワーク上の別の物理マシンとして仮想マシンを認識させたい」ので以下のconfig.vm.network
パラメータもアクティブにしておきます。
config.vm.network "public_network"
config.vm.network
パラメータで設定できる値についてはドキュメントを参照してください。
デフォルトのボックスは設計上、セキュリティリスクが存在します。仮想マシン上のゲストOSに対する資格情報を使用することで同一ネットワーク上の誰でもアクセスできる可能性があることにご注意ください。
なので特段、目的がなければ他の設定値(private_network
など)が無難かと思います。
仮想マシン起動
準備ができたので仮想マシンを起動します。(初回は時間かかります。)
vagrant up
仮想マシン状態確認
仮想マシンの状態を確認するには以下のコマンドが使用できます。
vagrant status
仮想マシンへssh接続
起動した仮想マシンへの接続には以下のコマンドを使用します。
(意味的には、通常のssh user@host
と同じです。)
vagrant ssh
プロンプトのhostname
、username
が変化すれば接続完了です!
ちなみに仮想マシンの接続を抜けるにはexit
を実行すれば抜けられます。
おまけ
その他よく使うvagrantコマンド
halt
実行中の仮想マシンをシャットダウンします。
vagrant halt
suspend
このコマンドは完全なシャットダウンではなく仮想マシンを一時停止します。
一時停止は、後で再開した際にその時点から直ちに実行を開始します。(再ブートではなく一時停止からの再開です。)
vagrant suspend
resume
以前に(vagrant suspend
コマンドで)一時停止された仮想マシンを再開します。
vagrant resume
destroy
このコマンドは、実行中の仮想マシンを停止し、仮想マシン作成過程で生成されたすべてのリソースを削除します。これによって仮想マシン作成前と同様に、ホストコンピュータはクリーンな状態になります。
vagrant destroy