More Related Content Similar to Vagrant intro (20) Vagrant intro3. 不安な事
あまり弊社のサービスに関係ない
ライトニングトーク的内容
デモが大きな比重を占める。デモがミスったら全滅
時間配分的にデモまでたどりつかない
こんなスライド消して次に進まねば!
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 を取る)
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)