Vagrant intro

17,468 views

Published on

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

No Downloads
Views
Total views
17,468
On SlideShare
0
From Embeds
0
Number of Embeds
8,187
Actions
Shares
0
Downloads
55
Comments
0
Likes
21
Embeds 0
No embeds

No notes for slide

Vagrant intro

  1. 1. VagrantでローカルEC2 楽々開発環境構築 サイバーエージェント 前田 拓
  2. 2. 自己紹介 サーバー・ネットワークエンジニア 前田拓プライベートクラウド や、別のB2Bサービス担当 github, twitter: t9md cmdline-fu gem chef.vim vagrant-snap pxelerator etc...
  3. 3. 不安な事 あまり弊社のサービスに関係ない ライトニングトーク的内容デモが大きな比重を占める。デモがミスったら全滅 時間配分的にデモまでたどりつかない こんなスライド消して次に進まねば!
  4. 4. Vagrant とは?
  5. 5. VirtualBox の仮想マシンを自動作成するソフトウェアvagrant box として公開/共有Ruby DSL で仮想マシンの構成を定義 (Vagrantfile)Provisoining(chef/puppet)で最終型まで一発で再現!複数ホスト環境にも対応(multVM environment)
  6. 6. 流れVagrantfile 作成 (Ruby DSL で仮想マシンの構成を定義) vagrant up 以上!
  7. 7. デモvagrant initvagrant upvagrant ssh
  8. 8. ■ なぜ使うか(インフラエンジニアとして)repeatable なオペレーションが必要 > 自動化自動化にはテストに次ぐテストが必須手軽に作成、破棄できるテスト環境が欲しい! ■ その他...開発メンバー間での環境の差異の解決デモ環境の持ち歩き。NotePCでOK!実践的な入社試験として。慣れておくとお得かも(cloudfoundry-quickstart/openstack)
  9. 9. コンポーネント
  10. 10. Oracle VirtualBox virtualbox gem vagrant gemand useful plugins.. for vagrant
  11. 11. Vagrantfile を理解する
  12. 12. Vagrantfile シングルVM/chefVagrant::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 に名前を付ける endend
  13. 13. Vagrantfile マルチVMVagrant::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" } endend
  14. 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" endend
  15. 15. vagrant コマンド
  16. 16. $ vagrant helpTasks: 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. 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. 18. 応用編 マルチVM environmentBox を自分で作る( veewee で自動化 ) Box をチームで共有する plugin を使う ↓例えば... veewee(自動で box を作る) boxsearch(box を探す) sahara(snapshot を取る) vagrant-snap(snapshot を取る)
  19. 19. デモ
  20. 20. SingleVMvagrant box listvagrant inivagrant upvagrant ssh
  21. 21. MultiVMvagrant upvagrant ssh webvagrant ssh db
  22. 22. Boxsearchgem install vagrantboxesvagrant vagrantboxes searchvagrant vagrantboxes show 28vagrant vagrantboxes add 28
  23. 23. vagrant-snapcd multiVMgem install vagrant-snapvagrant list
  24. 24. box / packagevagrant box listvagrant packagevagrant box add base package.boxvagrant box list
  25. 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. 26. おさらい ■ なぜ使うか(インフラエンジニアとして)repeatable なオペレーションが必要 > 自動化自動化にはテストに次ぐテストが必須手軽に作成、破棄できるテスト環境が欲しい! ■ その他...開発メンバー間での環境の差異の解決デモ環境の持ち歩き。NotePCでOK!実践的な入社試験として。慣れておくとお得かも(cloudfoundry-quickstart/openstack)
  27. 27. ありがとうございました。

×