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

Post on 24-Jun-2015

1.673 Views

Category:

Engineering

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

Vagrantってどういうもの?

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

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

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

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

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

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

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

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

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

● おもむろに vagrant up で起動

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

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

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

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

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

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

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

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

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

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

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

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

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

Vagrant+AWS

Internet

自分のPC

Windows / Mac OS X / Linux

Vagrant

EC2 Instance EC2 Instance

Vagrantfile

1.VM設定を書く

CentOS CentOS

AMI2.vagrant up --provider=aws

インスタンス起動

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

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

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

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

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

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

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

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

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

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

OpenStack, vSphere etc...– Available Vagrant Plugins

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

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

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

世界観は近い

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

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

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

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

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

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内で実行

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

まとめ

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

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

top related