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

28,775 views

Published on

in JAWS-UG三都物語 2014

Published in: Technology
  • Be the first to comment

開発現場で活用するVagrant

  1. 1. 2014/07/05 shin1x1 夏の JAWS-UG 三都物語 2014 開発現場で活用する Vagrant
  2. 2. Vagrant (c) 2014 Masashi Shinbara @shin1x1
  3. 3. Vagrant (c) 2014 Masashi Shinbara @shin1x1
  4. 4. Vagrant (c) 2014 Masashi Shinbara @shin1x1 軽量で、再現可能かつポータブルな 開発環境の構築、設定を行う
  5. 5. Vagrant (c) 2014 Masashi Shinbara @shin1x1 Vagrant Ⅱ 開発環境を構築するツール
  6. 6. (c) 2013 Masashi Shinbara @shin1x1 Vagrant については
  7. 7. (c) 2014 Masashi Shinbara @shin1x1 Vagrantを 支えるツール
  8. 8. (c) 2014 Masashi Shinbara @shin1x1 Vagrantと連携ツール Vagrant
  9. 9. (c) 2014 Masashi Shinbara @shin1x1 Vagrantと連携ツール どれがなんやねん><
  10. 10. Vagrantと連携ツール (c) 2014 Masashi Shinbara @shin1x1 • 仮想環境 • プロビジョニング • Vagrantは、コントローラに徹する
  11. 11. (c) 2014 Masashi Shinbara @shin1x1 Vagrantと仮想環境 VirtualBox 仮想マシン構築 Vagrant VMイメージはCentOS IPは、xxx.xxx.xxx.xxx メモリは、XXXMB
  12. 12. (c) 2014 Masashi Shinbara @shin1x1 Vagrantと仮想環境 VirtualBox 仮想マシン構築 Vagrant VBoxManage を実行
  13. 13. (c) 2014 Masashi Shinbara @shin1x1 Vagrantと仮想環境 EC2インスタンス構築 Vagrant AWS API を実行 AWS
  14. 14. (c) 2014 Masashi Shinbara @shin1x1 Vagrantとプロビジョニング プロビジョニング実行 Vagrant chef-solo を実行
  15. 15. (c) 2014 Masashi Shinbara @shin1x1 プロビジョニング実行 Vagrant ansible-playbook を 実行 Vagrantとプロビジョニング
  16. 16. (c) 2014 Masashi Shinbara @shin1x1 VagrantとDocker コンテナ構築
 コンテナ実行 Vagrant docker コマンドを 実行
  17. 17. (c) 2014 Masashi Shinbara @shin1x1 VagrantとDocker http://www.slideshare.net/shin1x1/lt-up-33437883
  18. 18. (c) 2014 Masashi Shinbara @shin1x1 Vagrantと連携ツール 仮想環境 プロビジョン
  19. 19. https://github.com/shin1x1/vagrant-demo-20140705 今日のコード
  20. 20. demo
  21. 21. (c) 2013 Masashi Shinbara @shin1x1 仮想環境 プロビジョニング $ vagrant up シェル スクリプト
  22. 22. httpd サーバ (c) 2014 Masashi Shinbara @shin1x1 • Apache • yum でインストール • document_root を /vagrant に
  23. 23. Vagrantfile作成 (c) 2014 Masashi Shinbara @shin1x1 •chef/centos-6.5 を利用 $ vagrant init chef/centos-6.5
  24. 24. Vagrantfile編集 (c) 2014 Masashi Shinbara @shin1x1 •不要なコメントは削除 # -*- mode: ruby -*-! # vi: set ft=ruby :! ! VAGRANTFILE_API_VERSION = "2"! ! Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|! config.vm.box = "opscode-centos65"! config.vm.network :private_network, ip: "192.168.33.200"! end
  25. 25. 仮想マシンの状態を確認 (c) 2014 Masashi Shinbara @shin1x1 $ vagrant status! Current machine states:! ! default not created (virtualbox)! • vagrant status で確認
  26. 26. 仮想マシン起動 (c) 2014 Masashi Shinbara @shin1x1 $ vagrant up! (snip)! $ vagrant ssh • vagrant up で起動 • vagrant ssh でログイン
  27. 27. シェルスクリプト (c) 2014 Masashi Shinbara @shin1x1 • config.vm.provision :shell を指定 • 仮想マシンで、root ユーザで実行 ! Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|! config.vm.provision :shell, inline: "whoami"! end
  28. 28. プロビジョニング実行 (c) 2014 Masashi Shinbara @shin1x1 • vagrant provision で実行
  29. 29. 設定ファイル (c) 2014 Masashi Shinbara @shin1x1 • 仮想マシンの設定ファイルを /vagrant にコピー % cp /etc/httpd/conf/httpd.conf /vagrant/ provision • ホストで設定ファイルを編集 $ vim provision/httpd.conf
  30. 30. 設定ファイル (c) 2014 Masashi Shinbara @shin1x1 • ホストで設定を追加 <VirtualHost *:80>! DocumentRoot /vagrant! </VirtualHost> • コンテンツを作成 $ vim index.html! Hello JAWS-UG !!
  31. 31. プロビジョニング (c) 2014 Masashi Shinbara @shin1x1 • yum でインストール • 設定ファイルコピー Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|! config.vm.box = "opscode-centos65"! config.vm.network :private_network, ip: "192.168.33.200"! ! config.vm.provision :shell, :inline => <<-EOT! yum -y install httpd! cp -a /vagrant/provision/httpd.conf /etc/httpd/conf/! chkconfig httpd on! service httpd restart! EOT! end
  32. 32. プロビジョニング実行 (c) 2014 Masashi Shinbara @shin1x1 • vagrant provision で実行
  33. 33. Hello JAWS-UG!! (c) 2014 Masashi Shinbara @shin1x1
  34. 34. 仮想マシン破棄 (c) 2014 Masashi Shinbara @shin1x1 $ vagrant destroy • vagrant destroy で破棄
  35. 35. demo2
  36. 36. (c) 2013 Masashi Shinbara @shin1x1 仮想環境 プロビジョニング $ vagrant up シェル スクリプト
  37. 37. アプリケーション (c) 2014 Masashi Shinbara @shin1x1
  38. 38. アプリケーションの構成 (c) 2014 Masashi Shinbara @shin1x1 • Linux(CentOS 6.5) • Apache • PHP • PostgreSQL
  39. 39. ディレクトリ構成 (c) 2014 Masashi Shinbara @shin1x1 . ├── .gitignore ├── Vagrantfile ├── provision/ └── src/ アプリケーション Vagrant 関連 .vagrant を ignore
  40. 40. demo3
  41. 41. (c) 2013 Masashi Shinbara @shin1x1 仮想環境 プロビジョニング $ vagrant up
  42. 42. Ansible でプロビジョニング (c) 2014 Masashi Shinbara @shin1x1 • Ansible プロビジョナは使わない • シェルスクリプトで、ansible インストール • 仮想マシンで、ansible-playbook を実行 provision = <<-EOT rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm yum -y install ansible libselinux-python ansible-playbook /vagrant/provision/vagrant.yml --connection=local EOT
  43. 43. demo4
  44. 44. Vagrant Share (c) 2014 Masashi Shinbara @shin1x1 • 仮想マシンをインターネットで公開 • Vagrant Cloud でユーザ登録 • vagrant login • vagrant share
  45. 45. Vagrant Share (c) 2014 Masashi Shinbara @shin1x1
  46. 46. demo5
  47. 47. (c) 2013 Masashi Shinbara @shin1x1 仮想環境 プロビジョニング $ vagrant up
  48. 48. AWSへデプロイ (c) 2014 Masashi Shinbara @shin1x1 • vagrant-aws プラグイン • config.vm.define で
 仮想マシンを分ける • EC2 の情報をVagrantfileに設定
  49. 49. AWSへデプロイ (c) 2014 Masashi Shinbara @shin1x1 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.define :vbox do |vbox| config.vm.provider :virtualbox do |provider, override| override.vm.box = "opscode-centos65" end end ! config.vm.provision :shell, :inline => provision config.vm.synced_folder "src", "/share", type: "nfs" ! config.vm.define :aws do |aws| config.vm.provider :aws do |provider, override| (AWS関連の設定) end end end VirtualBox AWS 共通
  50. 50. vagrant up
  51. 51. 開発環境を作る (c) 2014 Masashi Shinbara @shin1x1 $ git clone REPO/project! $ cd project! $ vagrant up • 環境構築はこれだけ
  52. 52. 開発環境を作る (c) 2014 Masashi Shinbara @shin1x1 • Vagrant / VirtualBox(仮想環境)以外
 をホスト環境に要求しない • vagrant up のみで完結 • vagrant ssh して、とか…><
  53. 53. まとめ
  54. 54. まとめ (c) 2013 Masashi Shinbara @shin1x1 • Vagrant はコントローラ • まずはシェルスクリプトから • vagrant up のみにこだわる
  55. 55. @shin1x1 (c) 2014 Masashi Shinbara @shin1x1
  56. 56. (c) 2014 Masashi Shinbara @shin1x1 Mac OS X 用 GUIアプリ VagrantX http://shin1x1.github.io/vagrantx/

×