Vagrant体験入門

16,284
-1

Published on

2014/04/24 DevLove関西 Vagrant体験入門

Published in: Technology
0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
16,284
On Slideshare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
0
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

Vagrant体験入門

  1. 1. 2014/04/24 shin1x1 DevLOVE関西 Vagrant 体験入門
  2. 2. ハンズオン準備 (c) 2014 Masashi Shinbara @shin1x1 USBメモリから ファイルコピー
  3. 3. (c) 2014 Masashi Shinbara @shin1x1 Vagrantで作るPHP開発環境 http://www.slideshare.net/shin1x1/xampp-mamp-vagrant-php
  4. 4. (c) 2014 Masashi Shinbara @shin1x1 Vagrantで作るPHP開発環境[実践編] http://www.slideshare.net/shin1x1/vagrant-php
  5. 5. (c) 2014 Masashi Shinbara @shin1x1 VagrantX http://shin1x1.github.io/vagrantx/
  6. 6. (c) 2014 Masashi Shinbara @shin1x1 Web開発あるある
  7. 7. エンジニアSさん (c) 2014 Masashi Shinbara @shin1x1 • Macbook Air で開発 • Apache / PHP / DB • 複数案件を一台で
  8. 8. エンジニアSさん (c) 2014 Masashi Shinbara @shin1x1 1162 <VirtualHost *:80>! 1163 ServerName candycane.local! 1164 DocumentRoot "/Users/shin/sandbox/demo/candycane/app/webroot"! 1165 </VirtualHost>! 1166 ! 1167 <VirtualHost *:80>! 1168 ServerName demo.local! 1169 DocumentRoot "/Users/shin/sandbox/demo/20140601_phpcon"! 1170 php_value vld.active 1! 1171 </VirtualHost>! 1172 ! 1173 <VirtualHost *:80>! 1174 ServerName evememo.local! 1175 DocumentRoot "/Users/shin/work/1x1/evememo/app/webroot"! 1176 </VirtualHost>! 1177 ! 1178 <VirtualHost *:80>! 1179 ServerName kusaon.local! 1180 DocumentRoot "/Users/shin/work/kusaon/app/webroot"! 1181 </VirtualHost>!
  9. 9. エンジニアSさん (c) 2014 Masashi Shinbara @shin1x1 1162 <VirtualHost *:80>! 1163 ServerName candycane.local! 1164 DocumentRoot "/Users/shin/sandbox/demo/candycane/app/webroot"! 1165 </VirtualHost>! 1166 ! 1167 <VirtualHost *:80>! 1168 ServerName demo.local! 1169 DocumentRoot "/Users/shin/sandbox/demo/20140601_phpcon"! 1170 php_value vld.active 1! 1171 </VirtualHost>! 1172 ! 1173 <VirtualHost *:80>! 1174 ServerName evememo.local! 1175 DocumentRoot "/Users/shin/work/1x1/evememo/app/webroot"! 1176 </VirtualHost>! 1177 ! 1178 <VirtualHost *:80>! 1179 ServerName kusaon.local! 1180 DocumentRoot "/Users/shin/work/kusaon/app/webroot"! 1181 </VirtualHost>! 溢れる VirtualHost
  10. 10. とある開発チームA (c) 2014 Masashi Shinbara @shin1x1 • チームで開発 • Macbook / Windows で開発 • Apache / PHP / DB
  11. 11. とある開発チームA (c) 2014 Masashi Shinbara @shin1x1 あれ?動かない。
 何か変なコード書いた? こっちは動いてるよ。 拡張追加しないとダメだよ。
  12. 12. とある開発チームA (c) 2014 Masashi Shinbara @shin1x1 あれ?動かない。
 何か変なコード書いた? こっちは動いてるよ。 拡張追加しないとダメだよ。 俺の環境では動く
  13. 13. とある開発チーム新人Cさん (c) 2014 Masashi Shinbara @shin1x1 ここの手順で開発環境を 構築しておいて。 わかりました!
  14. 14. (c) 2014 Masashi Shinbara @shin1x1 # tar xvzf postgresql-8.3.9.tar.gz! # mv postgresql-8.3.9 /usr/local/src! # cd /usr/local/src/postgresql-8.3.9! # ./congure {prex=/usr/local/pgsql! # gmake && gmake install! !/usr/local/pgsql/lib/pgxs/cong/install-sh! /bin/sh ../cong/install-sh -c -m 755 ./mkinstalldirs! /usr/local/pgsql/lib/pgxs/cong/mkinstalldirs! !gmake[1]: Leaving directory `/usr/local/src/postgresql-8.3.9/cong'! PostgreSQL installation complete.! !# .bash prole! # Get the aliases and functions! if [ -f ~/.bashrc ]; then! .! ~/.bashrc! !# User specic environment and startup programs! PATH=$PATH:$HOME/bin! PATH=$PATH:/usr/java/jdk1.5.0 21/bin! export PATH! unset USERNAME! export JAVA HOME=/usr/java/jdk1.5.0 21/! export CATALINA HOME=/usr/local/tomcat! export CLASSPATH=$CLASSPATH:$CATALINA HOME/common/lib! export CATALINA OPTS="-server -Xms512m -Xmx512m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=64m"! !# tar xvzf postgresql-8.3.9.tar.gz! # mv postgresql-8.3.9 /usr/local/src! # cd /usr/local/src/postgresql-8.3.9! # ./congure {prex=/usr/local/pgsql! # gmake && gmake install! !/usr/local/pgsql/lib/pgxs/cong/install-sh! /bin/sh ../cong/install-sh -c -m 755 ./mkinstalldirs! /usr/local/pgsql/lib/pgxs/cong/mkinstalldirs! !gmake[1]: Leaving directory `/usr/local/src/postgresql-8.3.9/cong'! PostgreSQL installation complete.! !# .bash prole! # Get the aliases and functions! if [ -f ~/.bashrc ]; then! .! ~/.bashrc! !# User specic environment and startup programs! PATH=$PATH:$HOME/bin! PATH=$PATH:/usr/java/jdk1.5.0 21/bin! export PATH! unset USERNAME! export JAVA HOME=/usr/java/jdk1.5.0 21/! export CATALINA HOME=/usr/local/tomcat! export CLASSPATH=$CLASSPATH:$CATALINA HOME/common/lib! export CATALINA OPTS="-server -Xms512m -Xmx512m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=64m"! とある開発チーム新人Cさん
  15. 15. (c) 2014 Masashi Shinbara @shin1x1 # tar xvzf postgresql-8.3.9.tar.gz! # mv postgresql-8.3.9 /usr/local/src! # cd /usr/local/src/postgresql-8.3.9! # ./congure {prex=/usr/local/pgsql! # gmake && gmake install! ! /usr/local/pgsql/lib/pgxs/cong/install-sh! /bin/sh ../cong/install-sh -c -m 755 ./mkinstalldirs! /usr/local/pgsql/lib/pgxs/cong/mkinstalldirs! ! gmake[1]: Leaving directory `/usr/local/src/postgresql-8.3.9/cong'! PostgreSQL installation complete.! ! # .bash prole! # Get the aliases and functions! if [ -f ~/.bashrc ]; then! .! ~/.bashrc! ! # User specic environment and startup programs! PATH=$PATH:$HOME/bin! PATH=$PATH:/usr/java/jdk1.5.0 21/bin! export PATH! unset USERNAME! export JAVA HOME=/usr/java/jdk1.5.0 21/! export CATALINA HOME=/usr/local/tomcat! export CLASSPATH=$CLASSPATH:$CATALINA HOME/common/lib! export CATALINA OPTS="-server -Xms512m -Xmx512m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=64m"! とある開発チーム新人Cさん これやるの・・・
  16. 16. (c) 2014 Masashi Shinbara @shin1x1 # tar xvzf postgresql-8.3.9.tar.gz! # mv postgresql-8.3.9 /usr/local/src! # cd /usr/local/src/postgresql-8.3.9! # ./congure {prex=/usr/local/pgsql! # gmake && gmake install! ! /usr/local/pgsql/lib/pgxs/cong/install-sh! /bin/sh ../cong/install-sh -c -m 755 ./mkinstalldirs! /usr/local/pgsql/lib/pgxs/cong/mkinstalldirs! ! gmake[1]: Leaving directory `/usr/local/src/postgresql-8.3.9/cong'! PostgreSQL installation complete.! ! # .bash prole! # Get the aliases and functions! if [ -f ~/.bashrc ]; then! .! ~/.bashrc! ! # User specic environment and startup programs! PATH=$PATH:$HOME/bin! PATH=$PATH:/usr/java/jdk1.5.0 21/bin! export PATH! unset USERNAME! export JAVA HOME=/usr/java/jdk1.5.0 21/! export CATALINA HOME=/usr/local/tomcat! export CLASSPATH=$CLASSPATH:$CATALINA HOME/common/lib! export CATALINA OPTS="-server -Xms512m -Xmx512m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=64m"! とある開発チーム新人Cさん しかも動かない!
  17. 17. とある開発チーム新人Cさん (c) 2014 Masashi Shinbara @shin1x1 あ、あの手順の後、 ○○を☓☓して、△△も入れておいて はあ
  18. 18. とある開発チーム新人Cさん (c) 2014 Masashi Shinbara @shin1x1 あ、あの手順の後、 ○○を☓☓して、△△も入れておいて はあ スタートラインは どこだ
  19. 19. WebデザイナーBさん (c) 2014 Masashi Shinbara @shin1x1 • WordPressのデザイン • XAMPPをインストール • でもなんだか動かない。。。
  20. 20. (c) 2014 Masashi Shinbara @shin1x1 WebデザイナーBさん
  21. 21. (c) 2014 Masashi Shinbara @shin1x1 WebデザイナーBさん Port 80 は 俺のモノ
  22. 22. そこでVagrant (c) 2014 Masashi Shinbara @shin1x1
  23. 23. Vagrant? (c) 2014 Masashi Shinbara @shin1x1
  24. 24. Vagrant? (c) 2014 Masashi Shinbara @shin1x1 軽量で、再現可能かつポータブルな 開発環境の構築、設定を行う
  25. 25. 独立した環境 (c) 2014 Masashi Shinbara @shin1x1 • 仮想環境を使った、独立した環境 • ホストに影響が無い • プロジェクト毎にクリーンな環境
  26. 26. 再現が可能 (c) 2014 Masashi Shinbara @shin1x1 • 構築手順をコードで記述 • コードに添って自動構築 • 全く同じ環境を再現可能
  27. 27. ポータブル (c) 2014 Masashi Shinbara @shin1x1 • 構築手順コードがあればどこでも構築 • チームで同じ環境を各PCに構築 • コマンド一つ実行するだけ
  28. 28. Vagrant (c) 2014 Masashi Shinbara @shin1x1 • HashiCorp が開発した OSS(MIT) • Ruby • 仮想環境の構築、プロビジョニングを
 実行するコマンドラインツール • 構築手順をコードで定義(Vagrantfile)
  29. 29. (c) 2014 Masashi Shinbara @shin1x1 Vagrant 仮想環境 仮想マシン構築 Vagrant CentOS, Ubuntu, FreeBSD, etc
  30. 30. (c) 2014 Masashi Shinbara @shin1x1 仮想環境 仮想マシン構築 Vagrant プロビジョニング Vagrant Apache, PHP, MySQL, Redis, etc
  31. 31. (c) 2014 Masashi Shinbara @shin1x1 仮想環境 仮想マシン構築 Vagrant プロビジョニング Vagrant $ vagrant up
  32. 32. Vagrant ワークフロー (c) 2014 Masashi Shinbara @shin1x1 $ git clone REPO/project! $ cd project! $ vagrant up • 環境構築はこれだけ • こうなるように構成しておく!
  33. 33. vagrant 主なコマンド (c) 2014 Masashi Shinbara @shin1x1 • 仮想サーバ起動 $ vagrant up • 仮想サーバへ SSH ログイン $ vagrant ssh • 仮想サーバ停止 $ vagrant halt • 仮想サーバ停止+破棄 $ vagrant destroy
  34. 34. (c) 2014 Masashi Shinbara @shin1x1 Vagrantで おさえておきたい用語
  35. 35. Provider (c) 2014 Masashi Shinbara @shin1x1 • 仮想環境 • VirtualBox, VMWare, Hyper-V • AWS, DigitalOcean
  36. 36. Box (c) 2014 Masashi Shinbara @shin1x1 • 仮想マシンイメージ • CentOS, Ubuntu, FreeBSD, OSX, etc • Vagrant Cloud
 • Bento - Chef社が作成したBox https://github.com/opscode/bento https://vagrantcloud.com/
  37. 37. Box (c) 2014 Masashi Shinbara @shin1x1 • 仮想マシンイメージ • CentOS, Ubuntu, FreeBSD, OSX, etc • Vagrant Cloud
 • Bento - Chef社が作成したBox https://github.com/opscode/bento https://vagrantcloud.com/ ! ハンズオンでは、 Bento の CentOS 6.5 を使います。
  38. 38. Provisioner (c) 2014 Masashi Shinbara @shin1x1 • プロビジョンを実行するツール • シェル, Chef Solo, Puppet, 
 Ansible, Docker, etc • まずは シェル をおすすめ
  39. 39. Provisioner (c) 2014 Masashi Shinbara @shin1x1 If you've never used a configuration management system before, it is recommended you start with basic shell scripts for provisioning. http://docs.vagrantup.com/v2/provisioning/index.html
  40. 40. Synced Folder (c) 2014 Masashi Shinbara @shin1x1 •ホストPCのディレクトリと
 仮想サーバのディレクトリを同期 •開発はホストPCで、
 実行は仮想サーバで •PhpStormやEclipseで開発可能
  41. 41. (c) 2014 Masashi Shinbara @shin1x1 $ ls .! Vagrantfile $ ls /vagrant! Vagrantfile ホストPC 仮想マシン Synced Folder
  42. 42. Synced Folder (c) 2014 Masashi Shinbara @shin1x1 • Shared Folder(デフォルト) • NFS(ホストがNFSサーバになる) • Rsync(自動でrsync実行)
  43. 43. Vagrantfile (c) 2014 Masashi Shinbara @shin1x1 • 構築手順を記述したファイル • このファイルを元に環境構築 • Ruby の DSL • 分かる人が書けば良い
  44. 44. Vagrantfile (c) 2014 Masashi Shinbara @shin1x1 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|! config.vm.box = "opscode-centos65"! config.vm.network “private_network", ip: "192.168.33.10"! ! config.vm.provision "shell", inline: <<-EOT! yum -y install httpd! cp -a /vagrant/httpd.conf /etc/httpd/conf/! /sbin/service httpd restart! /sbin/chkconfig httpd on! EOT! end
  45. 45. 主なユースケース (c) 2014 Masashi Shinbara @shin1x1 • 検証環境 • 開発環境 • 仮公開環境
  46. 46. (c) 2014 Masashi Shinbara @shin1x1 ハンズオン
  47. 47. (c) 2014 Masashi Shinbara @shin1x1 流れ 1. USBメモリから必要なファイルコピー 2. Qiita に書いた手順でハンズオン 3. 上手く動いたら tweet (#DevKan)
  48. 48. (c) 2014 Masashi Shinbara @shin1x1 手順資料 #DevKan http://qiita.com/shin1x1/items/ 3288d9de7f04192b6ad8
  49. 49. (c) 2014 Masashi Shinbara @shin1x1 Tips
  50. 50. Git で管理 (c) 2014 Masashi Shinbara @shin1x1 • Vagrantfile とプロビジョニング ファイルをリポジトリへ • .vagrant/ は .gitignore • ソースコードリポジトリに同梱
  51. 51. チームで共有 (c) 2014 Masashi Shinbara @shin1x1 • 環境を揃える
 VirtualBox
 private ip
 shared_folder • Box は、必要最低限な構成
 (Bento)
  52. 52. Sahara Plugin (c) 2014 Masashi Shinbara @shin1x1 • Vagrant Plugin
 https://github.com/jedi4ever/sahara • 仮想サーバの状態を DB の
 ROLLBACK のように戻せる
  53. 53. Sahara Plugin (c) 2014 Masashi Shinbara @shin1x1 ! $ vagrant plugin install sahara! • インストール
  54. 54. Sahara Plugin (c) 2014 Masashi Shinbara @shin1x1 $ vagrant sandbox on • sandbox モード開始 = BEGIN; $ vagrant sandbox rollback • 元に戻す = ROLLBACK; $ vagrant sandbox commit • 変更確定 = COMMIT; $ vagrant sandbox off • sandbox モード終了
  55. 55. 参考1 (c) 2014 Masashi Shinbara @shin1x1 http://docs.vagrantup.com/v2/
  56. 56. 参考2 (c) 2014 Masashi Shinbara @shin1x1 http://www.oreilly.co.jp/books/9784873116655/
  57. 57. 参考3 (c) 2014 Masashi Shinbara @shin1x1 http://www.amazon.co.jp/dp/B00F418SQ8
  58. 58. @shin1x1 (c) 2014 Masashi Shinbara @shin1x1

×