Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Vagrant入門以前 
2014.10.18 WordBench新潟
開発環境
• 開発するための「環境」 
• 組織/手法/建物/設備 
• ハードウェア/ソフトウェア
• ここでは「開発中のWebサイトをホスティング 
し実行する環境」に限定 
• 一般的なWordPressサイトの開発を例にとると、 
開発中のソースコードやアセットを配置するWeb 
サーバーやデータを格納するDBサーバーをどこ 
にどうや...
開発環境どうしてる?
• ローカルマシン or リモートマシン 
• 物理環境 or 仮想環境
主な選択肢 
(ローカルマシン上に構築する場合) 
• 物理環境 
• XAMPP/MAMPなど 
• 仮想環境 
• ハイパーバイザー型(ホストOS型) 
• VirtualBox, VMware Fusion, VMware Playerな...
XAMPP/MAMP 
• Apache, MySQL, PHPといった 
ソフトウェアを一括してインストー 
ル 
• 個別にインストールするよりとて 
も楽 
• 他のアプリケーションとの干渉 
• 環境ごとの差異に起因するトラブ 
ル 
...
VirtualBox 
• ローカルマシンのOS(ホスト 
OS)上に仮想マシンを構築 
Apache 
Apache 
VirtualBoxが仮想OS(ゲスト 
/PHP MySQL /PHP MySQL 
• OS)に対して仮想的なハード ...
Docker 
• アプリケーションをコンテナ 
という単位でひとまとめに 
• コンテナはホストOS上の隔離 
されたユーザー空間で実行さ 
れる。カーネル空間は共有。 
• 軽量。起動速い 
Docker Engine 
• 移植性が高い ...
4つの観点
• 容易性 
• 一貫性 
• 移植性/再現性 
• 独立性
容易性 
• 手軽に構築できる 
• 手軽に運用できる 
• 手間がかからない
一貫性 
• 本番環境と差異がない 
• メンバー間で差異がない
移植性/再現性 
• 誰が構築しても同じ環境を得ることができる 
• 誰が実行しても同じ結果が得られる 
• 「僕の環境では動くんです!(動かないんで 
す!)」といったことがない
独立性 
• 実行結果がプロジェクトに関係ないものに影響 
されない 
• 複数のプロジェクトを同時進行できる
XAMPP 仮想環境 
(VirtualBox) 
容易性○ ☓ 
一貫性☓ ○ 
移植性/再現 
性△ ○ 
独立性☓ ○
VirtualBoxでWeb 
サーバーを立ててみる
めんどくさいので中止・・・
ところで
Vagrant is 何?
仮想環境を簡単に構築・管理し 
配布できる開発環境作成ツール
• 当初はVirtualBoxを簡単に使うツールとして登 
場 
• 現在はVirtualBoxだけでなく、VMwareや 
Amazon EC2等で使うこともできる 
• vagrantコマンドで仮想マシンを操作する 
• Ruby製のOSS
Vagrantを使うと 
素のVirtualBox VirtualBox + Vagrant 
• OSイメージを取得 
• 仮想マシンの設定 
• ゲストOSインストール 
• アプリインストール 
• ゲストOS/アプリの設定 
• 起動 ...
めんどくささ激減
構築以外にもコマンド一発 
でいろいろな操作ができる
Vagrantコマンド 
• 初期化(設定ファイル生成):vagrant init 
• 起動:vagrant up 
• 停止:vagrant halt 
• 破棄:vagrant destroy 
• SSH:vagrant ssh 
• ...
XAMPP 仮想環境 
(with Vagrant) 
容易性○ ○ 
一貫性☓ ○ 
移植性/再現 
性△ ○ 
独立性☓ ○
メカニズム 
Vagrant実行 
Vagrant 
アプリケーションアプリインストール 
仮想OS 
VirtualBox 
や設定等 
(プロビジョニング) 
OSイメージを取得 
仮想マシンをしてインストール 
起動
構成要素 
• Vagrantfile:仮想マシン構築用の設定ファイル 
• Provider:仮想マシンの提供元 
• Box:仮想OSのひな形となるイメージ 
• Provisioner:アプリインストールやゲストOSの設 
定を担う 
•...
メカニズム 
vagrant up 
Vagrant 
アプリケーション 
ゲストOS 
VirtualBox 
(Provider) 
Provisioner 
Box 
Vagrantfile
あら、便利 
• ベースとなるBoxが公開されており入手できる 
• 自分でBoxを作って公開・共有することも可能
あら、便利 
• VagrantfileやProvisionerのレシピで仮想マシン 
の状態を定義できる 
• Vagrantfileを共有すれば誰でも同じ環境を再現 
可能 
• いろいろな用途に特化したVagrantfileが公開さ 
れ...
あら、便利 
• 環境構築→破棄→再構築・・・のサイクルを素早 
く回せる 
• 試行錯誤しやすい 
• プラグインを使用すればスナップショットの取得 
/ロールバックも可能
あら、便利 
• ホストOS/ゲストOS間でファイルシステムを共 
有できる 
• ソースコードの編集はホストOS、実行はゲスト 
OS、といったことが容易にできる
あら、便利 
• Vagrant Cloudで開発環境をインターネット経 
由で共有できる 
• モバイル端末実機から開発環境にアクセス 
• 遠隔地の顧客や同僚に開発状況を共有するなど
VVV
• Varying Vagrant Vagrants 
• https://github.com/Varying-Vagrant- 
Vagrants/VVV
• WordPressに特化したVagrantfile/Provisioner 
一式 
• vagrant up 一発でWordPress開発環境を構築 
できる 
• WordPressだけでなく、周辺ツールもコミコミ 
でセットアップして...
デモ
Upcoming SlideShare
Loading in …5
×

