vagrant
VirtualBox
仮想化

VirtualBox&Vagrantを用いた仮想化超入門

はじめに

この記事は仮想化ってなに!?という人から素で仮想化ソフトにLinuxを導入せず、中間にミドルウェアを挟んで仮想化を実現してみたいという人向けに記述した記事になっております。全体の流れとしてはVirtualBox/Vagrantの概要とインストールから初期設定レベルくらいを想定

今回使用する環境(バージョンは異なってもOK)

・VirtualBox5.2.0
インストールURL: https://www.virtualbox.org/wiki/Downloads
・Vagrant2.0.1
インストールURL: https://www.vagrantup.com/downloads.html
・TeraTerm(Windowsの場合)
インストールURL: https://forest.watch.impress.co.jp/library/software/utf8teraterm/

仮想化・VirtualBoxとは

仮想化とは1台のPC上で複数のOSの起動を行える技術。またVirtualBoxとは仮想化を実現する際の代表的なソフトウェア。例を挙げるとWindowsが動作しているPCの上でLinuxを動作させたりする事が可能となります。類似ソフトウェアは沢山ありますが今回はVirtualBoxを使用。

Vagrantとは

VirtualBoxのようなソフトウェアにそのままLinuxを動作させる事も可能だが、ホストOSと仮想化ソフトウェアの間にVagrantを用いる事で、仮想上のOSの破棄や再構築、また仮想上のOSで構築した内容や設定を第三者に配布を行う際の簡略化を行う事が出来る。

Vagrantの初期設定とゲスト側OSの構築

Windowsの場合は「コマンドプロンプト」MACの場合は「ターミナル」を起動してください

1:インストールされたvagrantのバージョン確認

Desktop/Technology/Vagrant_OS$ vagrant --version
Vagrant 2.0.1

2:box(仮想OSなどの資材)一覧の確認

Desktop/Technology/Vagrant_OS$ vagrant box list ※何も出力されなければ、下記3から5を踏襲してください

3:後にboxを追加する為の初期設定

Desktop/Technology/Vagrant_OS$ vagrant init hashicorp/precise64

4:上記で入手したVagrantfileの初期化

Desktop/Technology/Vagrant_OS$ vagrant up

5:再度box(仮想OSなどの資材)一覧の確認

Desktop/Technology/Vagrant_OS$ vagrant box list
hashicorp/precise64 (virtualbox, 1.1.0) ※box一覧にhashicorpが追加されていれば成功

6:box(仮想OSなどの資材)の追加

インストールURL: http://www.vagrantbox.es (boxの追加方法としては下記のように行う。)

vagrant box add [boxの名前(自由に設定可能)] [boxのURL]

※以下に追加例を記述
Desktop/Technology/Vagrant_OS$ vagrant box add CentOS7.0 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box

7:boxが追加されているかの確認

Desktop/Technology/Vagrant_OS$ vagrant box list
CentOS7.0           (virtualbox, 0)
hashicorp/precise64 (virtualbox, 1.1.0)

8:ディレクトリの作成後に使用したいOSを選択して初期化する。

mkdir [ディレクトリ名(自由に設定可能)]
cd [ディレクトリ名]
vagrant init [boxの名前]

※以下に例を記述

Desktop/Technology/Vagrant_OS$ mkdir CentOS7.0
Desktop/Technology/Vagrant_OS$ cd CentOS7.0
Desktop/Technology/Vagrant_OS/CentOS7.0$ vagrant init CentOS7.0
Desktop/Technology/Vagrant_OS/CentOS7.0$ ls
Vagrantfile ※初期化後にVagrantfileが作成されていれば成功

9:Vagrantfileの編集と設定項目の説明

9-1:ホスト側ポートと今回作成するゲスト側ポート間のNAT設定

#config.vm.network "forwarded_port", guest: 80, host: 8080 

上記例の設定のコメントアウトを外した場合、ゲスト側の80番ポートに対してホスト側の8080番ポートでアクセスが可能になる。またこの設定は1つだけでなく複数のNATにおける設定を行う事が出来る。

9-2:ゲスト側のVMに対して固定ipアドレスを設定する

#config.vm.network "private_network", ip: "192.168.33.10"

上記例の設定のコメントアウトを外した場合、ゲスト側のipアドレスとして設定したipアドレスが割り振られる。※今回はこの設定のみコメントアウト(#)部分を外してください。

9-3:ホスト側と同一のセグメントのIPアドレスを設定する

#config.vm.network "public_network"

上記例の設定のコメントアウトを外した場合、ゲスト側にはホスト側と同一セグメント帯のIPアドレスが割り振られる。

9-4:ホスト側とゲスト側で特定の共有フォルダを設定(シンボリックリンク)する

#config.vm.synced_folder "../data", "/vagrant_data

上記例の設定のコメントアウトを外した場合、左側で指定したホスト側のディレクトリと、右側で指定したゲスト側のOS間でファイルの共有が行えるようになる。例として左側に任意のホスト側のディレクトリ、右側にゲスト側のドキュメントルート等の設定を行う事で、ホスト側で開発した内容が自動的にゲスト側で反映される事になる。

9-5:ゲスト側OSをCUI,GUI起動の変更と割りあてるメモリの設定

 #config.vm.provider "virtualbox" do |vb|
     #vb.gui = true
     #vb.memory = "1024"
 # end

※#vb.guiの設定を外す事で値がtrueの場合はゲストOSがGUIとして起動される。

※#vb.memoryの設定を外す事でゲスト側に割りあてるメモリの容量を設定する事が出来る。

10:boxの起動

Desktop/Technology/Vagrant_OS/CentOS7.0$ vagrant up

11:仮想OSへのアクセス

「MacOS」の場合はboxを管理するVagrantfileのディレクトリで仮想OSにアクセスしてください。アクセス方法は下記の通り。

Desktop/Technology/Vagrant_OS/CentOS7.0$ vagrant ssh

「Windows」の場合はTeratermから、IP:192.168.33.10 ポート番号22番に対してアクセスしてください。アクセス後、下記のようになれば成功です。

[vagrant@localhost ~]$ hostname
localhost.localdomain

その他コマンド

コマンド 内容
vagrant status 管理している仮想OSの状態を確認する
vagrant halt 管理している仮想OSの停止
vagrant package 仮想OSのパッケージ化。配布可能
vagrant destroy boxの削除

ゲスト側のOSを新規に再構築したい場合

基盤となるboxファイルは上記手順7までで作成されている為、再びゲスト側のOSを再構築したい場合は手順8から10を行えば新規に再構築の方行えます。

最後に

今回は超入門編という事で基本的な設定やコマンドメインでしたが、次の記事ではもう少し深い所まで触れてみるのを想定中。