こんにちは。
キャスレーコンサルティングのSD(システム・デザイン)部:藤本です。

弊社内では新規参画のメンバー向けにVagrantで作成した仮想イメージを提供し、スピーディーに且つ正確に開発環境の引継ぎ及び提供を行っています。
今回はWindows上に、Vagrant+VirtualBoxでCentoOS環境を構築する手順をご紹介します。
その際Cygwinを使ってVagrantの起動や、ゲストOSへの接続もやってみたいと思います。

Vagrantとは

簡単にいうとVirutualBoxに環境を立ち上げるための設定ファイルを書いて
それから環境を作ることが出来るというイメージです。


Vagrantを用いると、構成情報を記述した設定ファイルを元に、仮想環境の構築から設定までを自動的に行うことができる。当初はVirtualBoxをターゲットとしていたが、1.1以降のバージョンではVMwareなどの他の仮想化ソフトウェアやAmazonEC2のようなサーバー環境も対象とできるようになった。Vagrant自身はRubyで作成されているが、PHPやPython、Java、C#、JavaScriptといった、他のプログラミング言語の開発においても用いることができる。
引用-「Vagrant (ソフトウェア)
『フリー百科事典 ウィキペディア日本語版』より。
“最終日付 2014年10月12日 (日) 16:35″ UTC


とのことで、今はVirtualBox以外でもつかえるのでとても便利。

Vagrantインストール

Vagrantのインストールですが、その前にVirtualBoxをインストールします。
下記URLからWindows用のファイルをダウンロードしてインストールします。
https://www.virtualbox.org/wiki/Downloads
virtuanbox

次にVagrantをダウンロードしてインストールします。
下記URLからWindows用のファイルをダウンロードしてインストールします。
https://www.vagrantup.com/downloads.html
vagrant

ダウンロードしたらmsiファイルをダブルクリックしてインストールします。
インストールするディレクトリは任意で大丈夫です。

Cygwinとは

WindowsでもUNIXコマンド実行ができるようになり、自分はかなり重宝してます。


UNIXで頻繁に使用されるシェルやコマンドなどのプログラムをWindows上でソースコードからコンパイルできるようにしたもので、UNIX用の機械語バイナリコードをエミュレートするものではない。
Cygwin1.dllランタイムライブラリが、POSIXのシステムコールと同等の機能を提供しており、それぞれのプログラムはこれを動的にリンクすることでUNIX上とほぼ同じ動作が可能になる。また、このライブラリの存在により、Cygwin用として提供されていない他のUNIX用プログラムのソースコードも、従来の様な大幅な変更無しにWindows用にコンパイルすることが可能である。
引用-「Cygwin
『フリー百科事典 ウィキペディア日本語版』より。
“最終日付 2016年4月20日 (水) 14:49″ UTC


Cygwinインストール

では、Cygwinのインストール方法ですが、下記URLからインストーラーをダウンロードして実行します。
https://cygwin.com/install.html
cygwin

  1. インストール先を指定します。任意の場所で問題ないですが、今後ここがルートディレクトリとなります。 自分は「C:\cygwin64\」というディレクトリにしました。
  2. インストールで利用するパッケージのダウンロード先を設定します。これはどこでも大丈夫です。
  3. インターネット接続環境ですが問題なければ「DirectConnection」となります。
    プロキシ経由などで接続している方等は上記以外を選択して明示的にプロキシ設定等を行う必要があります。
  4. パッケージを取得するURLを選択します。
    どれでも問題ないですが、JPドメインからダウンロードしたほうがよさそうです。
  5. インストールするパッケージを選択します。自分が使いたい内容に依存するので、好みのパッケージを選択してください。
    自分のオススメするパッケージは以下で「serch」のテキストボックスから検索してください。

    ・tar
    ・unzip
    ・wget
    ・vim
    ・git
    ・scp

    ※後からでもパッケージ追加はできるので、悩まなくても大丈夫です。

  6. インストールが完了したらcygwinターミナルを起動します。
  7. 起動したらターミナルの設定とかしますが今回は割愛して
    「apt-cyg」
    というパッケージ管理ツールをインストールします。
    これを使えばアプリケーションが簡単にインストールできるので、以下のコマンドでGitHubからダウンロードしてきます。

    $ wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
    

    実行権限をつけてPATHの通っている場所に置きます。

    $ chmod 755 apt-cyg
    $ mv apt-cyg /usr/local/bin/
    

    これでapt-cygが利用できるようになり
    例えばvimのインストールは下記のようなコマンド実行でインストールできます。

    $ apt-cyg install vim
    

    他にも国内のリポジトリからCygwin事態を更新するようにするには

    $ apt-cyg -m ftp://ftp.iij.ad.jp/pub/cygwin/update
    

    のようなコマンドを実行できるようになります。

これで、Cygwinインストールは一旦完了となります。

VirtualBoxにCentOSboxファイルを登録する

Vagrantのインストールが完了した後は、VirtualBoxへboxファイルを登録します。
今回はCentoOS6.7を使用するので、以下のコマンドをCygwinターミナルから実行します。

$ vagrant box add centos6-7 https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box

※他のOSを選択したい場合は、boxファイルをここから選択してください。
http://www.vagrantbox.es/
ダウンロードが完了したら次のコマンドで確認しましょう。
「centos6-7」と確認できたらOKです。

$ vagrant box list

Vagrantfileの作成

Vagrantの初期化を行います。
その際、起動したいディレクトリで実行すると楽です。
自分の場合は「C:\HashiCorp\CentOS67」というディレクトリを作成して、そこで初期化コマンドを実行しました。
Cygwinターミナルから初期化コマンドを実行します。
その際、起動したいディレクトリに移動してから実行します。

$ cd /cygdrive/c/HashiCorp/CentoOS67/
$ vagrant init centos6-7

これでVagrantfileが作成されました。
生成したVagrantfileを編集します。(テキストエディタで編集しても、CygwinのVIで編集してもOKです。)

//Windowsから見ることの出来るIPを指定
config.vm.network"private_network",ip:"192.168.33.10"
//ゲストOSのポート指定
config.vm.network"forwarded_port",guest:80,host:8009

CygwinからVagrant起動

設定が済んだのでいよいよ起動します。
起動コマンドは下記となります。

$ vagrant up

注意としては、先ほど編集したVagrantfileがあるディレクトリで実行しなければならないです。
初回の起動には、多少時間がかかります。

CygwinからゲストOSへ接続

起動ができたら接続します。
接続コマンドは下記となります。

$ ssh vagrant@192.168.33.10
or
$ vagrant ssh

初期設定は、ID/PWともに{vagrant}となっています。
これでゲストOSが起動できたので、あとはミドルウェアのインストールを好みや
案件内容にそってインストールしていけば、それぞれの環境が構築できます。

最後に

Vagrantを使うことで、作成したインスタンスをそのままパッケージ化し配布することも可能です。
そうすることによって、新規参画のメンバーにも導入コストを抑えて開発環境を提供することが可能となります。
社内でも様々な環境があるので、Vagrantをつかって共有化できるとよいですね。
以上となります。
ここまで読んでいただき、ありがとうございました。



  • Profile
    キャスレーコンサルティングの技術ブログです。
    当社エンジニアが技術面でのTips、技術系イベント等についてご紹介いたします。
  • CSV社長ブログ
  • チーム・キャスレーブログ