SlideShare a Scribd company logo
1 of 27
Download to read offline
VagrantでローカルEC2
   楽々開発環境構築




   サイバーエージェント 前田 拓
自己紹介
 サーバー・ネットワークエンジニア 前田拓
プライベートクラウド や、別のB2Bサービス担当
      github, twitter: t9md

        cmdline-fu gem

           chef.vim

         vagrant-snap

          pxelerator

            etc...
不安な事
   あまり弊社のサービスに関係ない

     ライトニングトーク的内容

デモが大きな比重を占める。デモがミスったら全滅

  時間配分的にデモまでたどりつかない

   こんなスライド消して次に進まねば!
Vagrant とは?
VirtualBox の仮想マシンを自動作成するソフトウェア
vagrant box として公開/共有
Ruby DSL で仮想マシンの構成を定義 (Vagrantfile)
Provisoining(chef/puppet)で最終型まで一発で再現!
複数ホスト環境にも対応(multVM environment)
流れ
Vagrantfile 作成 (Ruby DSL で仮想マシンの構成を定義)

               vagrant up

                 以上!
デモ
vagrant init

vagrant up

vagrant ssh
■ なぜ使うか(インフラエンジニアとして)
repeatable なオペレーションが必要 > 自動化
自動化にはテストに次ぐテストが必須
手軽に作成、破棄できるテスト環境が欲しい!

                 ■ その他...
開発メンバー間での環境の差異の解決
デモ環境の持ち歩き。NotePCでOK!
実践的な入社試験として。
慣れておくとお得かも(cloudfoundry-quickstart/openstack)
コンポーネント
Oracle VirtualBox

        virtualbox gem

         vagrant gem

and useful plugins.. for vagrant
Vagrantfile を理解する
Vagrantfile シングルVM/chef
Vagrant::Config.run do |config|
  config.vm.box = "maverick64custom" # テンプレート box
  config.vm.network("192.168.86.104") # IPを付ける
  # chef_solo で provisioning
  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = "cookbooks"
    chef.run_list = [ "recipe[vagrant_main]",
                      "recipe[nginx]" ]
    # chef の attribute
    chef.json.merge!({ :nginx => { :keepalive => "on" }
                        :load_limit => 42 })
  end
  config.vm.customize do |vm|
    vm.memory_size = 2048 # メモリを2Gにする。
    vm.name = "vagtest"    # VM に名前を付ける
  end
end
Vagrantfile マルチVM
Vagrant::Config.run do |config|
  # web
  config.vm.define :web do |c|
    c.vm.box = "maverick64camp"
    c.vm.network("192.168.86.201")
    c.vm.customize { |v| v.name = "web" }
  end

  # db
  config.vm.define :db do |c|
    c.vm.box = "maverick64camp"
    c.vm.network("192.168.86.202")
    c.vm.customize { |v| v.name = "db" }
  end
end
Vagrantfile box をチームで共有
Vagrant::Config.run do |config|
  # centos56 を使う
  config.vm.box = "cent56"
  # ローカルになければ取ってくる
  config.vm.box_url = "http://int.local/box/cent56.box"

  # DNAT host:8080 => vm:80
  config.vm.forward_port "http", 80, 8080

  # puppet で provisioning
  config.vm.provision :puppet do |puppet|
    puppet.manifests_path = "manifests"
    puppet.manifest_file = "base.pp"
  end
end
vagrant コマンド
$ vagrant   help
Tasks:
  vagrant   box                         #   Commands to manage s
  vagrant   destroy                     #   Destroy the environm
  vagrant   halt                        #   Halt the running VMs
  vagrant   help [TASK]                 #   Describe available t
  vagrant   init [box_name] [box_url]   #   Initializes the curr
  vagrant   package                     #   Package a Vagrant en
  vagrant   provision                   #   Rerun the provisioni
  vagrant   reload                      #   Reload the environme
  vagrant   resume                      #   Resume a suspended V
  vagrant   sandbox                     #   Manages a sandbox
  vagrant   snap                        #   Manages a snap
  vagrant   ssh                         #   SSH nto the currentl
  vagrant   ssh_config                  #   outputs .ssh/config
  vagrant   status                      #   Shows the status of
  vagrant   suspend                     #   Suspend a running Va
  vagrant   up                          #   Creates the Vagrant
  vagrant   vagrantboxes                #   Interact with the va
  vagrant   version                     #   Prints the Vagrant v
