Vagrant+網元AMIで簡単に
開発環境を作ってみよう
JAWS FESTA
KANSAI 2013
森川琢磨
自己紹介
森川琢磨(もりたく)
PolishWebPartner代表
基本Web何でも屋、主にサーバーインフラ
甘いモノが好き、ブロッコリーが嫌い
個人で勉強会とか開催してます
WordBench大阪管理人
飲めない幹事、なんちゃってプラグイン作者
今回のお話にあたって
Kansai PHP Users Groupの
新原さんに許可を頂き一部資料を
参考にさせてもらってる箇所があります
この場をお借りして御礼申し上げます
http://www.slideshare.net/shin1x1/
xampp-mamp-vagrant-php
そもそもVagrantって何よ?
ちゃいます
開発現場でこんな事ないですか?
れかえるVirtualHost
とあるエンジニアさんの場合
膨れ上がるhostsファイル
とあるデザイナーさんの場合
XAMPPやMAMPを
インストール
でも何だか動かない
Port80はオレのもの
とある開発チームの場合
WindowsとMacで開発
あれ?動かない
何か変なコード書いた?
こっちは動いてるよ
拡張追加しないとダメだよ 
オレの環境では動く
こんなのが解決できちゃうのが
もうちょっとだけ詳しく
見てみましょうか
Vagrantとは
「べいぐらんと」と読みます
Mitchell Hashimotoさんが作りました
「最高の開発フロー」を提供すること
仮想環境構築ツール
黒い画面を使って簡単に仮想環境を構築
MacOSXやLinux、Windows等で利用可能
Last login: Thu Sep 28 12:45:02 2013 from 192.168.1.1
[admin@shell ]$ su -
パスワード:
[root@shell ]# cd /etc/httpd/conf
[root@shell conf]# ls -al
合計 104
drwxr--xr--x 2 root root 4096 4月 25 16:18 .
drwxr--xr--x 4 root root 4096 2月 24 2010 . .
--rw--r---r--- 1 root root 33771 10月 18 2010 httpd.conf
[root@shell conf]# cd /var/log/httpd
[root@shell httpd]# ls
access_log error_log ssl_access_log ssl_error_log ssl_result_log
access_log.1 error_log.1 ssl_access_log.1 ssl_error_log.1 ssl_result_log.1
access_log.2 error_log.2 ssl_access_log.2 ssl_error_log.2 ssl_result_log.2
[root@shell httpd]# apachectl -t
/etc/init.d/httpd restart[root@shell httpd]#
Syntax OK
httpd を停止中:
httpd を起動中:
[root@shell httpd]#
[ OK ]
[ OK ]
え?黒い画面使うの?
別にVagrant使わなくても
良いんじゃないの?
Vagrantの目指すところは
「最高の開発フロー」
Vagrantの素晴らしい点
「vagrant」というコマンドに集約
➡ 要するに簡単手軽に仮想環境を操作出来る
作って壊して元に戻すもオテノモノ
➡ 要するに簡単手軽に作成削除コピー出来る
仮想マシンの設定やインストールを自動化
➡ 要するに簡単手軽に自動化出来る
簡単手軽に仮想環境を構築
出来る点が素晴らしいんです
でも、Vagrantって
仮想環境を構築出来るのは
これまでと一緒
簡単手軽
超大事
Don't Repeat
Yourself
DRY
では早速
Vagrantの説明に入ります
Vagrantの構成
Vagrant
仮想化ソフトウェア [Provider]
プロビジョニングツール [Provisioning]
➡ 仮想化を便利にするツール
➡ VirtualBox、VMWare、AWS等
➡ Chef、Puppet等
Vagrantのイメージ
仮想化ソフトウェア
プロビジョニングツール
Vagrantの用語と説明
Boxファイル
Vagrantfile
vagrantコマンド
➡ 仮想マシン起動に必要となるイメージファイル
➡ 仮想マシンの構成を記述するファイル
➡ Vagrantの全ての操作を行なうコマンド
Vagrantを使う準備
仮想化ソフトウェアのインストール
Vagrantのインストール
プロビジョニングツールのインストール
➡ 今回はVirtualBoxを利用します
➡ 自分の利用する環境のものをダウンロード
➡ 今回は説明しません...m(_ _)m
VirtualBoxのインストール
https://www.virtualbox.org/wiki/
Downloads
VirtualBox本家サイトからダウンロード
自分の環境にあったものを
ダウンロードして下さい
Vagrantのインストール
http://downloads.vagrantup.com/
Vagrant本家サイトからダウンロード
とりあえず最新のバージョンでOK
Vagrantの確認
$ vagrant -v
Vagrant version 1.3.3
Vagrantのバージョンを表示
きちんとVagrantがインストールされてる!
VagrantコマンドのHELP
$ vagrant -h
Usage: vagrant [-v] [-h] command
[<args>]
-v, --version Print the
version and exit.
-h, --help Print this
help.
Boxファイルの準備
$ vagrant box add NAME URL
[NAME]Boxファイルの名前
[URL]Boxファイルが配置されているURL
[参考サイト]http://www.vagrantbox.es/
Boxファイルの準備
$ vagrant box add centos6.4 URL
わかりやすい名前をつける
URLを貼っつける
$ vagrant box add centos6.4 http://
developer.nrel.gov/downloads/
vagrant-boxes/CentOS-6.4-x86_64-
v20130427.box
Boxファイルの準備
$ vagrant box list
centos6.4 (VirtualBox)
Boxファイルの確認
Boxファイルの削除
$ vagrant box remove NAME
Vagrantfileの生成と設定
$ vagrant init NAME
Vagrantfileの生成
[NAME]Boxファイルの名前を指定
$ vagrant init centos6.4
さっき作ったBoxファイルの名前を指定
Vagrantfileの生成と設定
$ ls
Vagrantfile
Vagrantfileの存在を確認
$ less Vagrantfile
lsコマンドを利用してファイルの存在を確認
lessコマンドでVagrantfileの中身を確認
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do ¦config¦
# All Vagrant configuration is done here. The
most common configuration
# options are documented and commented
below. For a complete reference,
# please see the online documentation at
vagrantup.com.
# Every Vagrant virtual environment requires a
box to build off of.
lessを終了するには[Q]ボタン
Vagrant.configure("2") do ¦config¦
config.vm.box = "centos6.4"
end
Vagrantfileの行頭#の文を消すと...
Vagrant::Config.run do ¦config¦
config.vm.box = "centos6.4"
config.vm.boot_mode = :gui
end
ちょっとだけ修正してみよう
GUIモードを有効にした状態に設定変更
仮想マシンの起動と操作
$ vagrant up
仮想マシンの起動
VirtualBoxウィンドウも表示される
仮想マシンの起動と操作
VirtualBoxウィンドウ内に
ログインプロンプトが表示される
仮想マシンの起動と操作
[login] vagrant
[password] vagrant
ログインするには
と入力する
VirtualBoxウィンドウから抜ける場合は
左側の (command)ボタンを押す
仮想マシンの起動と操作
SSHで仮想マシンにログインする
$ vagrant ssh
仮想マシンの状態を確認する
$ vagrant status
Current machine states:
default running (virtualbox)
仮想マシンの起動と操作
仮想マシンを停止する
$ vagrant halt
停止状態で仮想マシンの状態を確認する
$ vagrant status
Current machine states:
default poweroff (virtualbox)
仮想マシンの起動と操作
仮想マシンを削除する
$ vagrant destroy
Are you sure you want to destroy the
'default' VM? [y/N] y
仮想マシンの状態を確認すると
Current machine states:
default not created (virtualbox)
この後の目標
sshログインしてWeb仮想マシン作ってみる
作ったらブラウザからアクセス可能か確認
Vagrantプラグインsaharaを利用してみる
複数の仮想マシンを起動してみる
仮想マシンをエクスポートしてみる
エクスポートファイルからBoxファイル作成
プロビジョニングツールと連携させてみる
AWSの網元AMIを使って
Vagrantで
高速WordPressの入った
EC2インスタンスをたてる
パルスのファルシの
ルシがパージでコクーン
それぞれの用語説明
Amazon Web Service (AWS)
Elastic Computing Cloud (EC2)
網元AMI
➡ Amazonが提供しているクラウドサービス群
➡ AWSの1つ、仮想サーバを利用できる
➡ め組提供の超高速WordPressが入ったAMI
Amazon Machine Image (AMI)
➡ 色んな設定が詰まったイメージファイル
必要なモノ
AWSへの登録(クレジットカード必須)
vagrant-awsプラグインのインストール
AWSのセキュリティグループの設定
AWSのキーペアの作成
Boxファイルの作成
Vagrantfileに設定を記述
AWSの設定はコチラを参考に
AWS提供のEC2ドキュメント
http://aws.amazon.com/jp/
documentation/ec2/
もりたくのSlideShare
http://www.slideshare.net/duffytoy1/
awswordpress
プラグインのインストール
$ vagrant plugin install NAME
プラグインをインストールする
[NAME]プラグインの名前を指定
vagrant-awsというプラグイン
$ vagrant plugin install vagrant-aws
AWS用Boxファイルの作成
VagrantにはBoxファイルが必要
dummyのBoxファイルを用意する
AWSにはBoxファイルが必要ない
$ vagrant box add NAME URL
DummyBoxファイルの作成
$ vagrant box add dummy https://
github.com/mitchellh/vagrant-aws/
raw/master/dummy.box
Boxファイルの名前を[dummy]
URLを以下のように指定して実行
AWS用Vagrantfileの生成
Vagrantfileの生成を行なうには
$ vagrant init dummy
[NAME]Boxファイルの名前を指定
$ vagrant init NAME
先程作ったDummyのBoxファイル名を指定
AWS用Vagrantfileの設定
Vagrant.configure("2") do ¦config¦
config.vm.box = "dummy"
end
Vagrantfileの行頭#の文を消すと...
config.vm.boxがdummyになってればOK
Vagrant.configure("2") do ¦config¦
config.vm.box = "dummy"
config.vm.provider :aws do ¦aws, override¦
aws.access_key_id = 'アクセスキー'
aws.secret_access_key = 'シークレットアクセスキー'
aws.keypair_name = 'キーペアネーム'
aws.instance_type = 't1.micro'
aws.region = 'ap-northeast-1'
aws.ami = 'ami-3a7cfe3b'
aws.security_groups = ['セキュリティグループ名']
Vagrantfile設定[1]
aws.tags = {
'Name' => 'NAME',
'Description' => 'DESCRIPTION'
}
override.ssh.private_key_path = 'プライベートキーの
パス'
override.ssh.username = "root"
end
Vagrantfile設定[2]
EC2インスタンスの起動
$ vagrant up
毎度お馴染み起動コマンド
AWSの場合はちょっとだけ追記が必要
$ vagrant up --provider=aws
いつもどおりsshで接続もできるよ
$ vagrant ssh
ココらへん参考にチャレンジ
新原さんの
「Vagrant入門ガイド」
ドットインストール
「Vagrant入門」
It's a Wonderful
Vagrant Life
ご清聴
ありがとうございました

Vagrantと網元で開発環境を作ってみよう