vagrant - 最近流行ってるらしいけど何者?

24
Vagrant 最近流行ってるらしいけど何者?

Upload: yoshinori-nakanishi

Post on 24-Jun-2015

1.673 views

Category:

Engineering


4 download

DESCRIPTION

社内の勉強会で Vagrant について発表した資料です。

TRANSCRIPT

Page 1: Vagrant - 最近流行ってるらしいけど何者?

Vagrant 最近流行ってるらしいけど何者?

Page 2: Vagrant - 最近流行ってるらしいけど何者?

Vagrantってどういうもの?

● サーバ仮想化ソフトのフロントエンドツール– 最初は VirtualBox を使いやすくするツールだった– 最近はいろんな仮想化基盤、クラウドサービスを 

操作するフロントエンドツールに進化しつつある

● Rubyで書かれたOSS– ソースは GitHub に公開されている– 機能を強化するプラグインもRubyで開発できる

Page 3: Vagrant - 最近流行ってるらしいけど何者?

Vagrantってどうやって使うの?

● インストーラをダウンロードしてセットアップ– Mac OS X, Windows, Linux 用のインストーラ

● http://www.vagrantup.com/downloads.html– 別途 Oracle VirtualBox はインストール必要

● Vagrantfile を書く– vagrant init でひな形を作成 & 編集– 編集方法はマニュアルを参考に

● http://docs.vagrantup.com/v2/

Page 4: Vagrant - 最近流行ってるらしいけど何者?

Vagrantってどうやって使うの?

● おもむろに vagrant up で起動

● 一仕事終えたら vagrant halt で停止

● 設定変更したら vagrant reload で再起動

● 飽きたら vagrant destroy で抹消!!

Page 5: Vagrant - 最近流行ってるらしいけど何者?

Vagrantってどんな環境で使えるの?

● 基本:VirtualBox と組合せて使う

● 応用:クラウドと組合せて使う

● 応用:Dockerと組合せて使う

Page 6: Vagrant - 最近流行ってるらしいけど何者?

Vagrant+VirtualBoxInternet

自分のPC

Windows / Mac OS X / Linux

Oracle VirtualBoxVagrant

VirtualBox VM VirtualBox VM

Vagrantfile

1.VM設定を書く

3.vagrant up

Boxファイル

2.ベースイメージをDL

VM起動

CentOS CentOS

Page 7: Vagrant - 最近流行ってるらしいけど何者?

Vagrant+VirtualBoxInternet

自分のPC

Windows / Mac OS X / Linux

Oracle VirtualBoxVagrant

VirtualBox VM VirtualBox VM

Chef Cookbook

2.vagrant provision (vagrant upでもok)

ソフトウェアの導入、設定

CentOS CentOS

Ansible Playbook

Puppet Manifest

Shell Script

1.サーバ構築設定を書く

PostgreSQL

Zabbix Server

PostgreSQL

Zabbix Agent

Page 8: Vagrant - 最近流行ってるらしいけど何者?

Vagrantってどんな環境で使えるの?

● 基本:VirtualBox と組合せて使う

● 応用:クラウドと組合せて使う

● 応用:Dockerと組合せて使う

Page 9: Vagrant - 最近流行ってるらしいけど何者?

Vagrant+AWS

Internet

自分のPC

Windows / Mac OS X / Linux

Vagrant

EC2 Instance EC2 Instance

Vagrantfile

1.VM設定を書く

CentOS CentOS

AMI2.vagrant up --provider=aws

インスタンス起動

Page 10: Vagrant - 最近流行ってるらしいけど何者?

Vagrant+AWS

Internet

自分のPC

Windows / Mac OS X / Linux

Vagrant

EC2 Instance EC2 Instance

CentOS CentOS

AMI

Chef Cookbook

Ansible Playbook

Puppet Manifest

Shell Script

1.サーバ構築設定を書く

2.vagrant provision (vagrant upでもok)

ソフトウェアの導入、設定

PostgreSQL

Zabbix Server

PostgreSQL

Zabbix Agent

Page 11: Vagrant - 最近流行ってるらしいけど何者?

Vagrantってどんな環境で使えるの?

● 基本:VirtualBox と組合せて使う

● 応用:クラウドと組合せて使う

● 応用:Dockerと組合せて使う

Page 12: Vagrant - 最近流行ってるらしいけど何者?

Vagrant+DockerInternet自分のPC

Windows / Mac OS X / Linux

Oracle VirtualBox (Linuxなら不要)Vagrant

Docker Container

Vagrantfile

1.VM設定を書く DockerImage

ベースイメージのDL

VM起動

CentOS CentOS

boot2docker VM(Linuxなら不要)boot2docker VM(Linuxなら不要)

Docker Containerコンテナ起動

2.vagrant up --provider=docker

Page 13: Vagrant - 最近流行ってるらしいけど何者?

Vagrant+DockerInternet自分のPC

Windows / Mac OS X / Linux

Oracle VirtualBox (Linuxなら不要)Vagrant

Docker Container

CentOS CentOS