$   vagrant   init        #   Vagrantfile 作成
$   vagrant   up          #   起動
$   vagrant   ssh         #   仮想マシンにログイン
$   vagrant   provision   #   provisioning だけ走らせる
$   vagrant   snap take   #   snaphost を取る
$   vagrant   snap list   #   snapshot をリスト
$   vagrant   snap back   #   直前の snapshot に戻る
$   vagrant   destroy     #   破棄!
応用編
    マルチVM environment

Box を自分で作る( veewee で自動化 )

    Box をチームで共有する

    plugin を使う ↓例えば...
       veewee(自動で box を作る)


         boxsearch(box を探す)


        sahara(snapshot を取る)


      vagrant-snap(snapshot を取る)
デモ
SingleVM
vagrant   box list
vagrant   ini
vagrant   up
vagrant   ssh
MultiVM
vagrant up
vagrant ssh web
vagrant ssh db
Boxsearch
gem install vagrantboxes
vagrant vagrantboxes search
vagrant vagrantboxes show 28
vagrant vagrantboxes add 28
vagrant-snap
cd multiVM
gem install vagrant-snap
vagrant list
box / package
vagrant   box list
vagrant   package
vagrant   box add base package.box
vagrant   box list
TIPS 他
○ box を作る時は USB Controller を無効にする。
○ System >Enable absolute pinting device も外す。
○ guest-addition のバージョンは合わせたほうがベター
○ box は単なる、tar ファイル。
○ Vagrantfile の中では Ruby がそのまま使える。
○ ノートPCのHDDはSSDがいいと思う。
☓ snapshot に戻れない時がある。:NS_ERROR_FAILURE (0x80004005)
おさらい
         ■ なぜ使うか(インフラエンジニアとして)
repeatable なオペレーションが必要 > 自動化
自動化にはテストに次ぐテストが必須
手軽に作成、破棄できるテスト環境が欲しい!
                   ■ その他...
開発メンバー間での環境の差異の解決
デモ環境の持ち歩き。NotePCでOK!
実践的な入社試験として。
慣れておくとお得かも(cloudfoundry-quickstart/openstack)
ありがとうございました。

More Related Content

What's hot

initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動Takashi Takizawa
 
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tinygu4
 
SoftlayerのCLIで遊ぼうとしたら
SoftlayerのCLIで遊ぼうとしたらSoftlayerのCLIで遊ぼうとしたら
SoftlayerのCLIで遊ぼうとしたら雄哉 吉田
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会Yasutaka Hamada
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environmentShougo
 
Vagrant packana16-otahi
Vagrant packana16-otahiVagrant packana16-otahi
Vagrant packana16-otahiHiroshi Ota
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみたngi group.
 
ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話Masaki Kobayashi
 
Drone.io のご紹介
Drone.io のご紹介Drone.io のご紹介
Drone.io のご紹介Uchio Kondo
 
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるオープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるKenichiro MATOHARA
 
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜Takuya ASADA
 
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたEmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたkyon mm
 
ローカル開発環境の構築をしよう VirtualBox + Vagrant
ローカル開発環境の構築をしよう VirtualBox + Vagrantローカル開発環境の構築をしよう VirtualBox + Vagrant
ローカル開発環境の構築をしよう VirtualBox + VagrantKazuma Kimura
 
Raspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるRaspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるKenichiro MATOHARA
 
Assembly Tanka on Web - Aiko Kenji
Assembly Tanka on Web - Aiko KenjiAssembly Tanka on Web - Aiko Kenji
Assembly Tanka on Web - Aiko Kenjiasmtanka
 
サーバ構築実践入門
サーバ構築実践入門サーバ構築実践入門
サーバ構築実践入門優之 田中
 
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作るKenichiro MATOHARA
 
マイクラ自動化枠第3回資料
マイクラ自動化枠第3回資料マイクラ自動化枠第3回資料
マイクラ自動化枠第3回資料Ryo Fujita
 

What's hot (20)

Monit
MonitMonit
Monit
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tiny
 
SoftlayerのCLIで遊ぼうとしたら
SoftlayerのCLIで遊ぼうとしたらSoftlayerのCLIで遊ぼうとしたら
SoftlayerのCLIで遊ぼうとしたら
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environment
 
Docker on Vagrant
Docker on VagrantDocker on Vagrant
Docker on Vagrant
 
Vagrant packana16-otahi
Vagrant packana16-otahiVagrant packana16-otahi
Vagrant packana16-otahi
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
 
ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話
 
