2014年11月20日木曜日

【Vagrant】仮想環境構築が超絶簡単になる(らしい)Vagrantを試してみた。

vagrantのロゴ。かっこいい。

はじめに

お久しぶりです。@naichilabです。
最近「けいぞくてきいんてぐれーしょん」ってのに興味を持ったので下記本を買ってみました。
CakePHPで学ぶ継続的インテグレーションCakePHPで学ぶ継続的インテグレーション
渡辺 一宏,吉羽 龍太郎,岸田 健一郎,穴澤 康裕,丸山 弘詩
少しずつ読み進めてたんですが知らん言葉やソフトが出てくる出てくる。

・バージョン管理システム - Git
・デプロイツール - Capistrano
・プロビジョニングツール - Chef
・サーバ仮想化ツール - VirtualBox
・環境構築ツール - Vagrant
・テストツール - PHPUnit
・インスペクションツール - PHP_CodeSniffer
・ドキュメント自動生成ツール - phpDocumentor
・継続的インテグレーションツール - Jenkins
・パッケージ管理ツール - Composer

設定はRubyで書いたり(Ruby触った事ない)仮想環境はUNIXだったり(UNIX触った事ない)と頭パンクしそう。
でもなんとなくVagrantが重要そうだなーと思ったのでさきにそっちで遊んでみました。


参考

ぐぐって見つけた下記本を購入。
Vagrant入門ガイドVagrant入門ガイド
新原雅司
400円!!52ページ!!なんと手頃な。
とても分かりやすかったしオススメ。

Vagrantって?


  • 開発環境を自動で構築するためのツール
  • OSXやWindows、Linuxなど幅広い環境で動く
  • VirtualBoxやVMWareといった仮想化ツールへの環境構築を自動化する
  • ChefやPuppetといったプロビジョニングツールも組み合わせる事で極端な話コマンド1行で環境構築終わり。といったことが可能になる。
っていう夢のようなソフト。らしい。実際まだ良くわかってない。

やってみる

環境

2014/11/19現在
MacBookAir 2013モデル
MacOSX 10.9.4
VirtualBox 4.3.18(最新版)
Vagrant 1.6.5(最新版)

インストール

以下からVirtualBoxをインストール
  https://www.virtualbox.org/wiki/Downloads
以下からVagrantをインストール
  https://www.vagrantup.com/
RubyはVagrantのパッケージに付いてくるらしい。

Vagrantのバージョンの確認

ターミナルで下記を実行。バージョンが出ればOK。
$ vagrant -v
Vagrant 1.6.5

Vagrantのコマンド

Vagrantは
$ vagrant ○○
というコマンドで操作する。
コマンド一覧は
$ vagrant -h
で確認できる。少ないし使ってればすぐに覚えられそう。

Boxファイル

Vagrantでは仮想マシンのベースとなるイメージファイル(Boxファイル)を使う。
やさしい人たちが色んなパターンを用意してくれてるみたい。

http://www.vagrantbox.es/
とりあえずぐぐって見つけたこのサイトからCentOSの一番新しそうなのを使ってみる。
CentOS7.0 x86_64 minimal (VirtualBoxGuestAddtions 4.3.14)ってやつ

Boxファイルの追加

$ vagrant box add [名前] [BOXファイルのURL]
これでvagrantがboxファイルをダウンロードしてくれて付けた名前で記憶してくれる。
こんな感じ
$ vagrant box add centos70 https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box
==> box: Adding box 'centos70' (v0) for provider: 
    box: Downloading: https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box
==> box: Successfully added box 'centos70' (v0) for 'virtualbox'!

Boxファイルの確認

vagrant box listコマンドで追加されているBOX一覧を確認できる。
$ vagrant box list
centos70             (virtualbox, 0)
ちゃんと出てくる。あら素敵。


基準となるフォルダを決める

適当にフォルダを作る。
適当な場所に"vagrant"ってフォルダを用意した。
ターミナルのカレントフォルダをそこに移動しておく。
naichilabmba:vagrant hu$ 
PC名やユーザー名は適当に読み替えて。

Vagrantfileの作成

VagrantではVagrantfileというファイルに起動する仮想マシンの構成などを記載する。
とりあえずboxだけを指定したシンプルなVagrantfileを生成する。
$ vagrant init [box名]
これでVagrantfileが作られる。
$ vagrant init centos70
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
できたVagrantfileはこんな感じ。(長いrubyファイルなんだけどコメント部分を削除するとこれだけ)
# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos70"
end
boxファイルの名前を指定してるだけですね。

仮想マシンの起動

ではお待ちかね。起動してみます。
$ vagrant up
これだけ。これだけで起動する…はずがエラーした。

エラー対処

別記事にまとめました。
【Vagrant】Failed to mount folders in Linux guest.

これで起動完了。

SSH接続

作成した仮想マシンへのSSH接続するのは
$ vagrant ssh
これだけ。仮想マシン側にsshdが起動している必要があるらしいけどたぶんboxファイルにする前に設定済みなんだろうね。
naichilabmba:vagrant hu$ vagrant ssh
Last login: Wed Nov 19 11:15:42 2014 from 10.0.2.2
[vagrant@localhost ~]$ exit
ログアウト
Connection to 127.0.0.1 closed.
めっちゃ楽。

状態確認

仮想マシンがどういう状態かは
$ vagrant status
で確認可能。
vagrant upした後ならこんな感じ。
$ vagrant status
Current machine states:
default      running (virtualbox)

仮想マシンの停止と破棄

upした仮想マシンを停止したければ
$ vagrant halt
これだけ。またupすれば使える。
もし完全に破棄したければ
$ vagrant destroy
こんな感じ。
破棄してもまたupすればすぐに使えるんだけどね。

まとめ

とりあえずboxの追加とそれを使った仮想マシンの作成・起動・停止・破棄だけやってみた。Vagrantfileさえ用意しておけば数個のコマンドを覚えるだけで仮想マシンの使い捨てができる。すげー楽。ほんと楽。

Vagrantfileを編集すれば複数の仮想マシンを一気に起動したり(webサーバ、dbサーバ、開発サーバとか)、起動後の更新を自動化したり、色々できるらしい。

ぼっちCI(継続的インテグレーション)を回せるように少しずつ覚えよう。

とりあえず今日はここまで。

スポンサーリンク

Related Posts Plugin for WordPress, Blogger...