vagrant intro

27
VagrantでローカルEC2 楽々開発環境構築 サイバーエージェント 前田

Upload: t9md

Post on 24-May-2015

12.158 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Vagrant intro

VagrantでローカルEC2楽々開発環境構築

サイバーエージェント 前田 拓

Page 2: Vagrant intro

自己紹介サーバー・ネットワークエンジニア 前田拓

プライベートクラウド や、別のB2Bサービス担当github, twitter: t9md

cmdline-fu gem

chef.vim

vagrant-snap

pxelerator

etc...

Page 3: Vagrant intro

不安な事

あまり弊社のサービスに関係ない

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

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

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

こんなスライド消して次に進まねば!

Page 4: Vagrant intro

Vagrant とは?

Page 5: Vagrant intro

VirtualBox の仮想マシンを自動作成するソフトウェアvagrant box として公開/共有Ruby DSL で仮想マシンの構成を定義 (Vagrantfile)Provisoining(chef/puppet)で最終型まで一発で再現!複数ホスト環境にも対応(multVM environment)

Page 6: Vagrant intro

流れVagrantfile 作成 (Ruby DSL で仮想マシンの構成を定義)

vagrant up

以上!

Page 7: Vagrant intro

デモvagrant init

vagrant up

vagrant ssh

Page 8: Vagrant intro

■ なぜ使うか(インフラエンジニアとして)

repeatable なオペレーションが必要 > 自動化自動化にはテストに次ぐテストが必須手軽に作成、破棄できるテスト環境が欲しい!

■ その他...

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

Page 9: Vagrant intro

コンポーネント

Page 10: Vagrant intro

Oracle VirtualBox

virtualbox gem

vagrant gem

and useful plugins.. for vagrant

Page 11: Vagrant intro

Vagrantfile を理解する

Page 12: Vagrant intro

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

Page 13: Vagrant intro

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

Page 14: Vagrant intro

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

Page 15: Vagrant intro

vagrant コマンド

Page 16: Vagrant intro

$ 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 ...

Page 17: Vagrant intro

$ vagrant init # Vagrantfile 作成$ vagrant up # 起動$ vagrant ssh # 仮想マシンにログイン$ vagrant provision # provisioning だけ走らせる$ vagrant snap take # snaphost を取る$ vagrant snap list # snapshot をリスト$ vagrant snap back # 直前の snapshot に戻る$ vagrant destroy # 破棄!

Page 18: Vagrant intro

応用編

マルチVM environment

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

Box をチームで共有する

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

boxsearch(box を探す)

sahara(snapshot を取る)

vagrant-snap(snapshot を取る)

Page 19: Vagrant intro

デモ

Page 20: Vagrant intro

SingleVMvagrant box listvagrant inivagrant upvagrant ssh

Page 21: Vagrant intro

MultiVMvagrant upvagrant ssh webvagrant ssh db

Page 22: Vagrant intro

Boxsearchgem install vagrantboxesvagrant vagrantboxes search vagrant vagrantboxes show 28vagrant vagrantboxes add 28

Page 23: Vagrant intro

vagrant-snapcd multiVMgem install vagrant-snapvagrant list

Page 24: Vagrant intro

box / packagevagrant box listvagrant packagevagrant box add base package.boxvagrant box list

Page 25: Vagrant intro

TIPS 他○ box を作る時は USB Controller を無効にする。○ System >Enable absolute pinting device も外す。○ guest-addition のバージョンは合わせたほうがベター○ box は単なる、tar ファイル。○ Vagrantfile の中では Ruby がそのまま使える。○ ノートPCのHDDはSSDがいいと思う。☓ snapshot に戻れない時がある。:NS_ERROR_FAILURE (0x80004005)

Page 26: Vagrant intro

おさらい■ なぜ使うか(インフラエンジニアとして)

repeatable なオペレーションが必要 > 自動化自動化にはテストに次ぐテストが必須手軽に作成、破棄できるテスト環境が欲しい!

■ その他...

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

Page 27: Vagrant intro

ありがとうございました。