Drone.io のご紹介
Drone.io のご紹介Drone.io のご紹介
Drone.io のご紹介
 
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるオープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
 
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
 
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたEmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べた
 
ローカル開発環境の構築をしよう VirtualBox + Vagrant
ローカル開発環境の構築をしよう VirtualBox + Vagrantローカル開発環境の構築をしよう VirtualBox + Vagrant
ローカル開発環境の構築をしよう VirtualBox + Vagrant
 
Raspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるRaspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみる
 
Assembly Tanka on Web - Aiko Kenji
Assembly Tanka on Web - Aiko KenjiAssembly Tanka on Web - Aiko Kenji
Assembly Tanka on Web - Aiko Kenji
 
サーバ構築実践入門
サーバ構築実践入門サーバ構築実践入門
サーバ構築実践入門
 
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
 
マイクラ自動化枠第3回資料
マイクラ自動化枠第3回資料マイクラ自動化枠第3回資料
マイクラ自動化枠第3回資料
 

Viewers also liked

カップリング検索プレゼン2
カップリング検索プレゼン2カップリング検索プレゼン2
カップリング検索プレゼン2sakana1123
 
2011-07-15 チューニングが楽になる JavaScript 道具箱
2011-07-15 チューニングが楽になる JavaScript 道具箱2011-07-15 チューニングが楽になる JavaScript 道具箱
2011-07-15 チューニングが楽になる JavaScript 道具箱Takuya Yokono
 
memcachedからKyotoTycoonへ
memcachedからKyotoTycoonへmemcachedからKyotoTycoonへ
memcachedからKyotoTycoonへTatsuhiko Kubo
 
pixiv サイバーエージェント共同勉強会 solr導入記
pixiv サイバーエージェント共同勉強会 solr導入記pixiv サイバーエージェント共同勉強会 solr導入記
pixiv サイバーエージェント共同勉強会 solr導入記Takahiro Matsumiya
 
20110715 enterprise wiki search
20110715 enterprise wiki search20110715 enterprise wiki search
20110715 enterprise wiki searchShigeki Yamato
 
アメーバピグのサーバとクライアントはどうやって通信しているのか
アメーバピグのサーバとクライアントはどうやって通信しているのかアメーバピグのサーバとクライアントはどうやって通信しているのか
アメーバピグのサーバとクライアントはどうやって通信しているのかTanaka Hiromi
 
波に乗ってUnity3Dを使ってみているんだが (Ameba x Pixiv 合同勉強会LT)
波に乗ってUnity3Dを使ってみているんだが (Ameba x Pixiv 合同勉強会LT)波に乗ってUnity3Dを使ってみているんだが (Ameba x Pixiv 合同勉強会LT)
波に乗ってUnity3Dを使ってみているんだが (Ameba x Pixiv 合同勉強会LT)maginemu Mishimagi
 
Matrix Factorizationを使った評価予測
Matrix Factorizationを使った評価予測Matrix Factorizationを使った評価予測
Matrix Factorizationを使った評価予測JAVA DM
 
UX and the Lean Startup, for General Audiences (Crushing the Boulder), Kellog...
UX and the Lean Startup, for General Audiences (Crushing the Boulder), Kellog...UX and the Lean Startup, for General Audiences (Crushing the Boulder), Kellog...
UX and the Lean Startup, for General Audiences (Crushing the Boulder), Kellog...Janice Fraser
 
iOS App performance tuning with Instruments
iOS App performance tuning with InstrumentsiOS App performance tuning with Instruments
iOS App performance tuning with Instrumentsgc-hiramatsu
 
OpenCVによる顔認識システムの開発
OpenCVによる顔認識システムの開発OpenCVによる顔認識システムの開発
OpenCVによる顔認識システムの開発Takahiko Teramoto
 
海外向けサービスの苦労話
海外向けサービスの苦労話海外向けサービスの苦労話
海外向けサービスの苦労話Masakazu Matsushita
 
iPhoneで動くFlash Playerを実装した苦労話LT資料
iPhoneで動くFlash Playerを実装した苦労話LT資料iPhoneで動くFlash Playerを実装した苦労話LT資料
iPhoneで動くFlash Playerを実装した苦労話LT資料Kohei Morino
 
実録 WEBエンジニアが Titanium Mobileアプリを開発するまで
実録 WEBエンジニアが Titanium Mobileアプリを開発するまで実録 WEBエンジニアが Titanium Mobileアプリを開発するまで
実録 WEBエンジニアが Titanium Mobileアプリを開発するまでYusaku Watanabe
 
