vagrantのロゴ。かっこいい。 |
はじめに
お久しぶりです。@naichilabです。最近「けいぞくてきいんてぐれーしょん」ってのに興味を持ったので下記本を買ってみました。
CakePHPで学ぶ継続的インテグレーション 渡辺 一宏,吉羽 龍太郎,岸田 健一郎,穴澤 康裕,丸山 弘詩 |
・バージョン管理システム - Git
・デプロイツール - Capistrano
・プロビジョニングツール - Chef
・サーバ仮想化ツール - VirtualBox
・環境構築ツール - Vagrant
・テストツール - PHPUnit
・インスペクションツール - PHP_CodeSniffer
・ドキュメント自動生成ツール - phpDocumentor
・継続的インテグレーションツール - Jenkins
・パッケージ管理ツール - Composer
設定はRubyで書いたり(Ruby触った事ない)仮想環境はUNIXだったり(UNIX触った事ない)と頭パンクしそう。
でもなんとなくVagrantが重要そうだなーと思ったのでさきにそっちで遊んでみました。
参考
ぐぐって見つけた下記本を購入。Vagrant入門ガイド 新原雅司 |
とても分かりやすかったしオススメ。
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" endboxファイルの名前を指定してるだけですね。
仮想マシンの起動
ではお待ちかね。起動してみます。$ 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(継続的インテグレーション)を回せるように少しずつ覚えよう。
とりあえず今日はここまで。