IBM 現場SEのITな日々

IBM現場SEが日々駆使している技術、現場SEの経験・知見を綴るブログです

(志賀)超初心者向け:完全無償な検証環境を作る方法(VirtualBox+Vagrant)[準備編]

はじめに

インフラSEをしていると、コマンドを打ったときの挙動を見たい、スクリプトの動作確認をしたいなど、ちょっとした検証作業をしたい、ということが往々にして発生するかと思います。

入社してすぐの頃に実感したことですが、自分で好きに使っていい検証環境があるって大事です。どんな影響があるか分からないコマンドがあって、でもどう動くのか知りたい。こういう状況であれば、マニュアルを読むより実際に実行したほうが絶対に早いし覚えます。

じゃあどうやって環境を用意するか?昨今IaaS系クラウドインスタンスを作ってみるのも割と簡単です。が、「完全無償」で「恒久的に使える」環境を作る、となるとなかなかない。1年間限定だったり、ある範囲を超えると課金対象になったり細々した制約がある。

現実的な解は「自分の使っている作業端末に仮想環境を作る」ことだと思います。

これは、VirtualBoxKVM(無償の仮想化ソフトウェア)を用意すれば割と簡単に実現します。が、欲しい仮想環境がLinuxならCentOS等フリーウェアでどうとでもなるとして、Windowsが欲しいとなると出現するライセンス料の壁。無償でどうにかするには30日間の試用期間という期間の壁。これを超えるにはどうするか?

「都度サーバを作り、検証が終わったらインスタンスごと消す」が一番簡単です。しかし、VirtualBox上で都度インストール作業するのも面倒くさい。このへん簡単にできないかな、と思ったときに有効な手段、それがVagrant(無償の仮想環境構築ソフトウェア)での構築自動化です。

また、ローカルで仮想環境を作る利点として、ネットワークについて知識が乏しくてもセキュリティ的に問題ないマシンを簡単に作れます。IaaSクラウドインスタンスを作ったところで、勉強用のサーバに監視設定なんてまずやりません。また、サーバについてよくあるNW要件は「サーバからインターネットにアクセス可能だが、インターネットからサーバへのアクセスは原則不可で、作業端末からだけはサーバへ疎通可能」だと思いますが、この状態にするためにはサーバ側でセキュリティの穴あけ設定等々こまごましたことが必要になります。それも初心者には結構なハードルです。初心者だから検証環境が欲しいのに!この矛盾。

適当に作った勉強用のサーバが気付いたら悪意の第3者の踏み台にされていたのに全然気付きませんでした、なんてことになったら、いくらなんでもインフラSEとしては笑えません。その点、端末内に仮想環境を作った場合は仮想マシンに到達できるネットワークは端末の内部で閉じています(「ブリッジアダプターの設定をあえてしない限り」という注意はありますがデフォルト作成されないので、意図的に設定しない限りは考慮不要)。結果、端末のセキュリティ設定さえされていれば中の仮想マシンはどんな設定をしていても安全は確保できます。おまけにVagrant仮想マシンを作るとデフォルトでNATネットワークが作られるので、サーバからインターネットへの通信も特に意識することなく実現し、作業端末からサーバへの通信もvagrantユーザで確実に保証されます。

 

まとめると、検証環境が欲しいとき

→ローカル(作業端末)に仮想環境で都度作る

   メリット:

      セキュリティの確保が比較的簡単

      フリーウェアを使えば確実に無償

   デメリット:

      作業端末のHWスペック(CPU/メモリ/記憶領域)がある程度潤沢に必要

      作業端末にフリーツール導入禁止等の制約があるなら使えない

クラウドを使う

   メリット:

      (クラウドサービスの範囲内で)マシンスペックやツールの制約がない

      作業端末に依存せずどこからでもアクセス可能

   デメリット:

      予期せず課金されてしまう可能性がある

      セキュリティを確保するために一定の知識が必要

 

 

先日、以下のような検証環境を「誰でも簡単に無償で作れるようにしてほしい」というリクエストが来て、自分のノートPC(Windows7/X1 Carbon)上にVirtualBoxVagrantで作ってみました。七転八倒したものの、最終的にまとめると手順はシンプルになったので、今回はその方法を「4月に入社したばかりの新入社員(OJT等で1回くらいOSのインストール作業くらいしたことあるかな程度)」向けの粒度でシェアしたいと思います。

 

f:id:users-6h324:20170802144828p:plain

 

手順概要:

0 : ホストOSのCPUがIntel VT-Xに対応している場合は有効化する

1:環境に合ったVirtualBoxVagrantをインストールする

2:各OS用のBoxファイルを用意してBoxを定義する

3:検証環境に合わせたVagrantfileを作成する

4:ゲストOSをVagrant経由で起動・停止・削除してみる

 

※今回は0/1のみ紹介し、2-4は次の機会に回したいと思います。

前提環境:

HW : Lenovo X1 Carbon

OS  : Windows7 Professional 

 

以降は上記環境を前提として手順概要を順を追って記述します。

なお、Macでも手順1で使用するインストーラが違うくらいでほとんど同じ(のはず)です。

 

VirtualBox+VagrantCentOSの仮想環境を実装する(準備編)

0 : ホストOSのCPUがIntel VT-Xに対応している場合は有効化する

仮想環境を作る上で、使用しているHWのCPUがIntel系でVT-Xに対応している場合はVT-Xを有効化する必要があります。今はIntelが主流ですし、ある程度のマシンスペックであれば大抵のPCがひっかかるんじゃないかと思います。これが無効のままだとゲストOSを起動しようとしたタイミングでエラー(VERR_VMX_MSR_LOCKED_OR_DISABLED)が出るのでご注意ください。

対応しているかどうかの確認方法

コンピュータのプロパティ画面でプロセッサの項目を確認です。googleでCPU名を検索→一番上に出てくるIntel公式の製品仕様ページを開いてVT-xで検索、で出てきます。「はい」だと対応しています。

f:id:users-6h324:20170802104953p:plain

f:id:users-6h324:20170802105643p:plain

VT-xを有効化する方法

BIOSから変更します。やり方や画面遷移はHWに依存するので「HW名 VT-x 有効化」あたりで検索して製品のサポートページを見つけ、これを見ながら変更してください。

ちなみにX1 Carbonの場合は以下でした。

https://support.lenovo.com/jp/ja/solutions/ht500006

 

1:環境に合ったVirtualBoxVagrantをインストールする

どちらのインストーラも無償提供されてます。Windowsであればインストーラを実行して画面遷移に合わせてぽちぽち次へを選択してデフォルトインストールしていけば終わりますので割愛します。

 

VirtualBox → 今回は4.2.2を使用(最新は2017/08/02現在5.1.26)

http://www.oracle.com/technetwork/server-storage/virtualbox/overview/index.html

Vagrant → 今回は1.8.6を使用(最新は2017/08/02現在1.9.7)

https://www.vagrantup.com/

 使ったバージョンが古いのは会社用PCに導入できるフリーウェアの制約があったからです。。。(フリーウェアは会社の許可がない限り導入禁止。今はどこもそんな感じなんでしょうか。)

 

VirtualBoxは起動してこの画面が出てくればOK。

f:id:users-6h324:20170802113133p:plain

 

Vagrantコマンドプロンプトで以下を実行してバージョンが表示されればOKです。

$ vagrant -v
Vagrant 1.8.6

導入で特にエラーは起こらなかったのにコマンドが見つからない系のエラーが返ってきた場合は、PATHの設定を確認してみてください。

 

 

今回はいったんここまで。次回、vagrantを利用して仮想マシンを作成する具体的な手順をご紹介させていただきます。