松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入matsumoto_katsuhiko
 
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)Yuuki Namikawa
 
kontagent紹介資料
kontagent紹介資料kontagent紹介資料
kontagent紹介資料Eiji Hachiya
 
From MongoDB v1.8.2 To v2.0.2
From MongoDB v1.8.2 To v2.0.2From MongoDB v1.8.2 To v2.0.2
From MongoDB v1.8.2 To v2.0.2Naoki Sega
 

Viewers also liked (20)

カップリング検索プレゼン2
カップリング検索プレゼン2カップリング検索プレゼン2
カップリング検索プレゼン2
 
2011-07-15 チューニングが楽になる JavaScript 道具箱
2011-07-15 チューニングが楽になる JavaScript 道具箱2011-07-15 チューニングが楽になる JavaScript 道具箱
2011-07-15 チューニングが楽になる JavaScript 道具箱
 
memcachedからKyotoTycoonへ
memcachedからKyotoTycoonへmemcachedからKyotoTycoonへ
memcachedからKyotoTycoonへ
 
pixiv サイバーエージェント共同勉強会 solr導入記
pixiv サイバーエージェント共同勉強会 solr導入記pixiv サイバーエージェント共同勉強会 solr導入記
pixiv サイバーエージェント共同勉強会 solr導入記
 
20110715 enterprise wiki search
20110715 enterprise wiki search20110715 enterprise wiki search
20110715 enterprise wiki search
 
アメーバピグのサーバとクライアントはどうやって通信しているのか
アメーバピグのサーバとクライアントはどうやって通信しているのかアメーバピグのサーバとクライアントはどうやって通信しているのか
アメーバピグのサーバとクライアントはどうやって通信しているのか
 
波に乗ってUnity3Dを使ってみているんだが (Ameba x Pixiv 合同勉強会LT)
波に乗ってUnity3Dを使ってみているんだが (Ameba x Pixiv 合同勉強会LT)波に乗ってUnity3Dを使ってみているんだが (Ameba x Pixiv 合同勉強会LT)
波に乗ってUnity3Dを使ってみているんだが (Ameba x Pixiv 合同勉強会LT)
 
Matrix Factorizationを使った評価予測
Matrix Factorizationを使った評価予測Matrix Factorizationを使った評価予測
Matrix Factorizationを使った評価予測
 
UX and the Lean Startup, for General Audiences (Crushing the Boulder), Kellog...
UX and the Lean Startup, for General Audiences (Crushing the Boulder), Kellog...UX and the Lean Startup, for General Audiences (Crushing the Boulder), Kellog...
UX and the Lean Startup, for General Audiences (Crushing the Boulder), Kellog...
 
iOS App performance tuning with Instruments
iOS App performance tuning with InstrumentsiOS App performance tuning with Instruments
iOS App performance tuning with Instruments
 
OpenCVによる顔認識システムの開発
OpenCVによる顔認識システムの開発OpenCVによる顔認識システムの開発
OpenCVによる顔認識システムの開発
 
Inside png
Inside pngInside png
Inside png
 
海外向けサービスの苦労話
海外向けサービスの苦労話海外向けサービスの苦労話
海外向けサービスの苦労話
 
iPhoneで動くFlash Playerを実装した苦労話LT資料
iPhoneで動くFlash Playerを実装した苦労話LT資料iPhoneで動くFlash Playerを実装した苦労話LT資料
iPhoneで動くFlash Playerを実装した苦労話LT資料
 
実録 WEBエンジニアが Titanium Mobileアプリを開発するまで
実録 WEBエンジニアが Titanium Mobileアプリを開発するまで実録 WEBエンジニアが Titanium Mobileアプリを開発するまで
実録 WEBエンジニアが Titanium Mobileアプリを開発するまで
 
松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入
 
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
 
Ca勉強会・ldについて
Ca勉強会・ldについてCa勉強会・ldについて
Ca勉強会・ldについて
 
kontagent紹介資料
kontagent紹介資料kontagent紹介資料
kontagent紹介資料
 
From MongoDB v1.8.2 To v2.0.2
From MongoDB v1.8.2 To v2.0.2From MongoDB v1.8.2 To v2.0.2
From MongoDB v1.8.2 To v2.0.2
 

Similar to Vagrant intro

