Vagrantを使って新しい仮想マシンのUbuntu16.04を作成する方法です。
環境
- macOS Sierra
- VirtualBox 5.1.28
- Vagrant 2.0.0
1. インストール
VagrantはVirtualBox上で動作します。公式サイトからVirtualBoxパッケージをダウンロードし、インストールします。
https://www.virtualbox.org/wiki/Downloads
次に公式サイトからVagrantパッケージをダウンロードし、インストールします。
https://www.vagrantup.com/downloads.html
2. セットアップ
この記事では~/vagrant/master
フォルダで作業します。
vagrant initを実行します。Vagrantfile(Vagrantのセットアップ情報ファイル)が作られます。
$ cd ~/vagrant/master $ vagrant init
次のサイトでインストールしたい仮想マシンBOXを探します。リンクを開くとVagrantfileへのBOXの指定の仕方が表示されます。
https://app.vagrantup.com/boxes/search
Vagrantfileを開き、仮想マシンのBOX名を指定します。ここではUbuntu16.04用のBOXを使用します。
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
end
vagrant upで仮想マシンを起動できます。
$ vagrant up
仮想マシンにログインするにはvagrant sshを使います。
$ vagrant ssh
仮想マシンを終了するときはvagrant haltです。
$ vagrant halt
3. その他のセットアップ
3-1. プラグイン
IPアドレスにホスト名を付けるためのvagrant-hostsupdater
プラグインと、共有フォルダのマウントエラーを解決するvagrant-vbguest
プラグインをインストールします。
$ vagrant plugin install vagrant-hostsupdater $ vagrant plugin install vagrant-vbguest
3-2. IPアドレス
プライベートIPアドレスを指定します。
@Vagrantfile
config.vm.network "private_network", ip: "192.168.33.10"
3-3. ホスト名
IPアドレスにホスト名を付けます。vm.hostname
とhostsupdater.aliases
を使うといくつもホスト名を付けられます。
@Vagrantfile
config.vm.hostname = "a.vagrant.test" config.hostsupdater.aliases = ["b.vagrant.test", "c.vagrant.test", "d.vagrant.test"]
3-4. 共有フォルダ
仮想マシンとホストとの間に共有フォルダを設けます。第一引数はホスト(Mac)側のフォルダを指定し、第二引数は仮想マシン(Ubuntu)側のフォルダを指定します。ホスト側のフォルダは事前に作成しておきます。
@Vagrantfile
config.vm.synced_folder "sync", "/home/vagrant/sync"
注) 仮想マシンの”/home/vagrant”を共有フォルダにすると、元々”/home/vagrant”に置かれていたファイルや隠しフォルダが、ホスト側の共有フォルダの中身で上書きされるため意図しない動作になることがあります。”/home/vagrant”の下にフォルダを設けて、そこを共有フォルダにするのが無難かと思います。
3-5. メモリとネットワークの調整
--memory
で仮想マシンに割り当てる最大メモリを指定します。あと、ネットワーク周りのレスポンス改善等の調整を入れています。
config.vm.provider "virtualbox" do |vb| # メモリ割り当て量を指定 vb.customize ["modifyvm", :id, "--memory", 1024] # ネットワークレスポンス改善処理 vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] # 仮想マシンへの接続エラー対応 vb.customize ["modifyvm", :id, "--cableconnected1", "on"] end
すでに起動済みの仮想マシンを再起動するにはvagrant reloadを使います。
$ vagrant reload
以上。