Vagrant intro

  • 11,911 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
11,911
On Slideshare
0
From Embeds
0
Number of Embeds
8

Actions

Shares
Downloads
53
Comments
0
Likes
20

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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