Vagrant入門以前

1,279 views

Published on

Vagrant入門以前

Published in: Technology
  • Be the first to comment

Vagrant入門以前

  1. 1. Vagrant入門以前 2014.10.18 WordBench新潟
  2. 2. 開発環境
  3. 3. • 開発するための「環境」 • 組織/手法/建物/設備 • ハードウェア/ソフトウェア
  4. 4. • ここでは「開発中のWebサイトをホスティング し実行する環境」に限定 • 一般的なWordPressサイトの開発を例にとると、 開発中のソースコードやアセットを配置するWeb サーバーやデータを格納するDBサーバーをどこ にどうやって用意するか、ということが主題
  5. 5. 開発環境どうしてる?
  6. 6. • ローカルマシン or リモートマシン • 物理環境 or 仮想環境
  7. 7. 主な選択肢 (ローカルマシン上に構築する場合) • 物理環境 • XAMPP/MAMPなど • 仮想環境 • ハイパーバイザー型(ホストOS型) • VirtualBox, VMware Fusion, VMware Playerなど • コンテナ型 • LXC, Jail, Dockerなど
  8. 8. XAMPP/MAMP • Apache, MySQL, PHPといった ソフトウェアを一括してインストー ル • 個別にインストールするよりとて も楽 • 他のアプリケーションとの干渉 • 環境ごとの差異に起因するトラブ ル • 複数の案件を並行する場合どうす るかローカルマシン Apache/ PHP MySQL Other OS
  9. 9. VirtualBox • ローカルマシンのOS(ホスト OS)上に仮想マシンを構築 Apache Apache VirtualBoxが仮想OS(ゲスト /PHP MySQL /PHP MySQL • OS)に対して仮想的なハード ウェアを提供 • ゲストOS上に主要ソフトウェア をインストールして使用 VirtualBox • ゲストOSの独立性が高い OS • サーバー構築に慣れていないと辛 い。結構手間がかかるローカルマシン Other 仮想OS 仮想OS
  10. 10. Docker • アプリケーションをコンテナ という単位でひとまとめに • コンテナはホストOS上の隔離 されたユーザー空間で実行さ れる。カーネル空間は共有。 • 軽量。起動速い Docker Engine • 移植性が高い OS • 使いどころが難しいかもローカルマシン Other Apache/PHP MySQL
  11. 11. 4つの観点
  12. 12. • 容易性 • 一貫性 • 移植性/再現性 • 独立性
  13. 13. 容易性 • 手軽に構築できる • 手軽に運用できる • 手間がかからない
  14. 14. 一貫性 • 本番環境と差異がない • メンバー間で差異がない
  15. 15. 移植性/再現性 • 誰が構築しても同じ環境を得ることができる • 誰が実行しても同じ結果が得られる • 「僕の環境では動くんです!(動かないんで す!)」といったことがない
  16. 16. 独立性 • 実行結果がプロジェクトに関係ないものに影響 されない • 複数のプロジェクトを同時進行できる
  17. 17. XAMPP 仮想環境 (VirtualBox) 容易性○ ☓ 一貫性☓ ○ 移植性/再現 性△ ○ 独立性☓ ○
  18. 18. VirtualBoxでWeb サーバーを立ててみる
  19. 19. めんどくさいので中止・・・
  20. 20. ところで
  21. 21. Vagrant is 何?
  22. 22. 仮想環境を簡単に構築・管理し 配布できる開発環境作成ツール
  23. 23. • 当初はVirtualBoxを簡単に使うツールとして登 場 • 現在はVirtualBoxだけでなく、VMwareや Amazon EC2等で使うこともできる • vagrantコマンドで仮想マシンを操作する • Ruby製のOSS
  24. 24. Vagrantを使うと 素のVirtualBox VirtualBox + Vagrant • OSイメージを取得 • 仮想マシンの設定 • ゲストOSインストール • アプリインストール • ゲストOS/アプリの設定 • 起動 • 設定ファイルを用意して • “vagrant up” するだけ
  25. 25. めんどくささ激減
  26. 26. 構築以外にもコマンド一発 でいろいろな操作ができる
  27. 27. Vagrantコマンド • 初期化(設定ファイル生成):vagrant init • 起動:vagrant up • 停止:vagrant halt • 破棄:vagrant destroy • SSH:vagrant ssh • http://lab.raqda.com/vagrant/cli/
  28. 28. XAMPP 仮想環境 (with Vagrant) 容易性○ ○ 一貫性☓ ○ 移植性/再現 性△ ○ 独立性☓ ○
  29. 29. メカニズム Vagrant実行 Vagrant アプリケーションアプリインストール 仮想OS VirtualBox や設定等 (プロビジョニング) OSイメージを取得 仮想マシンをしてインストール 起動
  30. 30. 構成要素 • Vagrantfile:仮想マシン構築用の設定ファイル • Provider:仮想マシンの提供元 • Box:仮想OSのひな形となるイメージ • Provisioner:アプリインストールやゲストOSの設 定を担う • Vagrantコマンド:仮想マシンに対する操作を行う
  31. 31. メカニズム vagrant up Vagrant アプリケーション ゲストOS VirtualBox (Provider) Provisioner Box Vagrantfile
  32. 32. あら、便利 • ベースとなるBoxが公開されており入手できる • 自分でBoxを作って公開・共有することも可能
  33. 33. あら、便利 • VagrantfileやProvisionerのレシピで仮想マシン の状態を定義できる • Vagrantfileを共有すれば誰でも同じ環境を再現 可能 • いろいろな用途に特化したVagrantfileが公開さ れており再利用できる
  34. 34. あら、便利 • 環境構築→破棄→再構築・・・のサイクルを素早 く回せる • 試行錯誤しやすい • プラグインを使用すればスナップショットの取得 /ロールバックも可能
  35. 35. あら、便利 • ホストOS/ゲストOS間でファイルシステムを共 有できる • ソースコードの編集はホストOS、実行はゲスト OS、といったことが容易にできる
  36. 36. あら、便利 • Vagrant Cloudで開発環境をインターネット経 由で共有できる • モバイル端末実機から開発環境にアクセス • 遠隔地の顧客や同僚に開発状況を共有するなど
  37. 37. VVV
  38. 38. • Varying Vagrant Vagrants • https://github.com/Varying-Vagrant- Vagrants/VVV
  39. 39. • WordPressに特化したVagrantfile/Provisioner 一式 • vagrant up 一発でWordPress開発環境を構築 できる • WordPressだけでなく、周辺ツールもコミコミ でセットアップしてくれる
  40. 40. デモ

×