#19: VirtualBox、Vagrant をインストール
今日は N 予備校の方を進めます。VirtualBox と Vagrant をインストールして Ubuntu の VM を作成します。
VirtualBox は仮想マシン(VM)を作成するソフトウェアですね。現在は Oracle が開発。競合は VMware あたりでしょうか。もう一つ、仮想化ソリューションを提供している会社があったような気がしますが思い出せません。(本題と関係ないですが VMware って Dell の傘下なんですね、知らなかった!)
Vagrant は仮想環境をシステマチックに作成するソフトウェアで HashiCorp が開発しています。Docker が出てくる前に話題になっていた、Infrastructure as Code(IaC)の走り、という印象です。(注:門外漢の戯言です)
やったこと(Done)
Homebrew で VirtualBox と Vagrant をインストール。
$ brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask/7e703e0/Casks/virtualbox.rb $ brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask/fb9df71/Casks/vagrant.rb
$ mkdir -p ~/vagrant/ubuntu64_18 $ cd ~/vagrant/ubuntu64_18/
Ubuntu の box を追加。
$ vagrant box add ubuntu/bionic64 --box-version 20200130.1.0 $ vagrant init ubuntu/bionic64 # Vagrantfile が作成される $ vagrant up $ vagrant ssh
vagrant@ubuntu-bionic:~$ echo $HOME /home/vagrant
わかったこと(Fact)
Ubuntu
bionic というのは 2018 年 4 月にリリースされた Ubuntu 18.04 LTS (Bionic Beaver)
のこと。General support は 2023 年 4 月まで、Security support は 2028 年 4 月まで。
Vagrant
Vagrant は存在は知っていましたが今回初めてちゃんと触りました。
Vagrant will isolate dependencies and their configuration within a single disposable, consistent environment, without sacrificing any of the tools you are used to working with (editors, browsers, debuggers, etc.).
仮想マシンを手動で作って設定するのではなく、設定を Vagrantfile
に記述して vagrant up
というコマンドを叩くだけで仮想マシンが作成できるので、disposable で色々試しやすいし、他者との間で同じ環境を共有しやすいのが利点、ということですね。
コンテナ仮想化の Docker との棲み分けはどうなるのだろうか、という点も公式サイトに記載されていました。Vagrant は BSD や Windows などの仮想化も扱えるので開発環境を用意する用途には優れているようです。
作成されるファイル等について
~
に VirtualBox VMs
というディレクトリが作られ、その中に仮想マシンのファイルが置かれていました。
$ tree -a ~/VirtualBox\ VMs/ /Users/ryocalm/VirtualBox\ VMs/ └── ubuntu64_18_default_1596961733740_13731 ├── Logs │ └── VBox.log ├── ubuntu-bionic-18.04-cloudimg-configdrive.vmdk ├── ubuntu-bionic-18.04-cloudimg.vmdk ├── ubuntu64_18_default_1596961733740_13731.vbox └── ubuntu64_18_default_1596961733740_13731.vbox-prev 2 directories, 5 files
vagrant/ubuntu64_18/
の中は以下の通り。
$ tree -a ~/vagrant/ubuntu64_18/ /Users/ryocalm/vagrant/ubuntu64_18/ ├── .vagrant │ ├── machines │ │ └── default │ │ └── virtualbox │ │ ├── action_provision │ │ ├── action_set_name │ │ ├── box_meta │ │ ├── creator_uid │ │ ├── id │ │ ├── index_uuid │ │ ├── private_key │ │ ├── synced_folders │ │ └── vagrant_cwd │ └── rgloader │ └── loader.rb ├── Vagrantfile └── ubuntu-bionic-18.04-cloudimg-console.log 5 directories, 12 files
あと ~/.vagrant.d/
というディレクトリも作られていた。こちらは Vagrant の設定ファイルなどが置かれていると思われます。
$ tree -a ~/.vagrant.d/ /Users/ryocalm/.vagrant.d/ ├── boxes │ └── ubuntu-VAGRANTSLASH-bionic64 │ ├── 20200130.1.0 │ │ └── virtualbox │ │ ├── Vagrantfile │ │ ├── box.ovf │ │ ├── box_update_check │ │ ├── metadata.json │ │ ├── ubuntu-bionic-18.04-cloudimg-configdrive.vmdk │ │ ├── ubuntu-bionic-18.04-cloudimg.mf │ │ └── ubuntu-bionic-18.04-cloudimg.vmdk │ └── metadata_url ├── data │ ├── checkpoint_cache │ ├── checkpoint_signature │ ├── fp-leases │ ├── lock.dotlock.lock │ ├── machine-index │ │ ├── index │ │ └── index.lock │ └── vbox_symlink_create_warning ├── gems │ └── 2.4.9 ├── insecure_private_key ├── rgloader │ └── loader.rb ├── setup_version └── tmp 11 directories, 17 files
Vagrantfile
の中身はコメントを除くと以下のようになっていました。
# -*- mode: ruby -*- Vagrant.configure("2") do |config| config.vm.box = "ubuntu/bionic64" end
コマンドについて
vagrant up
vagrant ssh
- SSH session を閉じるには
exit
orCtrl+D
- SSH session を閉じるには
vagrant halt
vagrant destroy
- box ファイルを削除する場合は
vagrant box remove
- box ファイルを削除する場合は
host マシンとの共有ディレクトリ
Vagrantfile
があるディレクトリ(今回は ~/vagrant/ubuntu64_18
)は仮想マシン側の /vagrant
というディレクトリとの共有ディレクトリとなっています。ホストマシンでファイルを置いたら仮想マシンからも見えました。
ちなみに仮想マシン側の $HOME
は /home/vagrant
となっていて vagrant ssh
でログインするとこのディレクトリにいる状態になりますが、上記の共有ディレクトリはこれとは別で root 直下の /vagrant
となります。
参考文献(References)
VirtualBox
Vagrant
- Vagrant by HashiCorp
- Vagrant (software) - Wikipedia
- vagrant — Homebrew Formulae
- Getting Started | Vagrant by HashiCorp
Ubuntu
その他
いろいろと調べて記録していたら少し進めるのにもすごく時間がかかるのですが、これでいいのか少々不安になります(笑)