Weitere ähnliche Inhalte Ähnlich wie "Up" with vagrant and docker (20) Mehr von Hiroshi Miura (17) Kürzlich hochgeladen (11) "Up" with vagrant and docker1. Docker Meetup
Tokyo 2014 #1
"Up" with Vagrant and Docker
Hiroshi Miura(@miurahr)
NTTデータ
基盤システム事業本部
Copyright © 2013 NTT DATA Corporation
2. Disclaimer
●
●
●
Any product name, service name, software name and other marks a
re trade mark or registered mark of corresponding companies.
This presentation is in a purpose of providing current information on
emerging technologies and there is no grantee of correctness and/o
r persistence of features in any future.
A presenter and NTT Data Corporation provide information in as-is b
asis and have no responsiveness for results that you got according
to information in this presentation material.
Copyright © 2013 NTT DATA Corporation
2
9. Vagrant provisioner
●
Shell, Puppet, Chefでの設定が標準で可能
●
Puppet: スタンドアロン、Client/Server可
–
スタンドアロンでは以下にマウント
●
●
/tmp/puppet-manifest
/tmp/puppet-modules
●
Chef: Chef-solo, Client/Server可
●
Shell: インライン、外部シェル可能
●
Salt, Docker...
Copyright © 2013 NTT DATA Corporation
9
11. What is Vagrant box
●
●
事前に作られたVMイメージや相当物
さまざまなプラットホームが用意され、公開もされてい
る
●
自身でつくることも可能
●
プロバイダー毎に形式が相違
●
変換も可能(development in progress)
Copyright © 2013 NTT DATA Corporation
11
12. Find your Boxes
●
Catalog siteでURL入手
–
●
vagrantbox.es
コマンドの実行
$ vagrant box add <boxname> <url>
●
設定に記載する方法もある
config.vm.box_url= "<URL>"
Copyright © 2013 NTT DATA Corporation
12
14. Vagrantfile例
# -*- mode: ruby -*# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://domain.com/path/to/above.box"
config.vm.network :forwarded_port, guest: 80, host: 8080
config.vm.network :private_network, ip: "192.168.33.10"
config.vm.provider :kvm do |kvm|
kvm.gui = "true"
kvm.image_type = "qcow2"
kvm.memory_size = "512m"
kvm.core_number = 2
kvm.cpu_model = 'i686'
end
config.vm.provision :shell, inline: <<-SH
set -x
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y apache
SH
end
Copyright © 2013 NTT DATA Corporation
14
15. Vagrant eco-system
●
Vagrant Plugin 開発コミュニティ
種類
プロジェクト
機能
provider
Vagrant-KVM
provider
Vagrant-LXC
provider
Vagrant-libvirt
libvirtを用いて、遠隔ホストで
Xen,KVM等を利用可能にする
provider
Vagrant-AWS
AWS上で利用可能にする
Command
Vagrant-mutate
Boxの形式を変換する
Command
Sahara
スナップショットを操作する
Copyright © 2013 NTT DATA Corporation
LinuxとKVMをホスト環境とし
て利用可能にする
LinuxホストのLXCで利用する
15
16. Vagrant eco-system
●
バラエティに富んだ開発コミュニティ
種類
プロジェクト
機能
provisioner
vagrant-cachier
ゲストOSを判定して、 OS package/gem
file等のキャッシュを永続化する
provisioner
vagrant-dns
vagrant-hostmanager
管理対象に合わせてDNS/host設定を更新
する
provisioner
vagrant-ansible
Ansibleでコンフィグを行う
provider
vagrant-rackspace
RackSpaceでのマシン管理を可能にする
provider
vagrant-parallels
parallels 上でマシン管理
provider
vagrant-digitalocean
DigitalOcean上のマシン管理を可能にする
box repository
vagrantbox.es
public boxのリポジトリ
Copyright © 2013 NTT DATA Corporation
16
20. Vagrantfile example for Docker
Ubuntu RaringをゲストOSとしてVM上にインストールして、docker環境を整え、
busybox docker imageを導入する
Vagrant.configure("2") do |config|
config.vm.box = "raring"
config.vm.box_url = “https://dl.dropboxusercontent.com/u/547671/thinkstackraring64.box”
if Vagrant.has_plugin?("vagrant-cachier")
config.cache.auto_detect = true
end
config.vm.provision :shell, inline: <<-SH
set -x
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
SH
config.vm.provision "docker" do |d|
d.pull_images "busybox"
end
end
Copyright © 2013 NTT DATA Corporation
20
22. 全体 イメージ
Container images
開発環境
Provisioner
(Puppet, Chef, Docker)
Vagrant
Box Images
(Fedora, Ubuntu, etc)
Provider
(VirtualBox, KVM, LXC
Libvirt, AWS)
Command
(Snapshot
mutate)
Host OS/Hypervisor(VB, VMware, KVM)
PACKER
RubyGems
Pypi, etc
レシピ PuppetShell
Copyright © 2013 NTT DATA Corporation
Box Images
(Fedora, Ubuntu, etc)
Remote Host
LXC image
OS package
repository
Provisioner
(Puppet, Chef, Docker)
docker
repository
Docker template
VM image
Vagrant box
repository
22
23. Contact
miurahr at nttdata co jp
@miurahr (Twitter/LinkedIn/Github)
Copyright © 2011 NTT DATA Corporation
Copyright © 2013 NTT DATA Corporation