VagrantとVirtualBoxで仮想環境構築してみた

f:id:hira98:20190706132709p:plain

【結論】

  • 仮想環境を構築する上でVirtualBoxは現場責任者的な立ち位置。

  • 昔の開発者は、VirtualBoxと直接やり取りすることで仮想環境を構築していた。

  • 現場責任者とやり取りする必要があるので、仮想環境構築はかなり面倒だった。

  • しかし、Vagrantという仲介役の登場で、コマンドを数回叩くだけで環境構築をできるようになった。

【目次】

はじめに

Docker人気なのになぜ、VagrantVirtualBoxを使って仮想環境を構築するんだろう🤔

と疑問に思う方もいるかもしれません。

正直って特に理由はないです💦

Ansibl学習環境を構築するにあたって、会社の先輩がVagrantを使って学習してたから使ってみるかー🤪的なノリでしかありません。

というか、ここ2ヶ月で環境が変化しすぎて、開発言語とかツールに拘るのがバカらしくなってきたというのもあります🤪

  • 開発言語の変化

    1. JavaSQL、Spring
    2. Python
    3. AnsibleのYAML
  • PC環境の変化

    1. Windows10(ツールは好きなの入れて良い🎉)

    2. シンクラ端末からWindowsServer2008にログインして操作。

      (ツールインストールNG🤮な上に、メモリ不足でChromeが動かないことが🤮)

ツールのインストール

VirtualBox

https://www.virtualbox.org/

インストールできたかは、⌘+スペースで表示される画面にVirtualBoxと入力していき、以下の画面が表示されればOK

f:id:hira98:20190706132754p:plain

Vagrant

https://www.vagrantup.com/

次のコマンドが通ればインストール成功

$ vagrant --version
Vagrant 2.2.5

Vagrantの操作:boxを探す

vagrantではboxという概念を用いて仮想環境を管理しており、用意されている仮想環境は以下のサイトから検索することができます。

https://app.vagrantup.com/boxes/search

centosで検索すると、次のような結果が表示されます。

f:id:hira98:20190706132811p:plain

上図の赤枠で囲った部分がbox名を表し、vagrantで仮想環境を構築するのに必要な情報はこれだけになります。

Vagrantの操作:box環境の取得

PC環境にインストールしてあるboxの一覧を確認します。

$ vagrant box list
There are no installed boxes! Use `vagrant box add` to add some.

ボックス名を指定して、PC環境にboxをインストールします。

# vagrant box add [ボックス名]
$ vagrant box add centos/7

下図はvagrant box add centos/7の実行結果になります。

boxは仮想環境ごとに用意されており、自分のPC環境にあった仮想環境を選択する必要があります。

f:id:hira98:20190706132828p:plain

boxのインストールが成功すると、boxリスト一覧に出力されるようになります。

$ vagrant box list
centos/7 (virtualbox, 1902.01)

Vagrantの操作:boxを使って仮想環境の構築

boxは仮想環境構築に関する手順をvagrantが理解できる形にまとめた手順書みたいなものなので、boxをインストールしただけでは仮想環境は構築されません。

よって、vagrantに対してインストールしたboxに従って仮想環境を構築するように依頼する必要があります。

と書くとと大げさですが、コマンドを数回叩くだけです。。

まず初めに、適当なフォルダを作成し仮想環境を構築する場所を用意します。

$ mkdir ~/vagrant/centos7
$ cd ~/vagrant/centos7

次に、vagrantにボックス名を指定して仮想環境構築の指示を出します。

# vagrant init [ボックス名]
$ vagrant init centos/7

すると、Vagrantファイルが生成されます。

これが仮想環境の設定情報になります。

$ ls
Vagrantfile

catで中身を見てみると有効な行はたった3行です。

(※| grep -v '^\s*#' | grep -v '^\s*$'#空行を除くおまじないです)

$ cat Vagrantfile | grep -v '^\s*#' | grep -v '^\s*$'
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
end

構築した仮想環境の状態を確認します。

$ vagrant status
Current machine states:

default                   not created (virtualbox)

The environment has not yet been created. Run `vagrant up` to
create the environment. If a machine is not created, only the
default provider will be shown. So if a provider is not listed,
then the machine is not created for that environment.

仮想環境を起動します。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos/7'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'centos/7' version '1902.01' is up to date...
==> default: Setting the nam
〜〜省略〜〜

再度仮想環境の状態を確認すると、not createdrunningに変わっています。

$ vagrant status
Current machine states:

default                   running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up

これで、仮想環境へssh接続できます。

デフォルト設定だとルート権限のパスワードはvagrantになります。

$ vagrant ssh
Last login: Sat Jul  6 03:38:40 2019 from 10.0.2.2
[vagrant@localhost ~]$ su
Password: 
[root@localhost vagrant]# 

ちなみに、起動している仮想環境はVirtualBox上でも確認できます。

f:id:hira98:20190706132851p:plain

参考情報

Oracle VM VirtualBox

Vagrant by HashiCorp

MacにVagrantでCentOS7環境を作成 - Qiita

grepでコメント行および空白行を削除する - Qiita

Discover Vagrant Boxes - Vagrant Cloud

さいごに

Vagrantファイルの先頭の記述を見て思ったこと。

「…オメェーRubyだったのか😯」

# -*- mode: ruby -*-
# vi: set ft=ruby :