Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

"Up" with vagrant and docker

1,953 views

Published on

Introduction for Vagrant and Docker provider.
This presentation is prepared for Docker Meetup Tokyo 2014 #1 in 12, Feb, 2014 at National Institute of Informatics.

Copyright 2014, NTT Data Corporation.

Published in: Technology, Business

"Up" with vagrant and docker

  1. 1. Docker Meetup Tokyo 2014 #1 "Up" with Vagrant and Docker Hiroshi Miura(@miurahr) NTTデータ 基盤システム事業本部 Copyright © 2013 NTT DATA Corporation
  2. 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
  3. 3. Copyright © 2013 NTT DATA Corporation 3
  4. 4. Introduction to Vagrant Vagrantのご紹介 vagrantup.com Copyright © 2013 NTT DATA Corporation 4
  5. 5. What is Vagrant ● 開発環境を仮想マシンやコンテナ、クラウドに作成 ● 商用環境とできるだけ同一の環境をつくることを優先 ● アプリ・リポジトリに設定がおいてあることがおおい ● Mitchell Hashimoto氏が作者 ● Rubyで書かれている ● 基本はOracleVM VirtualBoxとAWS EC2 ● 有償オプションで、VMWare Fusion Copyright © 2013 NTT DATA Corporation 5
  6. 6. Vagrant Users ● 今までの典型的なVagrantユーザ像 – Webデベロッパー – MacBook AirかMacBook Pro利用者が多い – VirtualBoxでUbuntu利用が多い – 提供先はAWSやVPS上へホスト – Ruby/RoR使いが多い – Github利用者が多い Copyright © 2013 NTT DATA Corporation 6
  7. 7. Vagrant Users ● 新しいタイプのユーザ – – – – – インフラエンジニア RHEL, CentOSまたはWindows利用者 vCenter, OpenStack等をデプロイ Puppet, Chef, またはAnsible使い OpenFlowに興味 Copyright © 2013 NTT DATA Corporation 7
  8. 8. Vagrant Plugins ● Vagrant 1.1+からプラグイン可能となる(2013.2〜) – – Provisioner: ゲスト設定方法の提供 – host/guest: OSサポート – ● Provider: 仮想マシン等ドライブの提供 Synced_folder: フォルダ同期方法の提供 Vagrant 1.4からDocker provisionerが標準提供  Copyright © 2013 NTT DATA Corporation 8
  9. 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
  10. 10. Vagrant installation ● VirtualBoxインストール ● Vagrantインストーラダウンロード – Mac, Windows, Linux(CentOS/RHEL, Ubuntu/Debian) ● Vagrantインストール ● Vagrant box入手(自動取得も可能) ● 作業ディレクトリ作成し、コマンド実行 Copyright © 2013 NTT DATA Corporation 10
  11. 11. What is Vagrant box ● ● 事前に作られたVMイメージや相当物 さまざまなプラットホームが用意され、公開もされてい る ● 自身でつくることも可能 ● プロバイダー毎に形式が相違 ● 変換も可能(development in progress) Copyright © 2013 NTT DATA Corporation 11
  12. 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
  13. 13. Environment creation ● プロジェクト内に設定"Vagrantfile"を作成 $ vagrant init Copyright © 2013 NTT DATA Corporation 13
  14. 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. 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. 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
  17. 17. Copyright © 2013 NTT DATA Corporation 17
  18. 18. Vagrant and Docker ● 基本的なアイディア – Vagrant上でDocker環境をデプロイ ゲストに自動的にDockerをインストール – ゲストに自動的にDockerイメージを導入 Docker Provisioner – ● – Vagrant 1.1-1.3: 外部プラグイン – Vagrant 1.4+ (Dec., 2013) 標準装備 Copyright © 2013 NTT DATA Corporation 18
  19. 19. Docker provisioner ● ● ● ● ゲストOSを自動判別して、適切なDockerのパッケージをゲ ストにインストール Docker稼働環境を、好みの仮想環境上にコマンド一発で作 成できる Puppet等の知識は不要 Docker環境が構築された後は、vagrant sshでログインして 、dockerコマンドで操作できる Container image Vagrant Container image 手軽にDocker環境を試すのに最適! Docker Box Images (Fedora, Ubuntu, etc) Host OS/Hypervisor Copyright © 2013 NTT DATA Corporation 19
  20. 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
  21. 21. Packer ● ● VagrantのHashicorpが開発するプロダクト 一つのレシピから、複数のゲストイメージを生 成可能 – VirtualBox – VMWare – Libvirt/KVM – LXC – Docker ● Dockerのテンプレートや、Vagrant BOX(bento plugin)の生成 ● Shell, Puppetなど、従来からのお気に入りの方法で定義できる Copyright © 2013 NTT DATA Corporation 21
  22. 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. 23. Contact miurahr at nttdata co jp @miurahr (Twitter/LinkedIn/Github) Copyright © 2011 NTT DATA Corporation Copyright © 2013 NTT DATA Corporation

×