#19: VirtualBox、Vagrant をインストール

今日は N 予備校の方を進めます。VirtualBoxVagrant をインストールして UbuntuVM を作成します。

VirtualBox仮想マシンVM)を作成するソフトウェアですね。現在は Oracle が開発。競合は VMware あたりでしょうか。もう一つ、仮想化ソリューションを提供している会社があったような気がしますが思い出せません。(本題と関係ないですが VMware って Dell の傘下なんですね、知らなかった!)

Vagrant は仮想環境をシステマチックに作成するソフトウェアで HashiCorp が開発しています。Docker が出てくる前に話題になっていた、Infrastructure as Code(IaC)の走り、という印象です。(注:門外漢の戯言です)

やったこと(Done)

Homebrew で VirtualBoxVagrant をインストール。

$ 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

Vagrant 用のディレクトリを作成。

$ 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 との棲み分けはどうなるのだろうか、という点も公式サイトに記載されていました。VagrantBSDWindows などの仮想化も扱えるので開発環境を用意する用途には優れているようです。

作成されるファイル等について

~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 or Ctrl+D
  • vagrant halt
  • vagrant destroy
    • box ファイルを削除する場合は vagrant box remove

host マシンとの共有ディレクト

Vagrantfile があるディレクトリ(今回は ~/vagrant/ubuntu64_18)は仮想マシン側の /vagrant というディレクトリとの共有ディレクトリとなっています。ホストマシンでファイルを置いたら仮想マシンからも見えました。

ちなみに仮想マシン側の $HOME/home/vagrant となっていて vagrant ssh でログインするとこのディレクトリにいる状態になりますが、上記の共有ディレクトリはこれとは別で root 直下の /vagrant となります。

参考文献(References)

VirtualBox

Vagrant

Ubuntu

その他

いろいろと調べて記録していたら少し進めるのにもすごく時間がかかるのですが、これでいいのか少々不安になります(笑)

そのうちやること(Someday)

  • [ ] RubyMine インストールしてみる?
  • [ ] Ruby を書くためのエディタの設定(Emacs
  • [ ] bash の設定ファイルに必要なエイリアスを追加する。