boot2docker VM(Linuxなら不要)boot2docker VM(Linuxなら不要)

Docker Container

Chef Cookbook

Ansible Playbook

Puppet Manifest

Shell Script

1.サーバ構築設定を書く2.vagrant provision (vagrant upでもok)

ソフトウェアの導入、設定

PostgreSQL

Zabbix Server

PostgreSQL

Zabbix Agent

Page 14: Vagrant - 最近流行ってるらしいけど何者?

Vagrantってどんな環境で使えるの?

● Provider が存在すれば Vagrant が使える

● 対応している Provider – VMWare Fusion, AWS, Azure, CloudStack,

OpenStack, vSphere etc...– Available Vagrant Plugins

● https://github.com/mitchellh/vagrant/wiki/Available-Vagrant-Plugins

Page 15: Vagrant - 最近流行ってるらしいけど何者?

Vagrantって誰得?何がうれしい?

● 仮想サーバの状態をいつでも再現できる– Vagrantfile でサーバ起動状態の定義を外部化– 誰でも同じ設定のサーバを用意できる– git でバージョン管理して他の開発者と共有できる– AWS の CloudFormation, OpsWorks あたりと  

世界観は近い

Page 16: Vagrant - 最近流行ってるらしいけど何者?

Vagrantって誰得?何がうれしい?

● 環境を変えてもオペレーションは同じ– vagrant up : サーバの起動– vagrant halt : サーバの停止– vagrant reload : サーバの再起動– vagrant destroy : サーバの抹消

● 覚えることが少なくてすむ– 環境の違いによって思考を阻害されずにすむ

Page 17: Vagrant - 最近流行ってるらしいけど何者?

Vagrantって誰得?何がうれしい?

● 作業端末(ホストOS)と実行環境(ゲストOS)のファイルシステムが共有できる– Virtual Box の GUI で設定してもいいけど面倒– NFS, rsync でも共有できる

Page 18: Vagrant - 最近流行ってるらしいけど何者?

Vagrantって誰得?何がうれしい?自分のPC

Windows

Oracle VirtualBox

VirtualBox VM

CentOSC:/Users/naka24/Test Vagrantfile AAAA.php

好きなエディタでコード編集

Apache httpd

/vagrant Vagrantfile AAAA.php

ファイル同期

好きなブラウザで動作確認http://localhost:10080/AAAA.php

VM内で実行

Page 19: Vagrant - 最近流行ってるらしいけど何者?

Vagrantって誰得?何がうれしい?

● 起動したゲストOSへのSSH接続が簡単– 接続先のIPアドレスとか公開鍵認証とか考えずに

vagrant ssh で OK– Docker のコンテナへも SSH で一発接続!– Amazon EC2 インスタンスへも SSH で一発接続!

Page 20: Vagrant - 最近流行ってるらしいけど何者?

Vagrantって誰得?何がうれしい?

● ネットワークも Vagrantfile で思いのまま– Forwarded Port

● ホストのポートをゲスト上のポートへフォワード– Private Network

● ホストとゲストだけのプライベートなネットワークを構築● 自由に静的なIPアドレスをゲストに付与できる

– Public Network● ゲストをホストと同じネットワークに接続● 他のホストマシンからゲストにアクセスできる

– 設定できる範囲は Provider の実装に依存

Page 21: Vagrant - 最近流行ってるらしいけど何者?

Vagrantって誰得?何がうれしい?

● ゲストOSのプロビジョニングもシームレス– Shell, Chef, Puppet, Ansible, Docker …– 開発現場ではサーバを作る&壊すの繰り返し

● Vagrant がないと軽く死ねる– VirtualBox なら Sahara で何度もやり直せる

● 変更した結果が気に入れば commit● 変更した結果が気に入らなければ rollback

Page 22: Vagrant - 最近流行ってるらしいけど何者?

Vagrantって誰得?何がうれしい?

● ゲストOSのベースイメージ(Box)を入手– インターネットに公開されているものを利用

● Vagrantbox.es : 中身がブラックボックスなので注意– http://www.vagrantbox.es/

● Bento : Packerのテンプレート付きで安心– https://github.com/opscode/bento/tree/master/packer

– 自分で作成したものを利用● Packer で Box を新規作成● vagrant package で起動済サーバから Box を生成

Page 23: Vagrant - 最近流行ってるらしいけど何者?

Vagrantって誰得?何がうれしい?

● Vagrant Cloud, Vagrant Shareで自分の  実行環境をインターネット経由でシェア– バージョン 1.5 新機能– 詳しくは↓を参照

● http://nekopunch.hatenablog.com/entry/2014/03/11/223250

● http://firegoby.jp/archives/5451

● 何ができるようになるだろう?– スマホアプリの動作テストとか

Page 24: Vagrant - 最近流行ってるらしいけど何者?

まとめ

● Vagrant とは– 仮想サーバを楽に取り扱うフロントエンドツール– Vagrantがないとできないこと、は多分ない– Vagrantがないと面倒なこと、を楽にする

● Dockerとの共通点– 実は新しい技術ではない– 既存の技術を使いやすくしたもの