Vagrant導入メモ

  • 48
    Like
  • 0
    Comment
More than 1 year has passed since last update.

Box の取得

Box とはOSのテンプレート。Vagrant はこれのインスタンスを利用するイメージ。

CentOS の 64bit 版を取得してみる。

$  vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box

centos64 というのは任意でつけたこの Box の名前。

vagrant のコマンドは$ vagrant -h、vagrant boxのコマンドは vagrant box -hで調べることができる。追加された Box は ~/.vagrant.d/boxesにある。

仮想マシンを立ち上げる

  1. 仮想マシンごとにディレクトリをつくる。
  2. 初期化する vagrant init centos64
  3. Vagrantfile ができる。
  4. 仮想マシンを立ち上げる vagrant up
  5. vagrant sshでログイン

サーバー初期設定

Apacheのインストール〜自動起動設定

$  sudo yum -y install httpd
$  sudo service httpd start
$  sudo chkconfig httpd on

iptablesをoff

$  sudo service iptables stop
$  sudo chkconfig iptables off

WEBページの表示

/var/www/html に何か適当な HTML ファイルを置いて Vagrantfile を編集する。下記のコメントを外すと Mac から 192.168.33.10 で /var/www/html にアクセスが可能になる。

# config.vm.network :private_network, ip: "192.168.33.10"

設定を変更したらvagrant reloadで再起動。

ローカルの作業ディレクトリを vagrant サーバーにリンクする

Mac 上でファイルを編集したら即座にサーバーに反応させる。サーバー上の /vagrant とローカルがリンクしているので、 /var/www/html へシンボリックリンクすればいい。

 $ sudo rm -rf /var/www/html
 $  sudo ln -fs /vagrant /var/www/html

Provisioning

vagrant upした際に自動でいろいろ設定できる。シェルスクリプトを使った場合の例。

たとえば起動した際に hello world を表示したい場合。

Vagrantfile

 config.vm.provision :shell, :inline => "echo hello world"

いろいろやりたい場合は別ファイルにシェルスクリプトを書く。例えば、

sudo yum -y install httpd
sudo service httpd start
sudo chkconfig httpd on

を provison.sh に保存。

Vagrantfile を修正。

 config.vm.provision :shell, :path => "provision.sh"

サーバーは起動している場合はvagrant provisionで provision のみ適用させる。

自分専用の Box を作る

いま使っているものをそのまま Box 化する場合は、vagrant package とコマンドを叩く。サーバーが起動している場合は shutdown してから実行される。

追加。

 vagrant box add my_box package.box

my_box は任意の名前をつける。add された Box は~/.vagrant.d/boxesに保存される。vagrant package した際に作られるファイル(package.box)は必要ないので消しておく。

Plugin を使う

vagrant plugin install sahara で導入。saharaはプラグイン名。プラグイン関係のコマンドはvagrant plugin -hで確認可能。

sahara の使い方

仮想マシンに何かをインストールしたとき、例えば失敗してしまったので以前の状態に戻りたいときに便利。

  1. ローカルでvagrant sandbox onを実行
  2. ログインして何かファイルを作ってみる
  3. vagrant sandbox rollback戻ってみる。
  4. 気にったらvagrant sandbox commitでコミットする。
  5. サーバーを立ち上げたままコミットすると時間がかかるのでvagrant suspendでサーバーを止めてからコミットする。
  6. サンドボックスモードを終了したい場合は vagrant sandbox off で閉じる。これもサーバーを止めた状態で実行すること。