Edited at

Vagrant体験入門ハンズオン手順 - 2014/04/24 DevLove関西

More than 5 years have passed since last update.

Vagrant体験入門ハンズオン手順 - 2014/04/24 DevLove関西


ハンズオン手順


1. 事前準備


1-1. USB メモリスティックを差して、以下のディレクトリを自分の PC にコピー、展開しておく

20140424_devkan.zip


1-2. VirtualBox インストール(インストール済なら不要)

https://www.virtualbox.org/

20140424_devkan/ にある VirtualBox-4.3.10-xxx でインストール


1-3. Vagrant インストール(インストール済なら不要)

http://www.vagrantup.com/

20140424_devkan/ にある Vagrant-1.5.4.xxx でインストール


1-4. vagrant バージョン確認

vagrant コマンドを実行してバージョンを確認

$ vagrant -v

Vagrant 1.5.4


1-5. Box の追加

https://github.com/opscode/bento

20140424_devkan/ にある opscode_centos-6.5_chef-provisionerless.box を、vagrant box add コマンドで追加

$ cd 20140424_devkan

$ vagrant box add opscode-centos65 opscode_centos-6.5_chef-provisionerless.box

vagrant box list で、opscode-centos65 が表示されていれば ok

$ vagrant box list

opscode-centos65 (virtualbox)


2. Vagrant で仮想マシンを操作


2-1. Vagrantfile 作成

vagrant init コマンドで、初期状態の Vagrantfile を作成

$ vagrant init opscode-centos65

$ ls
Vagrantfile

vagrant status コマンドで、仮想マシンの状態を確認

$ vagrant status

Current machine states:

default not created (virtualbox)


2-2. GUI モードを有効に

Vagrantfile を編集して、GUIモードを有効に

# -*- mode: ruby -*-

# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "opscode-centos65"

# GUIモードを有効にする
config.vm.provider "virtualbox" do |vb|
vb.gui = true
end
end


2-3. 仮想マシンを起動

vagrant up コマンドで、仮想マシンを起動。VirtualBox ウィンドウが表示されて、CentOS が起動。

$ vagrant up


2-4. 仮想マシンにログイン

vagrant ssh コマンドで、仮想マシンにログイン。Windows であれば、VirtualBox ウィンドウから直接ログインしても ok。( login: vagrant / password: vagrant)

$ vagrant ssh

[vagrant@localhost ~]$

[vagrant@localhost ~]$ cat /etc/redhat-release
CentOS release 6.5 (Final)

[vagrant@localhost ~]$ exit
$


2-5. 仮想マシンを停止

vagrant halt で仮想マシンを停止(電源オフ)

$ vagrant halt

$ vagrant status
Current machine states:

default poweroff (virtualbox)

再び起動するなら、vagrant up


2-6. 仮想マシンを破棄

vagrant destroy で仮想マシンを破棄する。破棄するか確認されるので、yを入力する

$ vagrant destroy

default: Are you sure you want to destroy the 'default' VM? [y/N] y

$ vagrant status
Current machine states:

default not created (virtualbox)


3. Vagrant で開発環境を構築

Apache をインストールして、httpd サーバを仮想マシンに構築

ホストで編集したHTMLが、仮想マシンの Apache で表示できるようにする。


3-1. Vagrantfileを編集

Vagrantfile を下記のように編集

# -*- mode: ruby -*-

# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "opscode-centos65"

config.vm.provider "virtualbox" do |vb|
vb.gui = true
end

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

config.vm.provision "shell", inline: <<-EOT
#
# iptables off
#
/sbin/iptables -F
/sbin/service iptables stop
/sbin/chkconfig iptables off
#
# Apache
#
yum -y install httpd
/sbin/service httpd restart
/sbin/chkconfig httpd on
EOT
end

ポイント

* IPアドレスを付与(192.168.33.10)

* シェルプロビジョナで、プロビジョニング

* iptables を停止(ローカルVMなので、ファイアウォール不要)

* httpd を yum でインストール


3-2. 仮想マシンを起動

vagrant up で仮想マシンを起動

$ vagrant up

ブラウザで、http://192.168.33.10/ にアクセスすれば、Apache の welcome ページが表示される。

表示されなければ、プロビジョニングが実行されていないかもしれないので、vagrant provision を実行

$ vagrant provision


3-3. HTMLファイルを作成

表示するHTMLを作成

$ echo "Hello Vagrant!!" > index.html

$ ls
Vagrantfile index.html


3-4. httpd.conf を変更

DocumentRoot を synced_folder(/vagrant)に変更

仮想マシンにログインして、/etc/httpd/conf/httpd.conf を /vagrant/ にコピー。

/vagrant は、synced_folder なので、ホスト側で httpd.conf が参照できる。

[vagrant@localhost ~]$ cp -a /etc/httpd/conf/httpd.conf /vagrant/

[vagrant@localhost ~]$ exit
$ ls
Vagrantfile httpd.conf index.html

httpd.conf に VirtualHost を追記して、DocumentRoot を /vagrant にする。

$ vim httpd.conf

# 以下を追加
<VirtualHost *:80>
DocumentRoot /vagrant
</VirtualHost>

Vagrantfile を編集して、httpd.conf を /etc/httpd/conf/ にコピーするようにする。

# -*- mode: ruby -*-

# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "opscode-centos65"

config.vm.provider "virtualbox" do |vb|
vb.gui = true
end

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

config.vm.provision "shell", inline: <<-EOT
#
# iptables off
#
/sbin/iptables -F
/sbin/service iptables stop
/sbin/chkconfig iptables off
#
# Apache
#
yum -y install httpd
cp -a /vagrant/httpd.conf /etc/httpd/conf/ # <---追加
/sbin/service httpd restart
/sbin/chkconfig httpd on
EOT
end


3-5. プロビジョニング実行

vagrant provision で、プロビジョニング実行。

$ vagrant provision

ブラウザで、http://192.168.33.10/ にアクセスして、index.html の内容が表示されれば ok

index.html を変更すると、ブラウザをリロードすると、内容が変更されていることを確認


3-6. Vagrantfile で再構築

仮想マシンを破棄して、再び vagrant up すると、同じ仮想マシンが構築できることを確認

$ vagrant destroy -f

$ vagrant up
$ open http://192.168.33.10/

ブラウザで、http://192.168.33.10/ にアクセス


Appendix


VagrantX - GUI クライアント(OSX)

http://shin1x1.github.io/vagrantx/


vagrant 主なコマンド


  • Vagrantfile作成

$ vagrant init


  • 仮想サーバ状態表示

$ vagrant status


  • 仮想サーバ起動

$ vagrant up


  • 仮想サーバへSSHログイン

$ vagrant ssh


  • 仮想サーバ停止

$ vagrant halt


  • 仮想サーバ停止+破棄

$ vagrant destroy


  • プロビジョニング実行

$ vagrant provision