ヒトリ歩き

愚痴とかいろいろ書きます

Vagrant初心者が試してみた

開発環境をどうにか改善したいと考え出した際に、1つの案として仮想環境を構築することを考えました。
ただ、仮想環境を作るにしても工数がかかるだろうなと思っていたところ、Software DesignVagrantの記事を見つけたので試してみました。

Vagrantとは

Vagrantは、Vagrantfileというコンフィグファイルを用いることで必要なソフトウェアやパッケージ、OS設定、ユーザを設定した仮想環境を構築することが可能です。
Boxというイメージファイルを使用し、仮想環境を構築します。Boxファイルは、Discover Vagrant Boxes - Vagrant Cloud に登録されているものを使用することが出来ます。
また、VagrantMacLinuxWindows上で動作可能です。
www.vagrantup.com

インストール方法

私は、MacBookを使用しているので、Homebrewを使ってVirtualBoxVagrantをインストールしました。
インストール先の環境情報は次のとおりです。

ProductName: Mac OS X
ProductVersion: 10.13.6
BuildVersion: 17G65

VirtualBoxVagrantのインストールは次のように実施しました。

$ brew cask install virtualbox
$ brew cask install vagrant

BoxファイルのインストールからゲストOSの起動まで

ubuntuのboxイメージを使用して仮想環境を構築してみます。
まず、boxファイルをローカル環境に追加します。
vagrant box listを実行し、ローカル環境にboxが追加されたことを確認します。

$ vagrant box add ubuntu/trusty64
$ vagrant box list
ubuntu/trusty64 (virtualbox, 20180824.0.13)

次に作業用ディレクトリを作成し、Vagrantfileを作成します。
Vagrantfileを開き、35行目のconfig.vm.networkのコメントアウトを外し、仮想環境の固定IPを設定します。

$ mkdir ubuntu
$ cd ubuntu
$ vagrant init ubuntu/trusty64
$ vi Vagrantfile
vagrant.vm.newtorkのコメントアウトを外す

次に、VagrantfileをベースにゲストOSの作成、設定をします。
ゲストOSの作成が完了したら、vagrant sshで環境にログインします。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/trusty64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/trusty64' is up to date...
==> default: Setting the name of the VM: ubuntu_default_1537188260766_64982
・・・・・(省略)
default: Guest Additions Version: 4.3.36
default: VirtualBox Version: 5.2
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => /Users/xxxxx/Vagrant/ubuntu

ゲストOSの作成完了、ゲストOSにログイン。

$ vagrant ssh
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-158-generic x86_64)

* Documentation: https://help.ubuntu.com/

System information as of Mon Sep 17 12:44:42 UTC 2018

System load: 0.96 Processes: 81
Usage of /: 3.6% of 39.34GB Users logged in: 0
Memory usage: 25% IP address for eth0: 10.0.2.15
Swap usage: 0%

Graph this data and manage this system at:
https://landscape.canonical.com/

Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.

New release '16.04.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


vagrant@vagrant-ubuntu-trusty-64:~$

以上で、ゲストOSにログインすることができました。

ゲストOSの停止

起動したゲストOSを停止するには、vagrant haltコマンドを実行します。

$ vagrant halt
==> default: Attempting graceful shutdown of VM...
$

ゲストOSの削除

作成したゲストOSを削除するには、vagrant destoryコマンドを実行します。
削除するゲストOSのVagrantfileのあるディレクトリでコマンドを実行します。

$ vagrant destroy
default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Destroying VM and associated drives...
$

Boxファイルの削除

不要なboxファイルは、vagrant box remove [boxファイル名] で削除できます。

$ vagrant box list
ubuntu/trusty64 (virtualbox, 20180824.0.13)
$ vagrant box remove ubuntu/trusty64
Removing box 'ubuntu/trusty64' (v20180824.0.13) with provider 'virtualbox'...
$ vagrant box list
$

まとめ

  • DockerよりもVagrantの方が使いやすく感じた(Dockerを理解できてないからかも)
  • 社内で使う場合、boxファイルを入手するのはセキュリティ的に良くなさそう。自分でboxファイルを作る必要がある。
  • 開発環境を統一できるので、Aさんしか出ないエラーの解析の工数が減らせそう。
  • そもそもスペックが低いと使えない。なので、それなりにスペックありき。
  • vagrant box addはそもそも実行しないといけないのか次回確認したいと思います。

次は、Vagrantの残りのコマンドについて調べてみようと思います。