Vagrant-concrete5
Vagrant-concrete5Vagrant-concrete5
Vagrant-concrete5Kite Koga
 
Vagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみようVagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみようTakuma Morikawa
 
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使うVagrant を Web開発環境に使う
Vagrant を Web開発環境に使うMasashi Shinbara
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境Masashi Shinbara
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfesTakeshi Komiya
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよnpsg
 
BHyVeってなんや
BHyVeってなんやBHyVeってなんや
BHyVeってなんやTakuya ASADA
 
クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0NIFTY Cloud
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようTakashi Makino
 
VagrantでAzureを使ってみた話
VagrantでAzureを使ってみた話VagrantでAzureを使ってみた話
VagrantでAzureを使ってみた話Yuta Matsumura
 
DevCloud Installation and Some Hack
DevCloud Installation and Some HackDevCloud Installation and Some Hack
DevCloud Installation and Some HackZack Dolby
 
ソフトウェア工学2023 06 コンテナ仮想化
ソフトウェア工学2023 06 コンテナ仮想化ソフトウェア工学2023 06 コンテナ仮想化
ソフトウェア工学2023 06 コンテナ仮想化Toru Tamaki
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929hiro345
 
Docker swarm mode 入門と ECS との比較
Docker swarm mode 入門と ECS との比較Docker swarm mode 入門と ECS との比較
Docker swarm mode 入門と ECS との比較Yoshinori Teraoka
 
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSnpsg
 

Similar to Vagrant intro (20)

Vagrant-concrete5
Vagrant-concrete5Vagrant-concrete5
Vagrant-concrete5
 
Vagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみようVagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみよう
 
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使うVagrant を Web開発環境に使う
Vagrant を Web開発環境に使う
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
 
Dockerの導入
Dockerの導入Dockerの導入
Dockerの導入
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
 
BHyVeってなんや
BHyVeってなんやBHyVeってなんや
BHyVeってなんや
 
クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
 
VagrantでAzureを使ってみた話
VagrantでAzureを使ってみた話VagrantでAzureを使ってみた話
VagrantでAzureを使ってみた話
 
Docker Swarm入門
Docker Swarm入門Docker Swarm入門
Docker Swarm入門
 
Open VZ
Open VZOpen VZ
Open VZ
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
DevCloud Installation and Some Hack
DevCloud Installation and Some HackDevCloud Installation and Some Hack
DevCloud Installation and Some Hack
 
ソフトウェア工学2023 06 コンテナ仮想化
ソフトウェア工学2023 06 コンテナ仮想化ソフトウェア工学2023 06 コンテナ仮想化
ソフトウェア工学2023 06 コンテナ仮想化
 
Vagrant+Chef
Vagrant+ChefVagrant+Chef
Vagrant+Chef
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
 
Docker swarm mode 入門と ECS との比較
Docker swarm mode 入門と ECS との比較Docker swarm mode 入門と ECS との比較
Docker swarm mode 入門と ECS との比較
 
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaS
 

Recently uploaded

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (7)

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 

Vagrant intro

  • 1. VagrantでローカルEC2 楽々開発環境構築 サイバーエージェント 前田 拓
  • 2. 自己紹介 サーバー・ネットワークエンジニア 前田拓 プライベートクラウド や、別のB2Bサービス担当 github, twitter: t9md cmdline-fu gem chef.vim vagrant-snap pxelerator etc...
  • 3. 不安な事 あまり弊社のサービスに関係ない ライトニングトーク的内容 デモが大きな比重を占める。デモがミスったら全滅 時間配分的にデモまでたどりつかない こんなスライド消して次に進まねば!
  • 5. VirtualBox の仮想マシンを自動作成するソフトウェア vagrant box として公開/共有 Ruby DSL で仮想マシンの構成を定義 (Vagrantfile) Provisoining(chef/puppet)で最終型まで一発で再現! 複数ホスト環境にも対応(multVM environment)
  • 6. 流れ Vagrantfile 作成 (Ruby DSL で仮想マシンの構成を定義) vagrant up 以上!
  • 8. ■ なぜ使うか(インフラエンジニアとして) repeatable なオペレーションが必要 > 自動化 自動化にはテストに次ぐテストが必須 手軽に作成、破棄できるテスト環境が欲しい! ■ その他... 開発メンバー間での環境の差異の解決 デモ環境の持ち歩き。NotePCでOK! 実践的な入社試験として。 慣れておくとお得かも(cloudfoundry-quickstart/openstack)
  • 10. Oracle VirtualBox virtualbox gem vagrant gem and useful plugins.. for vagrant
  • 12. Vagrantfile シングルVM/chef Vagrant::Config.run do |config| config.vm.box = "maverick64custom" # テンプレート box config.vm.network("192.168.86.104") # IPを付ける # chef_solo で provisioning config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "cookbooks" chef.run_list = [ "recipe[vagrant_main]", "recipe[nginx]" ] # chef の attribute chef.json.merge!({ :nginx => { :keepalive => "on" } :load_limit => 42 }) end config.vm.customize do |vm| vm.memory_size = 2048 # メモリを2Gにする。 vm.name = "vagtest" # VM に名前を付ける end end
  • 13. Vagrantfile マルチVM Vagrant::Config.run do |config| # web config.vm.define :web do |c| c.vm.box = "maverick64camp" c.vm.network("192.168.86.201") c.vm.customize { |v| v.name = "web" } end # db config.vm.define :db do |c| c.vm.box = "maverick64camp" c.vm.network("192.168.86.202") c.vm.customize { |v| v.name = "db" } end end
  • 14. Vagrantfile box をチームで共有 Vagrant::Config.run do |config| # centos56 を使う config.vm.box = "cent56" # ローカルになければ取ってくる config.vm.box_url = "http://int.local/box/cent56.box" # DNAT host:8080 => vm:80 config.vm.forward_port "http", 80, 8080 # puppet で provisioning config.vm.provision :puppet do |puppet| puppet.manifests_path = "manifests" puppet.manifest_file = "base.pp" end end
  • 16. $ vagrant help Tasks: vagrant box # Commands to manage s vagrant destroy # Destroy the environm vagrant halt # Halt the running VMs vagrant help [TASK] # Describe available t vagrant init [box_name] [box_url] # Initializes the curr vagrant package # Package a Vagrant en vagrant provision # Rerun the provisioni vagrant reload # Reload the environme vagrant resume # Resume a suspended V vagrant sandbox # Manages a sandbox vagrant snap # Manages a snap vagrant ssh # SSH nto the currentl vagrant ssh_config # outputs .ssh/config vagrant status # Shows the status of vagrant suspend # Suspend a running Va vagrant up # Creates the Vagrant vagrant vagrantboxes # Interact with the va vagrant version # Prints the Vagrant v
  • 17. $ vagrant init # Vagrantfile 作成 $ vagrant up # 起動 $ vagrant ssh # 仮想マシンにログイン $ vagrant provision # provisioning だけ走らせる $ vagrant snap take # snaphost を取る $ vagrant snap list # snapshot をリスト $ vagrant snap back # 直前の snapshot に戻る $ vagrant destroy # 破棄!
  • 18. 応用編 マルチVM environment Box を自分で作る( veewee で自動化 ) Box をチームで共有する plugin を使う ↓例えば... veewee(自動で box を作る) boxsearch(box を探す) sahara(snapshot を取る) vagrant-snap(snapshot を取る)
  • 20. SingleVM vagrant box list vagrant ini vagrant up vagrant ssh
  • 21. MultiVM vagrant up vagrant ssh web vagrant ssh db
  • 22. Boxsearch gem install vagrantboxes vagrant vagrantboxes search vagrant vagrantboxes show 28 vagrant vagrantboxes add 28
  • 23. vagrant-snap cd multiVM gem install vagrant-snap vagrant list
  • 24. box / package vagrant box list vagrant package vagrant box add base package.box vagrant box list
  • 25. TIPS 他 ○ box を作る時は USB Controller を無効にする。 ○ System >Enable absolute pinting device も外す。 ○ guest-addition のバージョンは合わせたほうがベター ○ box は単なる、tar ファイル。 ○ Vagrantfile の中では Ruby がそのまま使える。 ○ ノートPCのHDDはSSDがいいと思う。 ☓ snapshot に戻れない時がある。:NS_ERROR_FAILURE (0x80004005)
  • 26. おさらい ■ なぜ使うか(インフラエンジニアとして) repeatable なオペレーションが必要 > 自動化 自動化にはテストに次ぐテストが必須 手軽に作成、破棄できるテスト環境が欲しい! ■ その他... 開発メンバー間での環境の差異の解決 デモ環境の持ち歩き。NotePCでOK! 実践的な入社試験として。 慣れておくとお得かも(cloudfoundry-quickstart/openstack)